Google Calendar
Calendars. Create, find, and change events and meetings, check when people are free, and manage calendars and their sharing.
| Property | Value |
|---|---|
| Slug | google_calendar |
| Definition version | 0.1.0 |
| Base URL | https://www.googleapis.com/calendar/v3 |
| Auth schemes | oauth2 |
| Action tools | 26 |
| By class | 10 read, 12 write, 4 destructive |
| Triggers | 1 |
| Provider rate limit | not declared, so outbound calls are unpaced |
Measured routing accuracy
40 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 16 cases written by hand and 22 cases from the paraphrase pass, plus 2 context cases whose intent names no app and is decided by the session. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.
| Measure | Cases | Share |
|---|---|---|
| top-1 | 13/40 | 32.5% |
| top-8 | 29/40 | 72.5% |
The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.
Authentication
Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.
oauth2
| Property | Value |
|---|---|
| Authorization URL | https://accounts.google.com/o/oauth2/v2/auth |
| Token URL | https://oauth2.googleapis.com/token |
| Default scopes | https://www.googleapis.com/auth/calendar |
| Refresh tokens | yes, the refresh daemon renews ahead of expiry |
Tools
26 action tools. The catalog-wide slug is google_calendar.<tool>, which is what search_tools returns and call_tool takes.
google_calendar.list_events
List or search events on a calendar within a time window, with free-text query support. Use when the user asks what's on their calendar, what meetings they have, or wants to find an event by name. Recurring events expand to one entry per occurrence when single_events is true. For one known event use get_event.
Class read (reads only). Scopes https://www.googleapis.com/auth/calendar.events.readonly. Calls GET /calendars/{{params.calendar_id}}/events.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
max_results | integer | no | Page size, default 250. |
order_by | string, one of startTime, updated | no | Sort order. startTime requires single_events true. |
page_token | string | no | Token from a previous page's nextPageToken. |
query | string | no | Free-text search over summary, description, and attendees. |
single_events | boolean | no | Expand recurring events into individual instances. Default false, which returns the recurring series as one entry. |
time_max | string | no | RFC 3339 timestamp; excludes events starting after this. |
time_min | string | no | RFC 3339 timestamp; excludes events ending before this. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].attendees | array of object | |
items[].attendees[].email | string | |
items[].attendees[].responseStatus | string | |
items[].end | object | |
items[].end.date | string | |
items[].end.dateTime | string | |
items[].end.timeZone | string | |
items[].htmlLink | string | |
items[].id | string | |
items[].location | string | |
items[].start | object | |
items[].start.date | string | |
items[].start.dateTime | string | |
items[].start.timeZone | string | |
items[].status | string | |
items[].summary | string | |
nextPageToken | string |
Also retrieved by: "what's on my calendar this week", "show me my meetings for tomorrow", "what do I have going on today", "pull up everything scheduled between these two dates", "find that meeting about the budget", "what's my agenda look like this week", "check my schedule for any meetings today".
google_calendar.get_event
Get one event's full details by event id: time, location, description, attendees and their RSVP status, recurrence, and video conference link. Use after list_events to read a specific meeting. For every occurrence of a recurring event use list_event_instances.
Class read (reads only). Scopes https://www.googleapis.com/auth/calendar.events.readonly. Calls GET /calendars/{{params.calendar_id}}/events/{{params.event_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
event_id | string | yes | Event id from list_events or create_event. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
attendees | array of object | |
attendees[].displayName | string | |
attendees[].email | string | |
attendees[].optional | boolean | |
attendees[].responseStatus | string | |
creator | object | |
creator.email | string | |
description | string | |
end | object | |
end.date | string | |
end.dateTime | string | |
end.timeZone | string | |
hangoutLink | string | |
htmlLink | string | |
id | string | |
location | string | |
organizer | object | |
organizer.email | string | |
recurrence | array of string | |
recurringEventId | string | |
start | object | |
start.date | string | |
start.dateTime | string | |
start.timeZone | string | |
status | string | |
summary | string |
Also retrieved by: "pull up the details for that meeting", "show me everything about this appointment", "what time and where is that thing again", "open up that calendar entry", "who else is on that meeting and when is it", "what's the location for the 2pm meeting".
google_calendar.create_event
Create a calendar event or meeting. Use when the user wants to schedule, book, or set up a meeting, appointment, or reminder at a specific time. Give an all-day event with start_date and end_date, or a timed event with start_time and end_time. Invited attendees get an email unless send_updates is "none". For a plain-English one-liner like "lunch with Sam Friday at noon" use quick_add_event.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.events. Calls POST /calendars/{{params.calendar_id}}/events.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
attendees | array of object | no | People to invite. |
attendees[].email | string | yes | |
attendees[].optional | boolean | no | Marks the attendee as optional rather than required. |
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
color_id | string | no | Event color id from list_calendar_colors. |
description | string | no | Longer free-text notes for the event. |
end_date | string | no | All-day event end (exclusive), "YYYY-MM-DD". |
end_time | string | no | Timed event end, RFC 3339. |
location | string | no | Free-text location or meeting address. |
recurrence | array of string | no | RFC 5545 recurrence lines, e.g. ["RRULE:FREQ=WEEKLY;COUNT=5"]. |
send_updates | string, one of all, externalOnly, none | no | Who gets the invite email. Default none. |
start_date | string | no | All-day event start, "YYYY-MM-DD". Omit for a timed event. |
start_time | string | no | Timed event start, RFC 3339. Omit for an all-day event. |
summary | string | yes | Event title. |
time_zone | string | no | IANA time zone for start_time/end_time, e.g. "America/Chicago". Required alongside start_time. |
visibility | string, one of default, public, private | no |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
attendees | array of object | |
attendees[].email | string | |
attendees[].responseStatus | string | |
end | object | |
end.date | string | |
end.dateTime | string | |
hangoutLink | string | |
htmlLink | string | |
id | string | |
start | object | |
start.date | string | |
start.dateTime | string | |
status | string | |
summary | string |
Also retrieved by: "put a meeting on my calendar", "book time with the design team next Tuesday", "set up an appointment for Thursday afternoon", "get something on the calendar for next week", "schedule a call with the client", "block off time for a meeting Friday morning", "put a meeting on the calendar with a few people invited".
google_calendar.quick_add_event
Create an event from one plain-English line, e.g. "Dinner with Sam Tuesday at 7pm at Luigi's". Google parses the date, time, and title; use when the user phrases a booking casually rather than giving separate fields. For explicit start and end times, invitee objects, or recurrence, use create_event instead.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.events. Calls POST /calendars/{{params.calendar_id}}/events/quickAdd.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
send_updates | string, one of all, externalOnly, none | no | Who gets the invite email. Default none. |
text | string | yes | The event described in one sentence, e.g. "Appointment at Somewhere on June 3rd 10am-10:25am". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
end | object | |
end.date | string | |
end.dateTime | string | |
htmlLink | string | |
id | string | |
start | object | |
start.date | string | |
start.dateTime | string | |
summary | string |
Also retrieved by: "jot down dinner with Sam Friday at 7", "just throw coffee with Alex on Monday morning on the calendar", "add "standup at 9am" real quick", "drop a one-line reminder on my calendar for Monday".
google_calendar.update_event
Change an existing event's title, time, location, description, recurrence, or visibility by event id. Use when the user wants to reschedule, rename, move, or edit a meeting. Only the fields given are changed; the rest stay as they are. To change who is invited use update_event_attendees; to cancel it entirely use delete_event.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.events. Calls PATCH /calendars/{{params.calendar_id}}/events/{{params.event_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
description | string | no | New free-text notes. |
end_date | string | no | New all-day end (exclusive), "YYYY-MM-DD". |
end_time | string | no | New timed end, RFC 3339. |
event_id | string | yes | Event to update. |
location | string | no | New location. |
recurrence | array of string | no | Replacement RFC 5545 recurrence lines. |
send_updates | string, one of all, externalOnly, none | no | Who gets the change notification email. Default none. |
start_date | string | no | New all-day start, "YYYY-MM-DD". |
start_time | string | no | New timed start, RFC 3339. |
summary | string | no | New event title. |
time_zone | string | no | IANA time zone, required alongside start_time or end_time. |
visibility | string, one of default, public, private | no |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
end | object | |
end.date | string | |
end.dateTime | string | |
htmlLink | string | |
id | string | |
start | object | |
start.date | string | |
start.dateTime | string | |
status | string | |
summary | string |
Also retrieved by: "push that meeting back an hour", "change the location for tomorrow's appointment", "rename that calendar entry", "move the client call to a different day", "reschedule tomorrow's meeting to the afternoon".
google_calendar.delete_event
Permanently cancel and remove an event from a calendar by event id. Use when the user wants to cancel, delete, or remove a meeting or appointment. Unrecoverable; other attendees are notified by default. Verify the event id first, e.g. with get_event.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes https://www.googleapis.com/auth/calendar.events. Calls DELETE /calendars/{{params.calendar_id}}/events/{{params.event_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
event_id | string | yes | Event to cancel and remove. |
send_updates | string, one of all, externalOnly, none | no | Who gets the cancellation email. Default all. |
Also retrieved by: "cancel that meeting", "get rid of tomorrow's appointment", "clear that thing off my calendar", "I don't need that call anymore, take it off", "cancel the meeting and let everyone know it's off".
google_calendar.move_event
Move an event from one calendar to another, e.g. from a personal calendar to a shared team calendar. Use when the user wants an event put on a different calendar, not just rescheduled in time. For a time or detail change on the same calendar use update_event.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.events. Calls POST /calendars/{{params.calendar_id}}/events/{{params.event_id}}/move.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar the event currently lives on. |
destination_calendar_id | string | yes | Calendar id to move the event onto. |
event_id | string | yes | Event to move. |
send_updates | string, one of all, externalOnly, none | no | Who gets the change notification email. Default none. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
htmlLink | string | |
id | string | |
organizer | object | |
organizer.email | string |
Also retrieved by: "put that meeting on the team calendar instead", "shift this appointment onto my work calendar", "this belongs on a different calendar, move it over".
google_calendar.list_event_instances
List every occurrence of a recurring event within a time window, each with its own id, start, and end. Use when the user asks about a specific occurrence of a repeating meeting, or wants every date in a series. For the series definition itself use get_event.
Class read (reads only). Scopes https://www.googleapis.com/auth/calendar.events.readonly. Calls GET /calendars/{{params.calendar_id}}/events/{{params.event_id}}/instances.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
event_id | string | yes | Recurring event id from list_events or get_event. |
max_results | integer | no | Page size, default 250. |
page_token | string | no | Token from a previous page's nextPageToken. |
time_max | string | no | RFC 3339 timestamp; excludes instances starting after this. |
time_min | string | no | RFC 3339 timestamp; excludes instances ending before this. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].end | object | |
items[].end.date | string | |
items[].end.dateTime | string | |
items[].id | string | |
items[].start | object | |
items[].start.date | string | |
items[].start.dateTime | string | |
items[].status | string | |
items[].summary | string | |
nextPageToken | string |
Also retrieved by: "show me every date in that recurring series", "what are all the occurrences of the weekly standup", "list out each instance of that repeating meeting".
google_calendar.update_event_attendees
Replace the complete guest list on an event: add someone, remove someone, or change your own or another guest's RSVP status. Use when the user wants to invite, uninvite, add, remove, or respond to a meeting (accept, decline, or mark tentative). Google replaces the whole attendee list, so include everyone who should stay invited, not just the one being changed; read the current list with get_event first.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.events. Calls PATCH /calendars/{{params.calendar_id}}/events/{{params.event_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
attendees | array of object | yes | The complete new guest list. Include every attendee who should remain invited, with their current or intended responseStatus. |
attendees[].email | string | yes | |
attendees[].optional | boolean | no | Marks the attendee as optional rather than required. |
attendees[].responseStatus | string, one of needsAction, declined, tentative, accepted | no | |
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
event_id | string | yes | Event whose guest list is being replaced. |
send_updates | string, one of all, externalOnly, none | no | Who gets the change notification email. Default none. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
attendees | array of object | |
attendees[].email | string | |
attendees[].optional | boolean | |
attendees[].responseStatus | string | |
id | string |
Also retrieved by: "add Priya to the guest list for that meeting", "take Jordan off the guest list", "accept that meeting invite", "decline the invitation to that call", "mark myself as tentative for that one", "RSVP yes to the planning meeting", "put another person on the invite for Thursday's meeting".
google_calendar.get_calendar
Get a calendar's own metadata by id: title, description, location, and time zone. Use to check a calendar's display name or time zone. For the user's list of calendars and per-calendar view settings (color, visibility) use list_calendars instead.
Class read (reads only). Scopes https://www.googleapis.com/auth/calendar.readonly. Calls GET /calendars/{{params.calendar_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
description | string | |
id | string | |
location | string | |
summary | string | |
timeZone | string |
Also retrieved by: "what time zone is that calendar set to", "look up the details on this calendar", "what's this calendar named".
google_calendar.create_calendar
Create a new secondary calendar, separate from the user's primary calendar. Use when the user wants a new calendar for a project, team, or area of life, distinct from a shared calendar someone else already owns. To use an existing calendar someone shared with you, use add_calendar_to_list instead.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.calendars. Calls POST /calendars.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
description | string | no | Longer free-text notes for the calendar. |
location | string | no | Free-text geographic location. |
summary | string | yes | Calendar title. |
time_zone | string | no | IANA time zone, e.g. "America/Chicago". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | string | |
summary | string | |
timeZone | string |
Also retrieved by: "set up a new calendar for the project", "make a separate calendar for the marketing team", "start a fresh calendar just for travel plans", "I want a brand new calendar just for this, not on my main one", "spin up a calendar for the onboarding project".
google_calendar.update_calendar
Rename a calendar or change its description, location, or time zone by calendar id. Use when the user wants to rename or edit a calendar itself, not an event on it. Only affects calendars the user owns or can manage.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.calendars. Calls PATCH /calendars/{{params.calendar_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar to update. |
description | string | no | New free-text notes. |
location | string | no | New free-text location. |
summary | string | no | New calendar title. |
time_zone | string | no | New IANA time zone. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
description | string | |
id | string | |
location | string | |
summary | string | |
timeZone | string |
Also retrieved by: "rename that calendar", "change the time zone on this calendar", "give this calendar a new description".
google_calendar.delete_calendar
Permanently delete a secondary calendar and every event on it, by calendar id. Unrecoverable. Use only when the user explicitly wants a whole calendar gone, not just emptied; to keep the calendar but remove its events use clear_calendar, and to just stop seeing a shared calendar use remove_calendar_from_list.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes https://www.googleapis.com/auth/calendar.calendars. Calls DELETE /calendars/{{params.calendar_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar to delete permanently. |
Also retrieved by: "get rid of that whole calendar for good", "delete the project calendar entirely", "remove this calendar and everything on it", "that calendar isn't needed anymore, delete it completely", "permanently delete this calendar, not just clear it out".
google_calendar.clear_calendar
Permanently delete every event on the primary calendar, keeping the calendar itself. Use when the user wants to wipe, empty, or start their calendar over from scratch. Unrecoverable and only works on the primary calendar; for a secondary calendar use delete_calendar instead.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes https://www.googleapis.com/auth/calendar.calendars. Calls POST /calendars/{{params.calendar_id}}/clear.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Must be "primary"; the API only clears the primary calendar. |
Also retrieved by: "wipe every event off my calendar", "empty out my calendar completely", "start my calendar over from scratch".
google_calendar.list_calendars
List every calendar the user has access to: their own, shared ones, and subscribed public calendars, with each one's display color and access role. Use when the user asks what calendars they have, or to resolve a calendar's display name to its id.
Class read (reads only). Scopes https://www.googleapis.com/auth/calendar.calendarlist.readonly. Calls GET /users/me/calendarList.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
max_results | integer | no | Page size, default 100. |
page_token | string | no | Token from a previous page's nextPageToken. |
show_hidden | boolean | no | Include calendars the user has hidden. Default false. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].accessRole | string | |
items[].colorId | string | |
items[].hidden | boolean | |
items[].id | string | |
items[].primary | boolean | |
items[].selected | boolean | |
items[].summary | string | |
items[].timeZone | string | |
nextPageToken | string |
Also retrieved by: "what calendars do I have", "show me every calendar in my account", "list out all my calendars", "which calendar is that team's stuff on", "what calendars can I pick from when I make an event".
google_calendar.get_calendar_list_entry
Get one calendar's entry in the user's own calendar list: its display color, whether it is selected or hidden, default reminders, and access role. Use for the user's personal view settings on a calendar. For the calendar's own title and time zone use get_calendar instead.
Class read (reads only). Scopes https://www.googleapis.com/auth/calendar.calendarlist.readonly. Calls GET /users/me/calendarList/{{params.calendar_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
accessRole | string | |
colorId | string | |
hidden | boolean | |
id | string | |
primary | boolean | |
selected | boolean | |
summary | string |
Also retrieved by: "what color is that calendar set to in my view", "is this calendar hidden from my view", "check my personal settings for that calendar".
google_calendar.add_calendar_to_list
Subscribe to an existing calendar someone shared, or a public calendar, adding it to the user's own calendar list by its id. Use when the user wants to add, follow, or subscribe to a calendar they don't own. To create a brand-new calendar use create_calendar.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.calendarlist. Calls POST /users/me/calendarList.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Id of the calendar to subscribe to, usually its owner's email or a public calendar id. |
color_id | string | no | Display color id from list_calendar_colors. |
hidden | boolean | no | Add it hidden from the calendar view. Default false. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
accessRole | string | |
id | string | |
summary | string |
Also retrieved by: "subscribe to the team's shared calendar", "add that calendar someone shared with me", "follow the company holidays calendar".
google_calendar.update_calendar_list_entry
Change how a subscribed calendar appears for the user: its display color, whether it is selected (shown) or hidden. Use when the user wants to recolor, show, or hide a calendar in their own view. Does not affect the calendar for anyone else.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.calendarlist. Calls PATCH /users/me/calendarList/{{params.calendar_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar entry to update. |
color_id | string | no | New display color id from list_calendar_colors. |
hidden | boolean | no | Whether the calendar is hidden from the calendar view. |
selected | boolean | no | Whether the calendar is shown in the calendar view. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
colorId | string | |
hidden | boolean | |
id | string | |
selected | boolean |
Also retrieved by: "change the color on that calendar", "hide this calendar from my view", "show that calendar again in my view".
google_calendar.remove_calendar_from_list
Unsubscribe from a calendar, removing it from the user's own calendar list. Use when the user wants to stop seeing, hide for good, or remove a shared or public calendar from their view. The calendar itself and its events are untouched; to delete a calendar the user owns, use delete_calendar.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.calendarlist. Calls DELETE /users/me/calendarList/{{params.calendar_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar entry to remove from the user's list. |
Also retrieved by: "stop showing me that calendar", "take that shared calendar out of my view", "unsubscribe from the old team calendar".
google_calendar.list_acl_rules
List who has access to a calendar and their role: owner, writer, reader, or free/busy only. Use when the user asks who can see or edit a calendar, or who it's shared with.
Class read (reads only). Scopes https://www.googleapis.com/auth/calendar.acls.readonly. Calls GET /calendars/{{params.calendar_id}}/acl.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
page_token | string | no | Token from a previous page's nextPageToken. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].id | string | |
items[].role | string | |
items[].scope | object | |
items[].scope.type | string | |
items[].scope.value | string | |
nextPageToken | string |
Also retrieved by: "who can see this calendar", "who has access to edit this calendar", "show me everyone this calendar is shared with".
google_calendar.share_calendar
Grant a person, group, or the whole domain access to a calendar. Use when the user wants to share, invite, or give someone access to a calendar. role controls what they can do: freeBusyReader (just availability), reader, writer, or owner. To change an existing person's role use update_acl_rule.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.acls. Calls POST /calendars/{{params.calendar_id}}/acl.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
role | string, one of freeBusyReader, reader, writer, owner | yes | Access level to grant. |
scope_type | string, one of user, group, domain, default | no | Who scope_value identifies. Default "user" (an individual email address). |
scope_value | string | yes | Email address for a user or group, or a domain name for scope_type domain. |
send_notifications | boolean | no | Email the person that they now have access. Default true. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | string | |
role | string | |
scope | object | |
scope.type | string | |
scope.value | string |
Also retrieved by: "give Priya access to my calendar", "share this calendar with the whole team", "let Jordan see when I'm free on this calendar", "invite someone new to view or edit my calendar", "grant a coworker access to this calendar for the first time".
google_calendar.update_acl_rule
Change an existing sharing rule's access level on a calendar by rule id. Use when the user wants to upgrade or downgrade what someone who already has access can do, e.g. from reader to writer. Rule ids come from list_acl_rules. To grant access to someone new use share_calendar.
Class write (writes, no confirmation needed). Scopes https://www.googleapis.com/auth/calendar.acls. Calls PATCH /calendars/{{params.calendar_id}}/acl/{{params.rule_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
role | string, one of freeBusyReader, reader, writer, owner | yes | New access level. |
rule_id | string | yes | Sharing rule id from list_acl_rules. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | string | |
role | string | |
scope | object | |
scope.type | string | |
scope.value | string |
Also retrieved by: "upgrade Priya to be able to edit the calendar", "change what access Jordan has on this calendar", "make Sam an editor instead of just a viewer".
google_calendar.remove_acl_rule
Revoke a person, group, or domain's access to a calendar entirely, by rule id. Use when the user wants to unshare, revoke, or remove someone's access to a calendar. Rule ids come from list_acl_rules. They lose access immediately with no notice.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes https://www.googleapis.com/auth/calendar.acls. Calls DELETE /calendars/{{params.calendar_id}}/acl/{{params.rule_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendar_id | string | yes | Calendar id, or "primary" for the user's main calendar. |
rule_id | string | yes | Sharing rule to revoke. |
Also retrieved by: "take away Jordan's access to this calendar", "revoke that person's access entirely", "unshare this calendar with them".
google_calendar.check_availability
Check when one or more calendars are busy within a time window, without seeing the events themselves. Use when the user asks if someone is free, wants to find a meeting time, or asks about a scheduling conflict. Returns only busy intervals; read the actual events with list_events if titles or details are needed.
Class read (reads only). Scopes https://www.googleapis.com/auth/calendar.freebusy. Calls POST /freeBusy.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
calendars | array of object | yes | Calendars to check, each as an object with an id: primary for the user's own calendar, or another person's email. |
calendars[].id | string | yes | |
time_max | string | yes | RFC 3339 timestamp for the end of the window. |
time_min | string | yes | RFC 3339 timestamp for the start of the window. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
calendars | object | Keyed by calendar id, each holding a busy array of {start, end} intervals. |
timeMax | string | |
timeMin | string |
Also retrieved by: "is Sam free Thursday afternoon", "find a time that works for everyone", "when is there a scheduling conflict this week", "check if anyone's busy during that window".
google_calendar.list_calendar_colors
List the color ids available for calendars and for events, with their background and foreground hex values. Use before setting a color_id on a calendar or event, or when the user asks what colors are available.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /colors.
Takes no arguments.
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
calendar | object | Keyed by color id, each holding {background, foreground} hex colors. |
event | object | Keyed by color id, each holding {background, foreground} hex colors. |
Also retrieved by: "what colors can I use for events", "show me the color options for calendars", "what color ids are available".
google_calendar.list_settings
List the user's own Calendar settings: default time zone, week start day, and time format. Use when the user asks what time zone or format their calendar is set to, not an individual event's time zone.
Class read (reads only). Scopes https://www.googleapis.com/auth/calendar.settings.readonly. Calls GET /users/me/settings.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
page_token | string | no | Token from a previous page's nextPageToken. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].id | string | |
items[].value | string | |
nextPageToken | string |
Also retrieved by: "what time zone is my calendar set to", "check my calendar preferences", "what format does my calendar use for time".
Triggers
Triggers are app-initiated. They are not retrievable as tools and cannot be called; subscribe with TriggersService.CreateSubscription and events arrive as signed deliveries.
calendar_changed
Fires when a watched calendar's events change: created, updated, or deleted. Carries no details of what changed, only the channel and resource ids; call list_events with a sync token afterward to read what's new.
Payload fields (anything the schema does not declare never reaches a subscriber):
| Field | Type | Notes |
|---|---|---|
channelId | string | |
resourceId | string | |
resourceState | string |
Inbound webhooks
Providers post to /webhooks/google_calendar. Posts that fail verification are rejected before anything is stored, and the ingest path refuses every post while the secret variable is unset.
| Property | Value |
|---|---|
| Verification scheme | token_query |
| Shared secret | AUTOMATON_GOOGLE_CALENDAR_WEBHOOK_TOKEN (deployment environment) |
| Token query parameter | token |
Mappings are tried in order and the first match wins.
| Trigger | Matches when | Entity resolved from |
|---|---|---|
calendar_changed | header X-Goog-Resource-State = exists |