> ## Documentation Index
> Fetch the complete documentation index at: https://docs.caylex.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Calendar

> Seamless AI integration for event management

The Google Calendar MCP Server integrates seamlessly with AI agents, providing comprehensive event management capabilities, enabling efficient scheduling, daily planning, and meeting coordination.

## Server Details

| Property       | Value                                               |
| -------------- | --------------------------------------------------- |
| **Transport**  | Streamable HTTP                                     |
| **Hosting**    | Remote (externally hosted)                          |
| **Categories** | Calendar & Scheduling, Scheduling & Booking, Google |

## Authentication

This server supports the following authentication method:

### OAuth

**Scopes:** `openid`, `email`, `profile`, `https://www.googleapis.com/auth/calendar`

During the server onboarding flow, you will be prompted to complete the OAuth flow to grant access. See the [Google Calendar Authentication guide](/oauth-guides/google-calendar) for step-by-step credential configuration.

## Getting Started

<Steps>
  <Step title="Add the server">
    Navigate to the **Server Library** and click on the **New Server** button. Find **Google Calendar** in the Caylex Catalog.
  </Step>

  <Step title="Server Onboarding flow">
    Go through the server onboarding flow.
  </Step>

  <Step title="Use in a project">
    Add the server to a [project](https://app.caylex.dev/projects) by configuring project connections. Its tools are now available to any agents connected to that project.
  </Step>
</Steps>

## Available Tools

This server provides **9** tools:

<AccordionGroup>
  <Accordion title="calendar_list_calendars">
    Retrieves a list of calendars accessible to the authenticated user.

    Use calendar\_get\_current\_user to get the user\_google\_email or account information.

    Args:
    user\_google\_email (str): The user's Google email address. Required.

    Returns:
    str: A formatted list of the user's calendars (summary, ID, primary status).
  </Accordion>

  <Accordion title="calendar_modify_event">
    Modifies an existing event.

    Use calendar\_get\_current\_user to get the user\_google\_email or account information.

    Args:
    user\_google\_email (str): The user's Google email address. Required.
    event\_id (str): The ID of the event to modify.
    calendar\_id (str): Calendar ID (default: 'primary').
    summary (Optional\[str]): New event title.
    start\_time (Optional\[str]): New start time (RFC3339, e.g., "2023-10-27T10:00:00-07:00" or "2023-10-27" for all-day).
    end\_time (Optional\[str]): New end time (RFC3339, e.g., "2023-10-27T11:00:00-07:00" or "2023-10-28" for all-day).
    description (Optional\[str]): New event description.
    location (Optional\[str]): New event location.
    attendees (Optional\[Union\[List\[str], List\[Dict\[str, Any]]]]): Attendees as email strings or objects with metadata. Supports: \["[email@example.com](mailto:email@example.com)"] or \[\{"email": "[email@example.com](mailto:email@example.com)", "responseStatus": "accepted", "organizer": true, "optional": true}]. When using objects, existing metadata (responseStatus, organizer, optional) is preserved. New attendees default to responseStatus="needsAction".
    timezone (Optional\[str]): New timezone (e.g., "America/New\_York").
    add\_google\_meet (Optional\[bool]): Whether to add or remove Google Meet video conference. If True, adds Google Meet; if False, removes it; if None, leaves unchanged.
    reminders (Optional\[Union\[str, List\[Dict\[str, Any]]]]): JSON string or list of reminder objects to replace existing reminders. Each should have 'method' ("popup" or "email") and 'minutes' (0-40320). Max 5 reminders. Example: '\[\{"method": "popup", "minutes": 15}]' or \[\{"method": "popup", "minutes": 15}]
    use\_default\_reminders (Optional\[bool]): Whether to use calendar's default reminders. If specified, overrides current reminder settings.
    transparency (Optional\[str]): Event transparency for busy/free status. "opaque" shows as Busy, "transparent" shows as Available/Free. If None, preserves existing transparency setting.
    visibility (Optional\[str]): Event visibility. "default" uses calendar default, "public" is visible to all, "private" is visible only to attendees, "confidential" is same as private (legacy). If None, preserves existing visibility setting.
    color\_id (Optional\[str]): Event color ID (1-11). If None, preserves existing color.
    guests\_can\_modify (Optional\[bool]): Whether attendees other than the organizer can modify the event. If None, preserves existing setting.
    guests\_can\_invite\_others (Optional\[bool]): Whether attendees other than the organizer can invite others to the event. If None, preserves existing setting.
    guests\_can\_see\_other\_guests (Optional\[bool]): Whether attendees other than the organizer can see who the event's attendees are. If None, preserves existing setting.

    Returns:
    str: Confirmation message of the successful event modification with event link.
  </Accordion>

  <Accordion title="calendar_create_event">
    Creates a new event.

    Use calendar\_get\_current\_user to get the user\_google\_email or account information.

    Args:
    user\_google\_email (str): The user's Google email address. Required.
    summary (str): Event title.
    start\_time (str): Start time (RFC3339, e.g., "2023-10-27T10:00:00-07:00" or "2023-10-27" for all-day).
    end\_time (str): End time (RFC3339, e.g., "2023-10-27T11:00:00-07:00" or "2023-10-28" for all-day).
    calendar\_id (str): Calendar ID (default: 'primary').
    description (Optional\[str]): Event description.
    location (Optional\[str]): Event location.
    attendees (Optional\[List\[str]]): Attendee email addresses.
    timezone (Optional\[str]): Timezone (e.g., "America/New\_York").
    attachments (Optional\[List\[str]]): List of Google Drive file URLs or IDs to attach to the event.
    add\_google\_meet (bool): Whether to add a Google Meet video conference to the event. Defaults to False.
    reminders (Optional\[Union\[str, List\[Dict\[str, Any]]]]): JSON string or list of reminder objects. Each should have 'method' ("popup" or "email") and 'minutes' (0-40320). Max 5 reminders. Example: '\[\{"method": "popup", "minutes": 15}]' or \[\{"method": "popup", "minutes": 15}]
    use\_default\_reminders (bool): Whether to use calendar's default reminders. If False, uses custom reminders. Defaults to True.
    transparency (Optional\[str]): Event transparency for busy/free status. "opaque" shows as Busy (default), "transparent" shows as Available/Free. Defaults to None (uses Google Calendar default).
    visibility (Optional\[str]): Event visibility. "default" uses calendar default, "public" is visible to all, "private" is visible only to attendees, "confidential" is same as private (legacy). Defaults to None (uses Google Calendar default).
    guests\_can\_modify (Optional\[bool]): Whether attendees other than the organizer can modify the event. Defaults to None (uses Google Calendar default of False).
    guests\_can\_invite\_others (Optional\[bool]): Whether attendees other than the organizer can invite others to the event. Defaults to None (uses Google Calendar default of True).
    guests\_can\_see\_other\_guests (Optional\[bool]): Whether attendees other than the organizer can see who the event's attendees are. Defaults to None (uses Google Calendar default of True).

    Returns:
    str: Confirmation message of the successful event creation with event link.
  </Accordion>

  <Accordion title="calendar_delete_event">
    Deletes an existing event.

    Use calendar\_get\_current\_user to get the user\_google\_email or account information.

    Args:
    user\_google\_email (str): The user's Google email address. Required.
    event\_id (str): The ID of the event to delete.
    calendar\_id (str): Calendar ID (default: 'primary').

    Returns:
    str: Confirmation message of the successful event deletion.
  </Accordion>

  <Accordion title="calendar_get_current_time">
    Get the accurate current date and time in the user's timezone.

    Use calendar\_get\_current\_user to get the user\_google\_email or account information.
    CRITICAL: Always call this tool FIRST before any calendar operations
    (creating, updating, listing, or scheduling events) to prevent using
    outdated time information.
    NOTE: If current time information is already provided in the system prompt
    or context, you do NOT need to call this tool.

    Args:
    user\_google\_email (str): The user's Google email address. Required.

    Returns:
    str: JSON object containing the current datetime, timezone, date, time, and day of the week.
  </Accordion>

  <Accordion title="calendar_add_attendees_to_event">
    Add attendees to an existing event in Google Calendar.

    Use calendar\_get\_current\_user to get the user\_google\_email or account information.
    Automatically deduplicates: if an attendee is already on the event, they are skipped.

    Args:
    user\_google\_email (str): The user's Google email address. Required.
    event\_id (str): The ID of the event to add attendees to.
    attendees (List\[str]): List of attendee email addresses to add.
    calendar\_id (str): The ID of the calendar containing the event. Defaults to 'primary'.
    send\_updates (str): Specifies which attendees to notify about the change ('all', 'externalOnly', 'none'). Defaults to 'all'.

    Returns:
    str: Confirmation message with the list of newly added attendees and a link to the event.
  </Accordion>

  <Accordion title="calendar_get_events">
    Retrieves events from a specified Google Calendar. Can retrieve a single event by ID or multiple events within a time range.

    Use calendar\_get\_current\_user to get the user\_google\_email or account information.
    You can also search for events by keyword by supplying the optional "query" param.

    Args:
    user\_google\_email (str): The user's Google email address. Required.
    calendar\_id (str): The ID of the calendar to query. Use 'primary' for the user's primary calendar. Defaults to 'primary'. Calendar IDs can be obtained using `calendar_list_calendars`.
    event\_id (Optional\[str]): The ID of a specific event to retrieve. If provided, retrieves only this event and ignores time filtering parameters.
    time\_min (Optional\[str]): The start of the time range (inclusive) in RFC3339 format (e.g., '2024-05-12T10:00:00Z' or '2024-05-12'). If omitted, defaults to the current time. Ignored if event\_id is provided.
    time\_max (Optional\[str]): The end of the time range (exclusive) in RFC3339 format. If omitted, events starting from `time_min` onwards are considered (up to `max_results`). Ignored if event\_id is provided.
    max\_results (int): The maximum number of events to return. Defaults to 25. Ignored if event\_id is provided.
    query (Optional\[str]): A keyword to search for within event fields (summary, description, location). Ignored if event\_id is provided.
    detailed (bool): Whether to return detailed event information including description, location, attendees, and attendee details (response status, organizer, optional flags). Defaults to False.
    include\_attachments (bool): Whether to include attachment information in detailed event output. When True, shows attachment details (fileId, fileUrl, mimeType, title) for events that have attachments. Only applies when detailed=True. Set this to True when you need to view or access files that have been attached to calendar events, such as meeting documents, presentations, or other shared files. Defaults to False.

    Returns:
    str: A formatted list of events (summary, start and end times, link) within the specified range, or detailed information for a single event if event\_id is provided.
  </Accordion>

  <Accordion title="calendar_get_current_user">
    Returns the authenticated user's account information for use with Calendar tools. Use the returned email as user\_google\_email when calling calendar\_\* tools. Uses the Bearer token from the request's Authorization header.
  </Accordion>

  <Accordion title="calendar_query_freebusy">
    Returns free/busy information for a set of calendars.

    Use calendar\_get\_current\_user to get the user\_google\_email or account information.

    Args:
    user\_google\_email (str): The user's Google email address. Required.
    time\_min (str): The start of the interval for the query in RFC3339 format (e.g., '2024-05-12T10:00:00Z' or '2024-05-12').
    time\_max (str): The end of the interval for the query in RFC3339 format (e.g., '2024-05-12T18:00:00Z' or '2024-05-12').
    calendar\_ids (Optional\[List\[str]]): List of calendar identifiers to query. If not provided, queries the primary calendar. Use 'primary' for the user's primary calendar or specific calendar IDs obtained from `calendar_list_calendars`.
    group\_expansion\_max (Optional\[int]): Maximum number of calendar identifiers to be provided for a single group. Optional. An error is returned for a group with more members than this value. Maximum value is 100.
    calendar\_expansion\_max (Optional\[int]): Maximum number of calendars for which FreeBusy information is to be provided. Optional. Maximum value is 50.

    Returns:
    str: A formatted response showing free/busy information for each requested calendar, including busy time periods.
  </Accordion>
</AccordionGroup>

## Related Servers

<CardGroup cols={2}>
  <Card title="Gmail" href="/server-catalog/gmail" icon="https://d338mlbnszozgc.cloudfront.net/logos/gmail.svg" />

  <Card title="Google Contacts" href="/server-catalog/google-contacts" icon="https://d338mlbnszozgc.cloudfront.net/logos/google-contacts.svg" />

  <Card title="Calendly" href="/server-catalog/calendly" icon="https://d338mlbnszozgc.cloudfront.net/logos/calendly.svg" />

  <Card title="Fellow AI" href="/server-catalog/fellow-ai" icon="https://d338mlbnszozgc.cloudfront.net/logos/fellowai.jpeg" />
</CardGroup>
