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

# Google Calendar

> What agents can do in Google Calendar at each access level, and how to connect, limit, and disconnect Google Calendar.

Connect Google Calendar so your agents can work in your Google Calendar account. You choose an access level for each account, and Squad refuses any agent action outside that level.

## Access levels

Each Google Calendar account has an access level: **Read-only**, **Manage events**, and **Full access**. Squad refuses any agent action outside that level. You can also narrow or block single agents under **Per-agent access**.

| Level                           | The connect window describes this level as                  | Actions agents can use |
| ------------------------------- | ----------------------------------------------------------- | ---------------------- |
| **Read-only**                   | "See calendars and events. Cannot create, edit, or delete." | 8 of 49                |
| **Manage events** (recommended) | "Read and edit events. Cannot delete entire calendars."     | 45 of 49               |
| **Full access**                 | "See, edit, share, and delete any calendar."                | 49 of 49               |

The description of **Manage events** does not cover every action at that level. This level also allows: Clear calendar.

**Manage events** is the recommended level. The connect window selects it for you, and you can choose another level.

The Google Calendar sign-in page asks you to approve full access to your account. This is expected. Squad does not narrow the sign-in. It checks every agent action against the level you chose, and it refuses actions outside that level.

## What agents can do at each level

Each level opens with a short summary in plain tasks, then lists every action it adds, grouped by what the action works on. You do not need to name actions. Ask in plain words, and the agent searches for the matching action.

<Tip>**Find an action.** Open a level and use your browser's find (Ctrl+F, or Cmd+F on a Mac) with a word from the task or part of a slug. Or ask your agent in plain words, for example "What can you do in my Google Calendar account?" The agent can search the Google Calendar actions for you.</Tip>

Each action shows its name, a one-line description where the Google Calendar action catalog has one, and its slug. The slug is the ID that agents use when they call the action.

