Skip to content

Scheduling

Google Calendar
API integration

Ship Scheduling features without building the integration. Full Google Calendar API access via Proxy, normalized data through Unified APIs, and 30+ MCP-ready tools for AI agents — all extensible to your exact use case.

Talk to us
Google Calendar

Use Cases

Why integrate with Google Calendar

Common scenarios for SaaS companies building Google Calendar integrations for their customers.

01

Automate interview scheduling in your ATS

Query real-time availability across multiple interviewers using free/busy data, then programmatically create interview events with attendees and conferencing links — all without your recruiters leaving your platform.

02

Power bidirectional meeting sync for your CRM

Keep your CRM timeline in lockstep with Google Calendar by watching for event changes via webhooks and syncing meeting updates, reschedules, and cancellations back to contact and deal records automatically.

03

Build native scheduling into your customer-facing product

Let your users expose bookable time slots to their clients by reading calendar availability and creating confirmed events directly, replacing the need for a separate scheduling tool.

04

Enable meeting intelligence and call recording workflows

Subscribe to calendar event changes to detect upcoming meetings with external attendees and conferencing links, so your platform can automatically join, record, and associate transcripts with the right records.

05

Sync project tasks to calendar time blocks

When users are assigned work in your project management tool, automatically create focused time blocks on their Google Calendar to protect deep work time and reduce context switching.

What You Can Build

Ship these features with Truto + Google Calendar

Concrete product features your team can ship faster by leveraging Truto’s Google Calendar integration instead of building from scratch.

01

Real-time availability engine

Use the free/busy endpoint to query multiple users' calendars simultaneously and surface open meeting slots to external parties without exposing private event details.

02

Two-way event sync with conflict detection

Combine event webhooks with incremental event listing to maintain a perfect mirror between your platform's meetings and Google Calendar, detecting and resolving conflicts in real time.

03

Multi-calendar routing picker

Let your end users choose which of their Google calendars to check for conflicts and which to push new events to, using the calendar list endpoints to present all available calendars.

04

Recurring event instance management

Expand recurring event series into individual occurrences so your platform can track attendance, notes, or status changes on a per-instance basis without breaking sync logic.

05

Automated meeting creation with conferencing links

Programmatically create calendar events with Google Meet links, attendee lists, and custom descriptions when workflows are triggered inside your product — like moving a deal stage or confirming a booking.

06

Contact-enriched meeting prep dashboard

Scan upcoming events for attendee emails, match them against contacts via the search contacts endpoints, and surface contextual prep cards before each meeting starts.

SuperAI

Google Calendar AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_oauth_user_info

Retrieves basic profile information about the authenticated user in Google Calendar. The response includes essential details such as the user's unique identifier (sub), full name (name), first name (given_name), last name (family_name), profile picture URL (picture), and email address (email).

calendar_list_calendars

List the calendars on the authenticated user's Calendar List (owned plus subscribed). Use when browsing available calendars or resolving a display name to a calendar id before calling events list or get. Results are summaries; fetch full calendar metadata via this resource's get method or calendars get. Returns one page; pass the response's next_cursor to fetch subsequent pages.

calendar_get_calendar_list_entry

Read one Calendar List entry: access role, colors, and visibility for a calendar the user has subscribed to. Use when checking how a calendar appears in the user's list (not the calendar's own metadata — use calendars get for that). Obtain id from the calendar list.

calendar_add_calendar_to_list

Add an existing calendar to the authenticated user's Calendar List (subscribe). Use when the user wants another calendar to appear in their list. Do NOT use this to create a brand-new secondary calendar — use calendars create for that. Returns the new list entry including the calendar id.

calendar_update_calendar_list_entry

Update a Calendar List entry's preferences (color, visibility, reminders) for a subscribed calendar. Use when changing how a calendar appears in the user's list without changing the calendar itself. Obtain id from the calendar list.

calendar_remove_calendar_from_list

Remove a calendar from the user's Calendar List (unsubscribe). Use when the user no longer wants a subscribed calendar shown. Does not delete the underlying calendar — use calendars delete for that. Returns an empty 204 response on success. Obtain id from the calendar list.

calendar_watch_calendar_list

Open a push-notification channel for changes to the user's Calendar List. Use when an app needs webhook alerts when calendars are added or removed from the list — not for reading the list itself (use the calendar list). Returns a channel with id and expiration.

calendar_get_calendar

Read a Google Calendar's metadata: display name, description, time zone, and location. Use when resolving a calendar id to human-readable details before listing or creating events. Obtain id from the calendar list or calendars create.

