Google Calendar (google_calendar) is an OAuth integration whose nine tools Talqing runs directly against the Calendar REST API. Approval, tools_namespace, GET /v1/integrations/{integration_id}/mcp-tools and mcps attachment work as for any MCP server.

Connecting

Dashboard only: Integrations → Add integration → Google Calendar → approve as the account whose calendars the agent acts on → approve the tools it needs (an agent that only reads should not hold delete_event). The integration is named Google Calendar - <email>.
Writes work only on calendars the connected account owns, not calendars shared with it. The model gets an error pointing it at list_calendars (which reports accessRole) and may book on a different calendar it owns. To write to a shared calendar, connect the account that owns it.

The nine tools

With the default namespace the model sees google_calendar_<tool>; approve the bare names. calendarId is optional everywhere and defaults to the primary calendar.

Rules that decide whether a booking is right

  • Timestamps need an offset. startTime must look like 2026-04-30T10:00:00+05:30, or the call must set timeZone; otherwise it is refused.
  • All-day end dates are exclusive. A one-day event on 2026-04-30 ends 2026-05-01.
  • Guests are notified by default when the event has attendees, unless the model opts out.
  • An event id from list_events or search_events addresses one occurrence of a recurring series, not the series.
  • suggest_time returns whole free periods, not slots; durationMinutes (default 30) is the shortest period returned. preferences.startHour/endHour are applied per local day in timeZone (or the primary calendar’s zone), so working hours stay correct across DST.
  • unreadableCalendars means unknown, not free. Attendees whose calendars Google will not share (usually outside the organisation) are listed there. Include the caller’s own address in suggest_time.
  • Deleting an already-deleted event returns That event has already been deleted.
  • Rate limits and transient errors are retried, up to three attempts with short backoff.

Prompting an agent to book

  1. Set the agent’s timezone and put the date in the prompt — Today is {{system_vars.date}} — so “next Tuesday” resolves. Using {{system_vars.date}} without timezone is a save error. See variables.
  2. Name the fields to collect before calling a tool (name, reason, day and time).
  3. On voice, have the agent say a short line (“let me check the calendar”) before each call.
  4. Have it read back what the tool returned, and never confirm without a successful create_event.

Next

Appointment booking

The end-to-end booking agent.

MCP servers

Attaching, approving and namespacing.