<AccordionGroup>
  <Accordion title="Read-only">
    Agents can use 8 of the 49 Google Calendar actions at this level:

    * View settings
    * View calendars
    * View events
    * View profiles

    All 8 actions at this level:

    | Works on          | Action                    | What it does                                                                                         | Slug                                       |
    | ----------------- | ------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------ |
    | **Calendars**     | Calendar list get         | Retrieves metadata for a SINGLE specific calendar from the user's calendar list by its calendar ID.  | `GOOGLECALENDAR_CALENDAR_LIST_GET`         |
    |                   | Events list all calendars | Return a unified event list across all calendars in the user's calendar list for a given time range. | `GOOGLECALENDAR_EVENTS_LIST_ALL_CALENDARS` |
    | **Events**        | Events get                | Retrieves a SINGLE event by its unique event\_id (REQUIRED).                                         | `GOOGLECALENDAR_EVENTS_GET`                |
    | **Profiles**      | Get calendar profile      | DEPRECATED: Use CalendarListGet instead.                                                             | `GOOGLECALENDAR_GET_CALENDAR_PROFILE`      |
    | **Settings**      | List settings             | DEPRECATED: Use GOOGLECALENDAR\_SETTINGS\_LIST instead.                                              | `GOOGLECALENDAR_LIST_SETTINGS`             |
    |                   | Settings get              | Return a single user setting for the authenticated user.                                             | `GOOGLECALENDAR_SETTINGS_GET`              |
    | **Other actions** | ACL get                   | Retrieves a specific access control rule for a calendar.                                             | `GOOGLECALENDAR_ACL_GET`                   |
    |                   | Colors get                | Returns the color definitions for calendars and events.                                              | `GOOGLECALENDAR_COLORS_GET`                |
  </Accordion>

  <Accordion title="Manage events (recommended)">
    Agents can use 45 of the 49 Google Calendar actions at this level: everything in **Read-only**, plus:

    * Search, create, update, delete, and manage events
    * Update and delete calendars
    * Delete attendees
    * Search availability
    * Stop channels
    * View resources
    * Update settings
    * View updates
    * View users

    The 37 actions that this level adds to **Read-only**:

    <AccordionGroup>
      <Accordion title="Attendees (1)">
        | Action          | What it does                                                     | Slug                             |
        | --------------- | ---------------------------------------------------------------- | -------------------------------- |
        | Remove attendee | Removes an attendee from a specified event in a Google Calendar. | `GOOGLECALENDAR_REMOVE_ATTENDEE` |
      </Accordion>

      <Accordion title="Availability (1)">
        | Action          | What it does                                                                                                 | Slug                             |
        | --------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------- |
        | Find free slots | Finds both free and busy time slots in Google Calendars for specified calendars within a defined time range. | `GOOGLECALENDAR_FIND_FREE_SLOTS` |
      </Accordion>

      <Accordion title="Calendars (8)">
        | Action               | What it does                                                                                                  | Slug                                  |
        | -------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
        | Calendar list insert | Inserts an existing calendar into the user's calendar list, making it visible in the UI.                      | `GOOGLECALENDAR_CALENDAR_LIST_INSERT` |
        | Calendar list patch  | Updates an existing calendar on the user's calendar list using patch semantics.                               | `GOOGLECALENDAR_CALENDAR_LIST_PATCH`  |
        | Calendar list watch  | Watch for changes to CalendarList resources using push notifications.                                         | `GOOGLECALENDAR_CALENDAR_LIST_WATCH`  |
        | Calendars update     | Full PUT-style update that overwrites all calendar metadata fields.                                           | `GOOGLECALENDAR_CALENDARS_UPDATE`     |
        | Clear calendar       | Clears a primary calendar by deleting all events from it.                                                     | `GOOGLECALENDAR_CLEAR_CALENDAR`       |
        | Get calendar         | Retrieves a specific Google Calendar, identified by calendar\_id, to which the authenticated user has access. | `GOOGLECALENDAR_GET_CALENDAR`         |
        | List calendars       | Retrieves calendars from the user's Google Calendar list, with options for pagination and filtering.          | `GOOGLECALENDAR_LIST_CALENDARS`       |
        | Patch calendar       | Partially updates (PATCHes) an existing Google Calendar, modifying only the fields provided.                  | `GOOGLECALENDAR_PATCH_CALENDAR`       |
      </Accordion>

      <Accordion title="Channels (1)">
        | Action        | What it does                                            | Slug                           |
        | ------------- | ------------------------------------------------------- | ------------------------------ |
        | Channels stop | Stop watching resources through a notification channel. | `GOOGLECALENDAR_CHANNELS_STOP` |
      </Accordion>

      <Accordion title="Events (12)">
        | Action           | What it does                                                                                                                                          | Slug                              |
        | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
        | Batch events     | Execute up to 1000 event mutations (create/patch/delete) in one Google Calendar HTTP batch request with per-item status/results.                      | `GOOGLECALENDAR_BATCH_EVENTS`     |
        | Create event     | Create a Google Calendar event using start\_datetime plus duration fields.                                                                            | `GOOGLECALENDAR_CREATE_EVENT`     |
        | Delete event     | Deletes a specified event by event\_id from a Google Calendar (calendar\_id).                                                                         | `GOOGLECALENDAR_DELETE_EVENT`     |
        | Events import    | Import an event as a private copy to a calendar.                                                                                                      | `GOOGLECALENDAR_EVENTS_IMPORT`    |
        | Events instances | Returns instances of the specified recurring event.                                                                                                   | `GOOGLECALENDAR_EVENTS_INSTANCES` |
        | Events list      | Returns events on the specified calendar.                                                                                                             | `GOOGLECALENDAR_EVENTS_LIST`      |
        | Events move      | Moves an event to another calendar, i.e., changes an event's organizer.                                                                               | `GOOGLECALENDAR_EVENTS_MOVE`      |
        | Events watch     | Watch for changes to Events resources.                                                                                                                | `GOOGLECALENDAR_EVENTS_WATCH`     |
        | Find event       | Finds events in a specified Google Calendar using text query, time ranges (event start/end, last modification), and event types.                      | `GOOGLECALENDAR_FIND_EVENT`       |
        | Patch event      | Update specified fields of an existing event in a Google Calendar using patch semantics (array fields like attendees are fully replaced if provided). | `GOOGLECALENDAR_PATCH_EVENT`      |
        | Sync events      | DEPRECATED: Use GOOGLECALENDAR\_EVENTS\_LIST instead.                                                                                                 | `GOOGLECALENDAR_SYNC_EVENTS`      |
        | Update event     | Updates an existing event in Google Calendar.                                                                                                         | `GOOGLECALENDAR_UPDATE_EVENT`     |
      </Accordion>

      <Accordion title="Resources (1)">
        | Action                  | What it does                                                                                                              | Slug                                     |
        | ----------------------- | ------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
        | List calendar resources | Retrieves calendar resources (such as conference rooms) from a Google Workspace domain using the Admin SDK Directory API. | `GOOGLECALENDAR_LIST_CALENDAR_RESOURCES` |
      </Accordion>

      <Accordion title="Settings (2)">
        | Action         | What it does                                          | Slug                            |
        | -------------- | ----------------------------------------------------- | ------------------------------- |
        | Settings list  | Returns all user settings for the authenticated user. | `GOOGLECALENDAR_SETTINGS_LIST`  |
        | Settings watch | Watch for changes to Settings resources.              | `GOOGLECALENDAR_SETTINGS_WATCH` |
      </Accordion>

      <Accordion title="Updates (1)">
        | Action               | What it does                                                                                                                        | Slug                                  |
        | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
        | Calendar list update | Updates a calendar list entry's display/subscription settings (color, visibility, reminders, selection) for the authenticated user. | `GOOGLECALENDAR_CALENDAR_LIST_UPDATE` |
      </Accordion>

      <Accordion title="Users (1)">
        | Action           | What it does | Slug                              |
        | ---------------- | ------------ | --------------------------------- |
        | Get current user |              | `GOOGLECALENDAR_GET_CURRENT_USER` |
      </Accordion>

      <Accordion title="Other actions (9)">
        | Action                | What it does                                                                                                                                                    | Slug                                   |
        | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
        | ACL insert            | Creates an access control rule for a calendar.                                                                                                                  | `GOOGLECALENDAR_ACL_INSERT`            |
        | ACL list              | Retrieves the list of access control rules (ACLs) for a specified calendar, providing the necessary 'rule\_id' values required for updating specific ACL rules. | `GOOGLECALENDAR_ACL_LIST`              |
        | ACL patch             | Updates an existing access control rule for a calendar using patch semantics (partial update).                                                                  | `GOOGLECALENDAR_ACL_PATCH`             |
        | ACL update            | Updates an access control rule for the specified calendar.                                                                                                      | `GOOGLECALENDAR_ACL_UPDATE`            |
        | ACL watch             | Watch for changes to ACL resources.                                                                                                                             | `GOOGLECALENDAR_ACL_WATCH`             |
        | Free busy query       | DEPRECATED: Use GOOGLECALENDAR\_FIND\_FREE\_SLOTS instead (though this tool provides wider secondary/shared calendar coverage).                                 | `GOOGLECALENDAR_FREE_BUSY_QUERY`       |
        | Get current date time | Gets the current date and time, allowing for a specific timezone offset.                                                                                        | `GOOGLECALENDAR_GET_CURRENT_DATE_TIME` |
        | List buildings        | Lists all buildings for a Google Workspace customer account with full details including addresses, coordinates, and floor names.                                | `GOOGLECALENDAR_LIST_BUILDINGS`        |
        | Quick add             | Parses natural language text to quickly create a basic Google Calendar event with its title, date, and time, suitable for simple scheduling.                    | `GOOGLECALENDAR_QUICK_ADD`             |
      </Accordion>
    </AccordionGroup>
  </Accordion>

  <Accordion title="Full access">
    Agents can use 49 of the 49 Google Calendar actions at this level: everything in **Manage events**, plus:

    * Create calendars

    The 4 actions that this level adds to **Manage events**:

    | Works on          | Action               | What it does                                                             | Slug                                  |
    | ----------------- | -------------------- | ------------------------------------------------------------------------ | ------------------------------------- |
    | **Calendars**     | Calendar list delete | Remove a calendar from the user's calendar list.                         | `GOOGLECALENDAR_CALENDAR_LIST_DELETE` |
    |                   | Calendars delete     | Deletes a secondary calendar that you own or have delete permissions on. | `GOOGLECALENDAR_CALENDARS_DELETE`     |
    |                   | Duplicate calendar   | Creates a new, empty Google Calendar with the specified title (summary). | `GOOGLECALENDAR_DUPLICATE_CALENDAR`   |
    | **Other actions** | ACL delete           | Deletes an access control rule from a Google Calendar.                   | `GOOGLECALENDAR_ACL_DELETE`           |
  </Accordion>