calendar_create_calendar

Create a secondary Google Calendar with a summary (display name). Use when the user needs a new calendar separate from their primary one. Returns the created calendar including its id — store it for subsequent event calls. Do not use this to add someone else's calendar to the list; use the calendar list create for that.

calendar_update_calendar

Update a Google Calendar's metadata (summary, description, time zone, location); only fields provided are changed. Use when renaming a calendar or correcting its details. Obtain id from the calendar list.

calendar_delete_calendar

Delete a secondary Google Calendar by id. Use when permanently removing a calendar the user owns (not the primary). This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. To wipe events but keep the calendar, use calendars clear instead. Obtain id from the calendar list.

calendar_clear_calendar

Delete every event on a Google Calendar identified by calendar_id, leaving the calendar itself. Use when the user wants to wipe a calendar clean without deleting it. This clears all events and cannot be undone; confirm the calendar and get explicit user confirmation before calling. To remove the calendar entirely, use calendars delete. Obtain calendar_id from the calendar list.

calendar_list_events

List events on a Google Calendar for a time window. Use when asking what's on the schedule, finding free slots, or resolving an event title to an id. Pass calendar_id (from the calendar list; primary is usually 'primary'). Results are summaries; fetch a full record via this resource's get method. For expanded occurrences of a recurring series, use event instances instead. Returns one page; pass the response's next_cursor to fetch subsequent pages.

calendar_create_event

Create a structured Google Calendar event with title, start/end, attendees, and optional location or conference data. Use when scheduling a meeting with known fields. For a one-line natural-language create ("Lunch Friday 1pm"), prefer events quick-add. For importing an existing iCalendar payload, use events import. Returns the created event including its id.

calendar_get_event

Read a single Google Calendar event: title, time, attendees, location, and description. Use when you already know the event id and need full details. For browsing many events, use events list instead. Obtain id from events. Requires calendar_id of the calendar that owns the event.

calendar_update_event

Partially update an existing Google Calendar event; only fields provided are changed. Use when rescheduling, renaming, or editing attendees on a known event. Obtain id from events. Requires calendar_id.

calendar_quick_add_event

Create a Google Calendar event from a free-text phrase (natural language). Use when the user describes an event in one sentence without structured fields. For full control over attendees, recurrence, or conference data, use events create instead. Returns the created event including its id.

calendar_move_event

Move a Google Calendar event from one calendar to another. Use when the user wants an event on a different calendar without recreating it. Pass the source calendar_id, event_id, and destination calendar id. Obtain ids from the calendar list and events.

calendar_delete_event

Delete a Google Calendar event by id. Use when the user asks to cancel or remove a specific event. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from events. Requires calendar_id.

calendar_import_event

Import an existing iCalendar event into a Google Calendar, preserving the original event id when possible. Use when migrating or syncing an external .ics event. For creating a brand-new event from structured fields, use events create instead.

calendar_watch_events

Open a push-notification channel for event changes on a Google Calendar. Use when an app needs webhook alerts for creates/updates/deletes — not for reading the schedule (use events list). Returns a channel with id and expiration. Requires calendar_id.

calendar_list_event_instances

List expanded instances of a recurring Google Calendar event within a time range. Use when you need each occurrence of a series (with concrete start/end times), not the master recurring event. Pass calendar_id and event_id of the recurring series. For ordinary event browsing, use events list instead. Returns one page; pass the response's next_cursor to fetch subsequent pages.

calendar_query_free_busy

Get free/busy information for a set of calendars in Google Calendar. Requires timeMin, timeMax, and items with calendar or group ids. Returns busy time ranges and any errors per calendar.

list_all_people_search_contacts

Get a list of contacts matching the query in Google Calendar. Requires query and readMask. Returns matched contacts with fields specified in readMask such as names, emailAddresses, phoneNumbers, and organizations.

get_single_people_search_contact_by_id

Get information about a specific contact by id in Google Calendar. Requires personFields parameter specifying which fields to return such as names, emailAddresses, phoneNumbers, and organizations.

delete_a_people_search_contact_by_id

Delete a contact person by id in Google Calendar. The response is empty if successful. Non-contact data will not be deleted. Mutate requests must be sent sequentially to avoid latency and failures.

list_all_people_other_contacts

Get a list of other contacts matching the query in Google Calendar. Requires query and readMask parameters. Returns matched contacts with fields emailAddresses, metadata, names, and phoneNumbers.

calendar_list_acl

