Skip to main content

Google Calendar

Read calendars, schedule events, RSVP, and check when people are free.

Connect a Google account to work in Calendar: list the calendars it can reach and what it may write to, read events in any window (recurring series expanded into occurrences), create events with guests, a recurrence rule and a Meet link, change or cancel them, answer invitations, and query free/busy across several calendars at once. Acts as the signed-in account, so it reaches exactly what that account reaches. It cannot create or delete calendars, or change who a calendar is shared with.

Connect

Sign in with Google. Sign in with Google to read calendars, schedule events and check when people are free. An organization admin configures the OAuth app once under Integrations → OAuth apps; after that, connecting is a consent screen.

  • Connecting signs in as YOU - tools see the calendars your Google account sees, and an event they create is organized by you.

  • The connection can create, change and delete events on any calendar you can write to, and read every calendar you can read. It cannot create or delete calendars, or change who a calendar is shared with.

  • For scheduled or triggered automations, connect a dedicated service account and share the calendars it should manage with it: automations cannot run as a person (they would act as whoever happened to start them).

Tools

ToolAccessWhat it does
List calendars (yekar.google-calendar.list-calendars)ReadList the calendars the connected account is subscribed to, with the access role it holds on each. This is what the account can reach, not what the organization has; canWrite says up front where an event may be created. Google reports no total.
List events (yekar.google-calendar.list-events)ReadList events on a calendar within a time window. Recurring series are expanded into occurrences by default, so a weekly meeting appears once per week rather than once. Returns one page and the cursor for the next - Google reports no total, so the absence of a cursor is the only 'that was all' there is. Descriptions are capped and say so when cut.
Get event (yekar.google-calendar.get-event)ReadRead one event in full: the guest list with every response, the conferencing link, the recurrence rule, and the whole description (capped far higher than in a list, and it says so if it still had to cut).
Create event (yekar.google-calendar.create-event)WriteCreate an event on a calendar, optionally with guests, a recurrence rule and a Meet link. Guests are emailed by default - pass sendUpdates 'none' only when something else will tell them. Re-running this books a SECOND event: Calendar has no idempotency key, so nothing here can converge a repeat.
Update event (yekar.google-calendar.update-event)WriteChange an existing event's title, time, description, location or guest list. Only the fields you pass are touched - except attendees, which REPLACES the whole list, so read the event first if you mean to add one person. Guests are emailed about the change by default. On one occurrence of a recurring series this edits that occurrence alone; pass the series' recurringEventId to change them all.
Delete event (yekar.google-calendar.delete-event)WriteCancel and remove an event. Guests are emailed the cancellation by default. On ONE occurrence of a recurring series this deletes that occurrence; on the series master it deletes every occurrence. There is no undo - deletion is not a status change this integration can reverse.
Respond to invitation (yekar.google-calendar.respond-to-event)WriteRSVP to an event as the connected account: accept, decline, mark tentative, or reset to needsAction. This answers for the connected account only - it cannot respond on anyone else's behalf, and it does not change the event itself.
Find busy times (yekar.google-calendar.find-busy-times)ReadAsk when one or more calendars are busy in a window - the free/busy view, which returns blocks of time and never event titles, so it works for colleagues whose events you cannot read. A calendar that could not be read comes back with busy: null and the reason, never as an empty list: 'nobody is busy' and 'we could not look' are different answers.

Notes

  • Sign in with Google to connect - tools act as YOUR account, and an event they create is organized by you.
  • Always give times an explicit UTC offset (2026-08-01T14:00:00Z) or pass timeZone - a bare local time silently resolves against the calendar's own zone, which is how a meeting lands hours off.
  • Every write emails the guests by default. Pass sendUpdates 'none' only when something else is telling them.
  • An all-day event's end is EXCLUSIVE: a single day on 2026-08-01 ends 2026-08-02.
  • Use Find busy times for other people - it needs no access to their event details and returns blocks of time, never titles.
  • Editing one occurrence of a recurring series changes only that occurrence; pass the series' recurringEventId to change them all.
  • For a schedule or a trigger, bind this as a service connection owned by a dedicated account that the relevant calendars are shared with - an automation cannot run as whoever happened to start it.