Schedule meetings and manage your calendar events
GAIA connects to it via MCP (Model Context Protocol) and exposes every action as a natural-language command. Tell GAIA what you want and it handles the rest, automatically.
Acl Delete
Deletes an access control rule from a Google Calendar. Use when you need to remove sharing permissions for a user, group, or domain.
Acl Get
Retrieves a specific access control rule for a calendar. Use when you need to check permissions for a specific user, group, or domain.
Acl Insert
Creates an access control rule for a calendar. Use when you need to grant sharing permissions to a user, group, or domain.
Acl Patch
Updates an existing access control rule for a calendar using patch semantics (partial update). This allows modifying specific fields without affecting other properties. IMPORTANT: The ACL rule must already exist on the calendar. This action cannot create new rules. If you receive a 404 Not Found error, the rule does not exist - use ACL insert to create it first, or use ACL list to verify available rules. Each patch request consumes three quota units. For domain-type ACL rules, if PATCH fails with 500 error, this action will automatically fallback to UPDATE method.
Acl Watch
Tool to watch for changes to ACL resources. Use when you need to set up real-time notifications for access control list modifications on a calendar.
Batch Events
Execute up to 1000 event mutations (create/patch/delete) in one Google Calendar HTTP batch request with per-item status/results. Use this to materially reduce round-trips for bulk operations like migrations, cleanup, or large-scale updates.
Calendar List Delete
Tool to remove a calendar from the user's calendar list. Use when you need to unsubscribe from or hide a calendar from the user's list.
Calendar List Get
Retrieves metadata for a SINGLE specific calendar from the user's calendar list by its calendar ID. This action requires a calendarId parameter and returns details about that one calendar only. NOTE: This does NOT list all calendars. To list all calendars in the user's calendar list, use GOOGLECALENDAR_CALENDAR_LIST_LIST instead.
Calendar List Insert
Inserts an existing calendar into the user's calendar list.
Calendar List List
Returns the calendars on the user's calendar list. Use when you need to retrieve all calendars visible to the authenticated user.
Calendar List Patch
Updates an existing calendar on the user's calendar list using patch semantics. This method allows partial updates, modifying only the specified fields.
Calendar List Update
Updates an existing entry on the user's calendar list.
Calendar List Watch
Watch for changes to CalendarList resources using push notifications. Use this to receive real-time updates when calendar list entries are modified.
Calendars Delete
Deletes a secondary calendar that you own or have delete permissions on. You cannot delete your primary calendar or calendars you only have read/write access to. Use calendarList.list to find calendars with owner accessRole. For primary calendars, use calendars.clear instead.
Calendars Update
Updates metadata for a calendar.
Channels Stop
Tool to stop watching resources through a notification channel. Use when you need to discontinue push notifications for a specific channel subscription.
Clear Calendar
Clears a primary calendar. This operation deletes all events associated with the primary calendar of an account.
Colors Get
Returns the color definitions for calendars and events. Use when you need to retrieve the available color palette for styling calendars or events.
Create Event
Create an event using start_datetime plus event_duration_hour and event_duration_minutes fields to derive the end time. Requires calendar write access. The organizer is added as an attendee unless exclude_organizer is True. By default, attempts to create a Google Meet link for the event (create_meeting_room defaults to True). Workspace accounts will receive a Meet link, while personal Gmail accounts will gracefully fallback to creating an event without a Meet link when conference creation fails. Set create_meeting_room to False to explicitly skip Meet link creation. Example request to create event for 1 hour 30 minutes: { "calendar_id": "primary", "start_datetime": "2025-01-16T13:00:00", "timezone": "America/New_York", "event_duration_hour": 1, "event_duration_minutes": 30, "summary": "Client sync", "attendees": [{"email": "guest@example.com"}] }
Delete Event
Deletes a specified event by event_id from a Google Calendar (calendar_id); this action is idempotent and raises a 404 error if the event is not found.
Duplicate Calendar
Creates a new, empty Google Calendar with the specified title (summary).
Events Get
Retrieves a SINGLE event by its unique event_id (REQUIRED). This action does NOT list or search events - it fetches ONE specific event when you already know its ID. If you want to list events within a time range, search for events, or filter by criteria like time_min/time_max, use GOOGLECALENDAR_EVENTS_LIST instead.
Events Import
Tool to import an event as a private copy to a calendar. Use when you need to add an existing event to a calendar using its iCalUID. Only events with eventType='default' can be imported.
Events Instances
Returns instances of the specified recurring event.
Events List
Returns events on the specified calendar.
Events List All Calendars
Return a unified event list across all calendars in the user's calendar list for a given time range. Use when you need a single view of all events across multiple calendars.
Events Move
Moves an event to another calendar, i.e., changes an event's organizer.
Events Watch
Watch for changes to Events resources.
Find Event
Finds events in a specified Google Calendar using text query, time ranges (event start/end, last modification), and event types; ensure timeMin is not chronologically after timeMax if both are provided.
Find Free Slots
Finds both free and busy time slots in Google Calendars for specified calendars within a defined time range (defaults to the current day UTC if time_min/time_max are omitted). Returns busy intervals enriched with event details and calculates free slots by finding gaps between busy periods; time_min must precede time_max if both are provided. This action retrieves free and busy time slots for the specified calendars over a given time period. It analyzes the busy intervals from the calendars and provides calculated free slots based on the gaps in the busy periods.
Free Busy Query
Returns free/busy information for a set of calendars.
Get Calendar
Retrieves a specific Google Calendar, identified by calendar_id, to which the authenticated user has access.
Get Current Date Time
Gets the current date and time, allowing for a specific timezone offset.
List Acl Rules
Retrieves the list of access control rules (ACLs) for a specified calendar, providing the necessary 'rule_id' values required for updating specific ACL rules.
List Calendars
Retrieves calendars from the user's list, with options for pagination and filtering.
List Settings
Tool to return all user settings for the authenticated user. Use when you need to retrieve calendar settings.
Patch Calendar
Partially updates (PATCHes) an existing Google Calendar, modifying only the fields provided; summary is mandatory and cannot be an empty string, and an empty string for description or location clears them.
Patch Event
Update specified fields of an existing event in a using patch semantics (array fields like attendees are fully replaced if provided); ensure the calendar_id and event_id are valid and the user has write access to the calendar.
Quick Add
Parses natural language text to quickly create a basic event with its title, date, and time, suitable for simple scheduling; does not support direct attendee addition or recurring events, and calendar_id must be valid if not 'primary'.
Remove Attendee
Removes an attendee from a specified event in a Google Calendar; the calendar and event must exist.
Settings Get
Tool to return a single user setting for the authenticated user. Use when you need to retrieve a specific calendar setting value.
Settings List
Returns all user settings for the authenticated user.
Settings Watch
Watch for changes to Settings resources.
Sync Events
Synchronizes events, performing a full sync if no sync_token is provided or if a 410 GONE error (due to an expired token) necessitates it, otherwise performs an incremental sync for events changed since the sync_token was issued.
Update Acl Rule
Updates an access control rule for the specified calendar.
Update Event
Updates an existing event in Google Calendar. REQUIRES event_id - you MUST first search for the event using GOOGLECALENDAR_FIND_EVENT or GOOGLECALENDAR_EVENTS_LIST to obtain the event_id. This is a full PUT replacement, so provide all desired fields as unspecified ones may be cleared or reset.
Custom Create Event
CALENDAR: CREATE EVENT(S) Creates one or more calendar events. Supports batch creation with ID mapping for adding recurrence. TIMEZONE: Use ISO format with user's timezone: "2025-01-15T10:00:00" Args: events (List): List of events to create, each with: - summary (str): Required. Title. - start_datetime (str): Required. Start time (ISO format). - end_datetime (str): Optional. End time (ISO format, same style as start). Omit for a 30min event. For all-day events this is the last day (inclusive). - calendar_id (str): Calendar ID, default "primary". - description, location, attendees: Optional. - is_all_day (bool): Default False. Returns: { "created": true, "created_events": [{"index": 0, "summary": "...", "event_id": "abc123",...}], "errors": [{"index": 1, "summary": "...", "error": "..."}] } Creation is immediate; under approval gating the approval card confirms. Use event_id with ADD_RECURRENCE to make events recurring. A non-empty "errors" means only some events were created: tell the user which failed.
Custom List Calendars
CALENDAR: LIST CALENDARS Lists all calendars accessible to the user. Args: short (bool): If True (default), return only essential fields (id, summary, description, backgroundColor). Returns: Dict with success status and list of calendars.
Custom Get Day Summary
CALENDAR: GET DAY SUMMARY Gets a quick summary of a day's schedule including events, busy hours, and next upcoming event. Uses user's timezone from their profile preferences. USE THIS TOOL FIRST when user asks: • "What does my day look like?" • "What's on my schedule today/tomorrow?" • "Am I busy on Thursday?" Args: date (str): Optional. Date to get summary for (YYYY-MM-DD). Defaults to today. Returns: { "date": "2025-01-15", "events": [...], "total_events": N, "next_event": {...} or null, "busy_hours": 5.5 }
Custom Fetch Events
CALENDAR: FETCH EVENTS Fetches events from one or more calendars within an optional time range. USAGE: • "What does my day look like?" → calendar_ids=None (fetches ALL selected calendars) • Events from specific calendar → calendar_ids=["calendar_id_here"] • Events from primary only → calendar_ids=["primary"] DEFAULT BEHAVIOR: If calendar_ids is None, fetches from ALL user's selected calendars. Args: calendar_ids (List[str]): Optional. Calendar IDs to fetch from. If None, fetches from all selected calendars. time_min (str): Optional. Start time filter in ISO format. Defaults to current time. time_max (str): Optional. End time filter in ISO format. max_results (int): Maximum events to return (1-250), default 50. Returns: Dict with success status, events list, calendars_fetched, and has_more flag.
Custom Find Event
CALENDAR: SEARCH/FIND EVENT Searches for events by text query. Searches event titles, descriptions, and other text fields. Args: query (str): Required. Search query text. calendar_id (str): Calendar ID to search, default "primary". time_min (str): Optional. Start time filter in ISO format. time_max (str): Optional. End time filter in ISO format. Returns: Dict with success status, matching events, and count.
Custom Get Event
CALENDAR: GET EVENT(S) Gets one or more calendar events by ID. Args: events (List): List of events to get, each with: - event_id (str): Required. The event ID. - calendar_id (str): Calendar ID, default "primary". Returns: { "events": [{"event_id": "...", "calendar_id": "...", "event": {...}}], "errors": [{"event_id": "...", "calendar_id": "...", "error": "..."}] } A non-empty "errors" means only some events were retrieved: tell the user which failed.
Custom Delete Event
CALENDAR: DELETE EVENT(S) Deletes one or more calendar events. Args: events (List): List of events to delete, each with: - event_id (str): Required. The event ID. - calendar_id (str): Calendar ID, default "primary". send_updates (str): Notify attendees: 'all', 'externalOnly', 'none'. Default 'all'. Returns: { "deleted": [{"event_id": "...", "calendar_id": "..."}], "errors": [{"event_id": "...", "calendar_id": "...", "error": "..."}] } A non-empty "errors" means only some events were deleted: tell the user which failed.
Custom Patch Event
CALENDAR: UPDATE/PATCH EVENT Updates an existing calendar event. Only the fields provided will be updated. Args: event_id (str): Required. The event ID to update. calendar_id (str): Calendar ID, default "primary". summary (str): Optional. New title. description (str): Optional. New description. start_datetime (str): Optional. New start time (ISO format). end_datetime (str): Optional. New end time (ISO format). location (str): Optional. New location. attendees (List[str]): Optional. New attendees list. send_updates (str): Notify attendees: 'all', 'externalOnly', 'none'. Default 'all'. Returns: Dict with success status and updated event details.
Custom Add Recurrence
CALENDAR: ADD RECURRENCE Adds a recurrence pattern to an existing event. Use this to make an event repeating. RECURRENCE PATTERNS (RFC 5545): FREQUENCY VALUES: - "DAILY": Repeats every N days - "WEEKLY": Repeats every N weeks (use by_day for specific days) - "MONTHLY": Repeats every N months - "YEARLY": Repeats every N years EXAMPLES: 1. Every Monday and Wednesday: frequency="WEEKLY", by_day=["MO", "WE"] 2. Every 2 weeks on Friday: frequency="WEEKLY", interval=2, by_day=["FR"] 3. Daily for 10 occurrences: frequency="DAILY", count=10 4. Weekly until Dec 31, 2025: frequency="WEEKLY", until_date="2025-12-31", by_day=["MO"] 5. Monthly on the first Monday: frequency="MONTHLY", by_day=["1MO"] RULES: - Use either 'count' OR 'until_date', not both - by_day values: 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA' - Can prefix with number for nth occurrence (e.g., '1MO' = first Monday) Args: event_id (str): Required. Event ID to add recurrence to. calendar_id (str): Calendar ID, default "primary". frequency (str): Required. One of: "DAILY", "WEEKLY", "MONTHLY", "YEARLY". interval (int): Interval between occurrences, default 1. count (int): Optional. Number of occurrences (don't use with until_date). until_date (str): Optional. End date "YYYY-MM-DD" (don't use with count). by_day (List[str]): Optional. Days of week: 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'. Returns: Dict with success status, updated event, and RRULE string.
Custom Gather Context
Get context snapshot: today's events, busy hours, free slots. Zero required parameters. Returns today's schedule for situational awareness.
Featured and community workflows that automate this integration with GAIA. Clone any of them in one click.
Set up the automation in three simple steps, no code required.
Connect Google Calendar to GAIA
Open the GAIA Marketplace, find Google Calendar, and click "Add to your GAIA". You'll be redirected to Google's OAuth consent screen. Grant calendar access and you're connected in under two minutes.
Tell GAIA what to schedule in plain English
Say things like "block two hours tomorrow for deep work" or "schedule a 30-minute call with Alex on Friday at 3 PM and send him an invite". GAIA understands context and handles the details.
GAIA manages your calendar automatically
GAIA can monitor your calendar, send you proactive reminders before events, and trigger workflows, like sending a Slack message when a meeting is about to start.
Everything you need to know about connecting it to GAIA.
This integration is just one piece of the puzzle. GAIA integrates with the rest of your tools across productivity, communication, productivity, and more, letting you build cross-tool automations in plain English without writing a single line of code.
Browse all integrationsMore Productivity integrations you can connect to GAIA.