List who can access a Google Calendar and their roles (reader, writer, owner). Use when auditing sharing or resolving who has access before changing permissions. Pass calendar_id. Results are summaries; fetch a full record via this resource's get method. Returns one page; pass the response's next_cursor to fetch subsequent pages.

calendar_get_acl_rule

Read one ACL rule for a Google Calendar: the subject (user/group/domain) and their role. Use when inspecting a known sharing rule. Obtain id from calendar ACL. Requires calendar_id.

calendar_delete_acl_rule

Revoke a Google Calendar sharing rule by deleting an ACL entry. Use when removing someone's access. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from calendar ACL. Requires calendar_id.

calendar_update_acl_rule

Change the role or scope of an existing Google Calendar ACL rule. Use when upgrading/downgrading someone's access. Obtain id from calendar ACL. Requires calendar_id.

calendar_create_acl_rule

Grant access to a Google Calendar by creating an ACL rule (role + scope). Use when sharing a calendar with a user, group, or domain. Returns the created rule including its id. Requires calendar_id.

calendar_watch_acl

Open a push-notification channel for ACL changes on a Google Calendar. Use when an app needs webhook alerts when sharing rules change — not for listing ACL (use calendar ACL). Requires calendar_id.

calendar_stop_channel

Stop watching resources through a channel in Google Calendar. Returns an empty response on success.

calendar_list_colors

List the palette of calendar and event color ids with background/foreground hex values. Use when mapping a colorId on a calendar or event to a display color. Read-only; does not change any calendar.

calendar_list_settings

List the authenticated user's Google Calendar settings (locale, time zone, default event duration, etc.). Use when reading preference values that affect how events are displayed or created. Returns one page; pass the response's next_cursor to fetch subsequent pages.

calendar_get_setting

Read one Google Calendar user setting by id (key/value). Use when you need a specific preference such as timezone or locale. Obtain id from settings.

calendar_watch_settings

Open a push-notification channel for Google Calendar settings changes. Use when an app needs webhook alerts for preference updates — not for reading settings (use settings list).

Why Truto

Why use Truto’s MCP server for Google Calendar

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 700+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

Unified APIs

Unified APIs for Google Calendar

Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.

Unified User Directory API

Unified Calendar API

Availability

Represents the availability of a person in a time period.

View Docs

Calendars

Represents a calendar of a user. Can have multiple events associated with it.

View Docs

Contacts

View Docs

Events

Events are the time-bound tasks that are associated with a calendar.

View Docs

Unified Search API

Search

Search endpoint for all the apps.

View Docs

How It Works

From zero to integrated

Go live with Google Calendar in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Google Calendar account

Use Truto’s frontend SDK to connect your customer’s Google Calendar account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Google Calendar

Truto’s Proxy API is a 1-to-1 mapping of the Google Calendar API. You call us, we call Google Calendar, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Google Calendar’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Google Calendar on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

What authentication method does the Google Calendar integration use?

Truto handles OAuth 2.0 authentication with Google on your behalf. Your end users go through a standard Google consent flow to grant calendar access, and Truto manages token storage, refresh, and revocation automatically.

Can I receive real-time notifications when a user's calendar changes?

Yes. Truto supports watch endpoints for events, calendar lists, ACLs, and settings. You can set up webhook channels via googlecalendar_events_watch, googlecalendar_calendar_lists_watch, and others to receive push notifications when data changes, eliminating the need for constant polling.

How does the integration handle recurring events?

You can use the list_all_googlecalendar_event_instances endpoint to expand a recurring event series into its individual occurrences. This lets you manage, update, or track each instance independently without affecting the entire series.

Can I query availability without reading full event details?

Yes. The list_all_googlecalendar_free_busy endpoint returns only busy/free time ranges for specified calendars within a time window, without exposing event titles, descriptions, or attendee lists — ideal for booking flows where privacy matters.

Which Unified APIs map to Google Calendar resources?

Google Calendar is covered by the Unified Calendar API (Events, Calendars, Availability, Contacts), the Unified User Directory API (Me for user info), and the Unified Search API. This means you can write integration code once and extend to other scheduling providers later.

Can I tag events with custom metadata to link them back to my application's records?

Yes. When creating or updating events via create_a_googlecalendar_event or update_a_googlecalendar_event_by_id, you can attach extended properties (private or shared) to events. You can then filter events by these custom keys when listing, making it straightforward to map Google Calendar events to your internal entities.

Google Calendar

Get Google Calendar integrated into your app

Our team understands what it takes to make a Google Calendar integration successful. A short, crisp 30 minute call with folks who understand the problem.