</AccordionGroup>

## Connect Google Calendar

Before you start:

* You need a Google Calendar account that you can sign in to.
* Your Squad subscription must be active. Squad does not connect apps while the subscription is not active.

<Steps>
  <Step title="Open Integrations">
    Open **Settings** > **Integrations**.
  </Step>

  <Step title="Add an integration">
    On the **Connected apps** tab, click **+ Add integration**.
  </Step>

  <Step title="Find Google Calendar">
    Find **Google Calendar** in the catalog and click it. You can type the name in **Search the catalog…**.
  </Step>

  <Step title="Choose an access level">
    Under **Default scope**, choose an access level. This level applies to every agent.
  </Step>

  <Step title="Click Connect Google Calendar">
    Click **Connect Google Calendar**. The Google Calendar sign-in page opens in a new tab.
  </Step>

  <Step title="Sign in to Google Calendar">
    Sign in to Google Calendar and approve the request.
  </Step>
</Steps>

Check that it works: Google Calendar shows under **YOUR CONNECTIONS**, with a row for the account and its access level.

## Change the access level

1. Under **YOUR CONNECTIONS**, find the Google Calendar account.
2. Open the account menu (⋯) and click **Manage scope**.
3. Under **Default scope**, choose the new level.
4. Click **Save access**.

