| name | google-calendar |
| description | Read, create, and update events on the user's Google Calendar. |
| scope | agent |
| requires | ["google-calendar"] |
Typical flows:
See today / this week → google-calendar_list_events with timeMin and timeMax bounding the window. Default calendarId: 'primary' covers the user's main calendar — only list calendars first if the user specifies a non-primary one. Always pass timeMin to avoid returning years of data.
Inspect a specific event → google-calendar_get_event for attendees, description, or conference link — don't re-list to find it.
Schedule something (natural language) → google-calendar_quick_add with a phrase like "Coffee with Sam Friday 10am". Lowest friction. Confirm the phrase with the user before calling.
Schedule something (precise) → google-calendar_create_event when the user gives exact times or attendees. start/end take either { dateTime, timeZone } for timed events or { date } for all-day. Attendees is [{ email }]. Always read back the time/attendees to confirm before calling — calendar events are visible to invitees.
Reschedule or rename → google-calendar_update_event with only the changed fields. PATCH semantics.
Cancel a meeting → google-calendar_delete_event. Confirm with the user first — this is irreversible and notifies attendees.
Alternate calendar → google-calendar_list_calendars to discover calendar IDs → pass that id as calendarId on subsequent calls. The user's primary calendar is simply 'primary' (a reserved alias).
Times are RFC3339. When the user says "3pm" without a date, assume today in their local zone — but state your assumption and offer to change it. Never silently pick a date.