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

# Google Meet Integration for AI Agents & Workflows

> Schedule Google Meet video conferences via Google Calendar events.

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img className="block dark:hidden" src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/google-meet-light.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=dd46ab260f312fe80083810c956db844" alt="Google Meet logo" width="72" height="72" data-path="logos/google-meet-light.svg" />

<img className="hidden dark:block" src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/google-meet-dark.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=3ce78507f3251e1871aa4b5137c8b68b" alt="Google Meet logo" width="72" height="72" data-path="logos/google-meet-dark.svg" />

## Overview

Add **Google Meet** to any ModuleX agent or workflow. Schedule Google Meet video conferences by creating Google Calendar events with an attached Meet link, via the Google Calendar REST API (`https://www.googleapis.com/calendar/v3`).

<Info>
  **Categories**: Communication · Productivity & Collaboration · **Auth**: OAuth2 · **Actions**: 2
</Info>

## Authentication

### OAuth2 Authentication

Connect using Google OAuth (recommended)

#### Required Credentials

| Field         | Description                          | Required | Format                                                         |
| ------------- | ------------------------------------ | -------- | -------------------------------------------------------------- |
| Client ID     | Google Cloud OAuth 2.0 Client ID     | Yes      | `xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com` |
| Client Secret | Google Cloud OAuth 2.0 Client Secret | Yes      | `GOCSPX-xxxxxxxxxxxxxxxxxxxxxxxx`                              |

#### OAuth Configuration

* **Authorization URL**: `https://accounts.google.com/o/oauth2/v2/auth`
* **Token URL**: `https://oauth2.googleapis.com/token`
* **Scopes**: `https://www.googleapis.com/auth/calendar`, `https://www.googleapis.com/auth/calendar.events`

## Available Actions

<AccordionGroup>
  <Accordion title="schedule_meeting — Creates a new event in Google Calendar with a Google Meet video conference link attached.">
    ### Parameters

    <ResponseField name="event_start_date" type="string" required>
      For all-day events use yyyy-mm-dd. For timed events use RFC3339 (yyyy-mm-ddThh:mm:ss+01:00). A time zone offset is required unless time\_zone is set.
    </ResponseField>

    <ResponseField name="event_end_date" type="string" required>
      For all-day events use yyyy-mm-dd. For timed events use RFC3339 (yyyy-mm-ddThh:mm:ss+01:00). A time zone offset is required unless time\_zone is set.
    </ResponseField>

    <ResponseField name="calendar_id" type="string">
      Calendar to create the event on. Defaults to 'primary' (the authenticated user's primary calendar). (Default: `primary`)
    </ResponseField>

    <ResponseField name="summary" type="string">
      Title of the event (e.g. 'Weekly sync').
    </ResponseField>

    <ResponseField name="location" type="string">
      Physical or virtual location of the event.
    </ResponseField>

    <ResponseField name="description" type="string">
      Long-form description of the event.
    </ResponseField>

    <ResponseField name="attendees" type="array">
      List of attendee email addresses to invite.
    </ResponseField>

    <ResponseField name="recurrence" type="array">
      RRULE strings describing recurrence (e.g. 'RRULE:FREQ=DAILY;INTERVAL=2').
    </ResponseField>

    <ResponseField name="time_zone" type="string">
      IANA time zone name used for start/end (e.g. 'America/Los\_Angeles'). Defaults to the calendar's time zone.
    </ResponseField>

    <ResponseField name="send_updates" type="string">
      Whether to notify attendees: 'all', 'externalOnly', or 'none'.
    </ResponseField>

    <ResponseField name="send_notifications" type="boolean">
      Whether to send notifications about the event update.
    </ResponseField>

    <ResponseField name="color_id" type="string">
      Color ID for the event. Use list\_color\_id\_options to discover valid values.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "event_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Event Id"
        },
        "html_link": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Html Link"
        },
        "hangout_link": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Hangout Link"
        },
        "meet_link": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Meet Link"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "summary": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Summary"
        },
        "start": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Start"
        },
        "end": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "End"
        },
        "attendees": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Attendees",
          "type": "array"
        },
        "conference_data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Conference Data"
        },
        "event": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Event"
        }
      },
      "required": [
        "success"
      ],
      "title": "ScheduleMeetingOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_color_id_options — Retrieves the available event color options (id, background, foreground) from Google Calendar.">
    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ColorIdOption": {
          "additionalProperties": false,
          "description": "One color option exposed by the Google Calendar /colors endpoint.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "background": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Background"
            },
            "foreground": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Foreground"
            }
          },
          "title": "ColorIdOption",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "options": {
          "items": {
            "$ref": "#/$defs/ColorIdOption"
          },
          "title": "Options",
          "type": "array"
        },
        "count": {
          "default": 0,
          "title": "Count",
          "type": "integer"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListColorIdOptionsOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* Google Calendar API default quota: **1,000,000 queries/day** per project, with
  per-user limits of **600 queries/minute**. See the
  [Google Calendar API quotas page](https://developers.google.com/calendar/api/guides/quota)
  for details.
* `schedule_meeting` sends `conferenceDataVersion=1` so Google provisions a Meet
  link in the same call (counts as a single event-insert quota unit).
* **Error model**: non-2xx responses and timeouts are caught and returned as
  `success=False` + `error` rather than raising. Plan for retries on the agent
  side based on the error string. 401/403 typically means the OAuth token has
  expired or lacks the calendar scope.

## Related integrations

<CardGroup cols={3}>
  <Card title="Microsoft Teams" href="/integrations/tools/microsoft-teams" />

  <Card title="Zoom" href="/integrations/tools/zoom" />

  <Card title="AgentMail" href="/integrations/tools/agentmail" />
</CardGroup>

## Links

* [Google Meet](https://meet.google.com)