The change does not need a new sign-in. Agents get the new level from their next call.

## Set access for one agent

Every agent uses the account's level unless you set something else for it. You can narrow one agent to a lower level, or block it.

1. Under **YOUR CONNECTIONS**, open the account menu (⋯) on the Google Calendar account.
2. Click **Manage scope**.
3. Under **Per-agent access**, find the agent.
4. Choose the **Default** option to follow the account's level, choose a lower level, or choose **No access**.
5. Click **Save access**.

An agent never gets more than the account's level, even if you choose a higher level for it. Changes apply from the agent's next call. An agent with **No access** does not see the account.

## Use more than one Google Calendar account

Click **+ Account** on the Google Calendar card to connect another account. Agents use the primary account unless they are asked to use a specific one.

* After you click **+ Account**, follow the connect steps above.
* Each account has its own access level.
* The first account you connect becomes the primary account. It shows **★ PRIMARY**.
* To change the primary account, open the account menu (⋯) and click **Make primary**.
* To tell accounts apart, open the account menu (⋯) and click **Rename**.

## Reconnect or disconnect

Reconnect when the connection has expired, or when you need to change what the account can reach on the Google Calendar side:

1. Open the account menu (⋯) and click **Reconnect**.
2. Click **Reauthorize on Google Calendar**.
3. Sign in to Google Calendar and approve the request.

Reconnect signs in to the same account again. It does not add a second connection.

Open the account menu (⋯) on the Google Calendar account and click **Disconnect**. Agents lose access to that account at once.

<Warning>**Disconnect** acts at once, with no confirmation step. If it was the primary account, another connected Google Calendar account becomes primary.</Warning>

## Costs

Google Calendar actions do not use Squad credits. Connected apps never use credits. For what does use credits, see [What Squad costs](/docs/costs).

## Troubleshooting

An agent reports that an action is not allowed on this account.

* Cause: the action is outside the account's access level, or outside the level you set for that agent.
* Fix: choose a higher level in **Manage scope**, or change the agent's row under **Per-agent access**.

An agent says it has no access to Google Calendar, or it does not see the account.

* Cause: the agent is set to **No access** under **Per-agent access**, or the account is not connected.
* Fix: open **Manage scope** and change the agent's row. If the account is missing, connect it again.

Connecting or saving fails with "Your subscription isn't active."

* Cause: your Squad subscription is not active.
* Fix: resubscribe. See [Manage your subscription](/docs/billing).

An agent says the Google Calendar connection has expired.

* Cause: the sign-in for that account is no longer valid.
* Fix: use **Reconnect** on the account.

## Common questions

<AccordionGroup>
  <Accordion title="Can I limit what agents can do in Google Calendar?">
    Each Google Calendar account has an access level: **Read-only**, **Manage events**, and **Full access**. Squad refuses any agent action outside that level. You can also narrow or block single agents under **Per-agent access**.
  </Accordion>

  <Accordion title="Can I connect more than one Google Calendar account?">
    Click **+ Account** on the Google Calendar card to connect another account. Agents use the primary account unless they are asked to use a specific one.
  </Accordion>

  <Accordion title="How do I disconnect Google Calendar?">
    Open the account menu (⋯) on the Google Calendar account and click **Disconnect**. Agents lose access to that account at once.
  </Accordion>
</AccordionGroup>

## Related pages

<CardGroup cols={2}>
  <Card title="Connect apps" icon="plug" href="/docs/integrations" />

  <Card title="Add an MCP server or an API key" icon="server" href="/docs/custom-integrations">
    Use this when an action you need is not in this app.
  </Card>
</CardGroup>
