Google Calendar
Manage Google Calendar events and calendars, find busy times across calendars, and control who a calendar is shared with. Connect with Google OAuth.
- rest
https://api.superagnt.com/v1/connections/google-calendarplus the vendor's own path, with your superagnt_ API key asAuthorization: Bearer.- mcp
- Tools named
connection_google_calendar_*onhttps://mcp.superagnt.com/mcp, served once the account is connected. - billing
- Google Calendar bills your own account. Calls cost no superagnt_ data credits.
- rate limit
- 10 requests a second, 600 a minute: the vendor's ceiling as the registry records it, for sizing bursts. Your plan's own limit is on Connections.
- vendor docs
- https://developers.google.com/calendar/api
The Google Calendar connection lets an agent manage schedules end to end. It lists calendars and creates secondary ones, runs the full event lifecycle (create, update, move and delete, with attendee notifications), expands recurring events into instances, creates events from a sentence with quick add, answers "when is X free?" with free/busy queries, and manages calendar sharing.
ids, times and notifications
Calendar ids come from connection_google_calendar_calendars_read action list, and the account's main calendar is always addressable as primary. Event times are objects: {"dateTime":"2026-11-10T15:00:00-08:00","timeZone":"America/Los_Angeles"} for a timed event, {"date":"2026-11-10"} for an all-day one. Attendees get no email unless an event write sets sendUpdates to all or externalOnly (the default is none).
01
Setup
- Connect Google. In the superagnt app open Integrations, pick Google Calendar and click Connect with Google.
- Approve calendar access. Google asks only for calendar access (the
https://www.googleapis.com/auth/calendarscope) plus your Google identity. Approve it in the Google window.
Google Calendar, Google Docs, Google Sheets and Google Search Console share one Google sign-in, but each is its own connection with its own consent: connecting one never grants the others. If the workspace already has a Google account connected for another Google app, the dialog offers Connect Google Calendar instead, which asks that account for Google Calendar's permissions only. Access tokens are refreshed for you.
02
Things to know
- For a date-range agenda, pass
timeMinandtimeMaxwithsingleEvents=trueandorderBy=startTime, so recurring events expand into instances.qsearches event text (summary, description, location and attendees). - Free/busy returns busy intervals only. Compute the free gaps by subtracting them from your query window.
- Quick add parses times in the calendar's time zone on a best-effort basis. Check the returned start and end, and create the event in full when the time must be exact.
- An event update changes only the fields you pass.
- Deleting a calendar removes a secondary calendar with all its events (the primary calendar cannot be deleted). Clearing removes every event from the primary calendar, and works only there. Neither can be undone.
- When more than one Google account in the workspace has granted Google Calendar, calls use the account most recently connected to it.
03
Permissions
These defaults decide whether a superagnt_ agent runs a call or waits for a person (Permissions). Reads run without asking, and so does the free/busy query. Creating, quick-adding, updating and moving events, creating and updating calendars, and sharing a calendar or changing a share ask by default. Deleting an event, deleting or clearing a calendar and unsharing one always ask a person first, because they cannot be undone.
04
Examples
A day's agenda
curl "https://api.superagnt.com/v1/connections/google-calendar/calendars/primary/events?timeMin=2026-11-10T00:00:00Z&timeMax=2026-11-11T00:00:00Z&singleEvents=true&orderBy=startTime" \
-H "Authorization: Bearer $AGNTDATA_API_KEY"Create an event with attendees
curl -X POST "https://api.superagnt.com/v1/connections/google-calendar/calendars/primary/events?sendUpdates=all" \
-H "Authorization: Bearer $AGNTDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"summary": "Roadmap review",
"start": {"dateTime": "2026-11-10T10:00:00-08:00", "timeZone": "America/Los_Angeles"},
"end": {"dateTime": "2026-11-10T10:45:00-08:00", "timeZone": "America/Los_Angeles"},
"attendees": [{"email": "sam@example.com"}]
}'When is the team free?
curl -X POST "https://api.superagnt.com/v1/connections/google-calendar/freeBusy" \
-H "Authorization: Bearer $AGNTDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"timeMin": "2026-11-10T00:00:00Z",
"timeMax": "2026-11-11T00:00:00Z",
"items": [{"id": "primary"}, {"id": "sam@example.com"}]
}'10 tools, one per resource and risk
MCP servers and agents on the grouped surface list Google Calendar as these tools. Each takes an action, and the ones that work across record types an object. Every operation also keeps its own per-operation name, in the next table, which works on every server. How grouping works: Grouped tools.
| Tool | Risk | Actions |
|---|---|---|
connection_google_calendar_events_readRead Google Calendar events List or search a calendar's events (use singleEvents with orderBy startTime for an agenda), get one event, expand a recurring event into its instances, or find busy times across calendars. 'primary' is the account's main calendar. | read | listgetinstancesfree_busy |
connection_google_calendar_events_writeCreate and update Google Calendar events Create an event (or quick-add one from a sentence), update an event (only the fields you pass change), or move it to another calendar. Set sendUpdates to email the attendees. | write | createquick_addupdatemove |
connection_google_calendar_events_deleteDelete a Google Calendar event Delete an event. Cannot be undone. | destructive | delete |
connection_google_calendar_calendars_readRead Google calendars List the account's calendars, or get one. | read | listget |
connection_google_calendar_calendars_writeCreate and update Google calendars Create a secondary calendar, or change a calendar's name, description or time zone. | write | createupdate |
connection_google_calendar_calendars_deleteDelete or clear Google calendars Delete a secondary calendar with all its events, or clear every event from the primary calendar. Cannot be undone. | destructive | deleteclear |
connection_google_calendar_shares_readRead Google Calendar sharing List who a calendar is shared with, and the role each has. | read | list |
connection_google_calendar_shares_writeShare Google calendars Share a calendar with someone, or change a sharing rule's role. | write | createupdate |
connection_google_calendar_shares_deleteUnshare a Google calendar Revoke someone's access to a calendar. | destructive | delete |
connection_google_calendar_settings_readRead Google Calendar settings Read the color palette and the user's settings, including the time zone. | read | colorslist |
All 21 operations
Each operation is a REST path under https://api.superagnt.com/v1/connections/google-calendar and an MCP tool. The per-operation tool name is the one permissions, approvals and usage records use.
| Operation | MCP tool |
|---|---|
GET /users/me/calendarListList calendars | connection_google_calendar_list_calendarsgrouped: connection_google_calendar_calendars_read, action list |
POST /calendarsCreate a calendar | connection_google_calendar_create_calendargrouped: connection_google_calendar_calendars_write, action create |
GET /calendars/{calendarId}Get a calendar | connection_google_calendar_get_calendargrouped: connection_google_calendar_calendars_read, action get |
PATCH /calendars/{calendarId}Update a calendar | connection_google_calendar_update_calendargrouped: connection_google_calendar_calendars_write, action update |
DELETE /calendars/{calendarId}Delete a calendar | connection_google_calendar_delete_calendargrouped: connection_google_calendar_calendars_delete, action delete |
POST /calendars/{calendarId}/clearClear the primary calendar | connection_google_calendar_clear_calendargrouped: connection_google_calendar_calendars_delete, action clear |
GET /calendars/{calendarId}/eventsList events | connection_google_calendar_list_eventsgrouped: connection_google_calendar_events_read, action list |
POST /calendars/{calendarId}/eventsCreate an event | connection_google_calendar_create_eventgrouped: connection_google_calendar_events_write, action create |
GET /calendars/{calendarId}/events/{eventId}Get an event | connection_google_calendar_get_eventgrouped: connection_google_calendar_events_read, action get |
PATCH /calendars/{calendarId}/events/{eventId}Update an event | connection_google_calendar_update_eventgrouped: connection_google_calendar_events_write, action update |
DELETE /calendars/{calendarId}/events/{eventId}Delete an event | connection_google_calendar_delete_eventgrouped: connection_google_calendar_events_delete, action delete |
POST /calendars/{calendarId}/events/quickAddQuick-add an event from text | connection_google_calendar_quick_add_eventgrouped: connection_google_calendar_events_write, action quick_add |
POST /calendars/{calendarId}/events/{eventId}/moveMove an event to another calendar | connection_google_calendar_move_eventgrouped: connection_google_calendar_events_write, action move |
GET /calendars/{calendarId}/events/{eventId}/instancesList instances of a recurring event | connection_google_calendar_list_event_instancesgrouped: connection_google_calendar_events_read, action instances |
POST /freeBusyQuery free/busy times | connection_google_calendar_query_free_busygrouped: connection_google_calendar_events_read, action free_busy |
GET /colorsList color palette | connection_google_calendar_get_colorsgrouped: connection_google_calendar_settings_read, action colors |
GET /users/me/settingsList user calendar settings | connection_google_calendar_list_settingsgrouped: connection_google_calendar_settings_read, action list |
GET /calendars/{calendarId}/aclList calendar sharing rules | connection_google_calendar_list_calendar_sharesgrouped: connection_google_calendar_shares_read, action list |
POST /calendars/{calendarId}/aclShare a calendar | connection_google_calendar_share_calendargrouped: connection_google_calendar_shares_write, action create |
PATCH /calendars/{calendarId}/acl/{ruleId}Update a sharing rule | connection_google_calendar_update_calendar_sharegrouped: connection_google_calendar_shares_write, action update |
DELETE /calendars/{calendarId}/acl/{ruleId}Remove a sharing rule | connection_google_calendar_unshare_calendargrouped: connection_google_calendar_shares_delete, action delete |