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 usUse Cases
Why integrate with Google Calendar
Common scenarios for SaaS companies building Google Calendar integrations for their customers.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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_googlecalendar_userinfo
Returns information about the currently authenticated user in Google Calendar.
list_all_googlecalendar_calendar_lists
Returns the calendars on the user's calendar list. You can filter the results using optional query parameters such as minAccessRole to restrict results by access level, showDeleted to include deleted calendars, and showHidden to include hidden ones.
get_single_googlecalendar_calendar_list_by_id
Retrieves detailed information about a specific calendar from the user's calendar list. It always requires the ID to fetch.
create_a_googlecalendar_calendar_list
Create an access control rule for a calendar in Google Calendar. Requires calendar id and a request body with scope type and role. Returns the created ACL rule including its id, scope, and role.
update_a_googlecalendar_calendar_list_by_id
Update an existing calendar on the user's calendar list in Google Calendar using id. Returns the updated calendar resource including etag for versioning.
delete_a_googlecalendar_calendar_list_by_id
Delete a calendar from the user's calendar list in Google Calendar. Requires calendarId as id. Returns an empty response body on success.
googlecalendar_calendar_lists_watch
Watch for changes to CalendarList resources in Google Calendar. Requires a request body with id, type, and address to create a notification channel. Returns channel id, resourceId, resourceUri, token, and expiration timestamp.
get_single_googlecalendar_calendar_by_id
Get metadata for a calendar by id in Google Calendar. Returns fields such as summary, description, timeZone, and location.
create_a_googlecalendar_calendar
Create a secondary calendar with summary in Google Calendar. Returns the created calendar's id and other calendar details.
update_a_googlecalendar_calendar_by_id
Update metadata for a calendar using id in Google Calendar. Returns updated calendar fields including etag for versioning.
delete_a_googlecalendar_calendar_by_id
Delete a secondary calendar by id in Google Calendar. Returns an empty response body on success. Use calendars.clear for clearing events on primary calendars.
googlecalendar_calendars_clear
Clear all events from the calendar identified by id in Google Calendar. This deletes all events associated with the specified calendar. The response is empty if successful.
list_all_googlecalendar_events
Returns events on the specified calendar. Use the required query parameter calendarId to specify which calendar to retrieve events from. This endpoint supports a variety of optional query parameters to filter and customize the list of returned events. You can filter by event type using eventTypes (e.g., birthday, focusTime, outOfOffice), or search for a specific event using iCalUID. Use maxAttendees to limit the number of attendees returned per event, and orderBy to sort results by startTime or updated. The privateExtendedProperty and sharedExtendedProperty parameters allow filtering events by custom key-value metadata. The q parameter performs a free text search across several fields: summary, description, location, attendee's displayName, attendee's email, organizer's displayName, organizer's email, workingLocationProperties.officeLocation.buildingId, deskId, label, and workingLocationProperties.customLocation.label. You can include deleted events using showDeleted, hidden invitations with showHiddenInvitations, or expand recurring events into single instances using singleEvents. Use timeMin and timeMax to set the date range, timeZone to define the time zone used in responses, and updatedMin to return only events updated since a specific time.
create_a_googlecalendar_event
Creates an event in the specified calendar. The calendarId is required to identify which calendar the event should be added to.
get_single_googlecalendar_event_by_id
Returns a single event on the specified calendar. It always requires an ID to fetch. Use the required parameter calendar_id to identify which calendar to retrieve the event.
update_a_googlecalendar_event_by_id
Update an event in the specified calendar. This operation always requires the ID to identify which event to update. Additionally, the calendarId is required to specify which calendar the event belongs to.
googlecalendar_events_quick_add
Create an event in Google Calendar using calendar_id and text describing the event. Returns the created event resource including id, summary, start, and end times.
googlecalendar_events_move
Move an event identified by id from calendar_id to a destination calendar in Google Calendar. Only default events can be moved. Returns the updated event resource including the updated timestamp.
delete_a_googlecalendar_event_by_id
Delete a single event on the specified calendar. The calendarId parameter is required to specify which calendar the event belongs to, and an ID is always required to perform the deletion. You can also use the optional sendUpdates parameter to control who receives a notification about the event being deleted.
googlecalendar_events_import
Import an event to a calendar in Google Calendar using calendar_id and an Events resource with required start, end, and iCalUID fields. Returns the imported event with its id and details.
googlecalendar_events_watch
Watch for changes to Events in Google Calendar for calendar_id. Returns channel id, resourceId, resourceUri, token, and expiration timestamp.
list_all_googlecalendar_event_instances
Get instances of a recurring event by calendar_id and id in Google Calendar. Returns event details including summary, start and end times, and status for each instance.
list_all_googlecalendar_free_busy
Retrieves free/busy availability information for a list of specified calendars or groups within a defined time range. You must provide timeMin and timeMax parameters to set the start and end of the interval in RFC3339 format, and items, which is a list of calendar or group IDs to query. Optionally, you can specify a timeZone to format the response (defaults to UTC), set a groupExpansionMax to limit the number of calendar identifiers returned for a group (maximum 100), and define a calendarExpansionMax to restrict how many individual calendars are included in the response (maximum 50).
list_all_googlecalendar_search_contacts
Provides a list of contacts from the authenticated user's grouped contacts that match the given search query. The required query parameter performs a prefix match on fields such as names, nickNames, emailAddresses, phoneNumbers, and organizations. The readMask parameter is also required and specifies which fields to return for each contact, using a comma-separated list in FieldMask format (e.g., names, emailAddresses, phoneNumbers, etc.). The optional sources query parameter can be used to control which source types to return.
get_single_googlecalendar_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_googlecalendar_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_googlecalendar_other_contacts
Returns a list of contacts from the authenticated user's other contacts that match the search query. The "query" parameter is required and performs a prefix match against the contact's names, emailAddresses, and phoneNumbers fields. The "readMask" parameter is also required and specifies which fields to return for each contact, such as names, emailAddresses, phoneNumbers, or metadata, using a comma-separated list in FieldMask format.
list_all_googlecalendar_acl
Get the access control list rules for the calendar with calendar_id in Google Calendar. Returns items with ACL rules including kind, etag, and tokens for pagination or synchronization.
get_single_googlecalendar_acl_by_id
Get an access control rule for a calendar in Google Calendar using calendar_id and id. Returns fields id and role representing the rule identifier and its access role.
delete_a_googlecalendar_acl_by_id
Delete an access control rule for a calendar in Google Calendar. Requires calendar_id and id. Returns an empty response body on success.
update_a_googlecalendar_acl_by_id
Update an access control rule for a calendar in Google Calendar using calendar_id and id. Returns the updated ACL resource including scope and role.
create_a_googlecalendar_acl
Create an access control rule for a calendar in Google Calendar using calendar_id. Returns the created ACL rule including role and scope details.
googlecalendar_acl_watch
Watch for changes to ACL resources for calendar identified by calendar_id in Google Calendar. Returns channel id, resourceId, resourceUri, token, and expiration timestamp.
googlecalendar_channels_stop
Stop watching resources through a channel in Google Calendar. Returns an empty response on success.
list_all_googlecalendar_colors
Get color definitions for calendars and events in Google Calendar. Returns calendar and event color IDs with their background and foreground color codes.
list_all_googlecalendar_settings
Get all user settings for the authenticated user in Google Calendar. Returns settings including id and value fields. Supports maxResults, pageToken, and syncToken for pagination and incremental sync.
get_single_googlecalendar_setting_by_id
Get a single user setting by id in Google Calendar. Returns the setting's id and value.
googlecalendar_settings_watch
Watch for changes to Settings resources in Google Calendar. Requires a request body with id, type, and address to create a notification channel. Returns channel id, resourceId, resourceUri, token, and expiration timestamp.
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 650+ integrations.
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.
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.
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.
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.
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.
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.
How It Works
From zero to integrated
Go live with Google Calendar in under an hour. No boilerplate, no maintenance burden.
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.
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.
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.
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.
Talk to us