Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Google Meet

Scalekit connector
Open markdown

The Google Meet connector lets your AI agent act in each user's Google Meet account. Each user signs in to Google Meet once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 16 tools.

Tools
16
What they doRead · write · destructive
13 · 2 · 113 read2 write1 destructive
Users sign in with
OAuth app
Your own Google app

What you can do

  • Create meeting spaces: set up new Meet spaces, update their access settings, and end active conferences
  • Review past meetings: list conference records by space, meeting code, or time, and see who attended and when
  • Read transcripts: fetch meeting transcripts and speaker-by-speaker entries with text and timestamps
  • Find recordings and notes: locate meeting recordings in Google Drive and Gemini smart notes in Google Docs

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Google Meet connection

    In AgentKit > Connections, create a Google Meet connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register a Google OAuth app

    Google Meet connections use your own OAuth app. Register one with Google and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the Google Meet connection.

    Console steps with screenshots

    Register your Scalekit environment with the Google Meet connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:

    1. Set up auth redirects

      • In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Google Meet and click Create. Click Use your own credentials and copy the redirect URI. It looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

        Copy redirect URI from Scalekit dashboard

      • Navigate to Google Cloud Console → APIs & Services → Credentials. Select + Create Credentials, then OAuth client ID. Choose Web application from the Application type menu.

        Select Web Application in Google OAuth settings

      • Under Authorized redirect URIs, click + Add URI, paste the redirect URI, and click Create.

        Add authorized redirect URI in Google Cloud Console

    2. Enable the Google Meet API

      • In Google Cloud Console, go to APIs & Services → Library. Search for “Google Meet API” and click Enable.
    3. Get client credentials

      • Google provides your Client ID and Client Secret after you create the OAuth client ID in step 1.
    4. Add credentials in Scalekit

      • In Scalekit dashboard, go to AgentKit > Connections and open the connection you created.

      • Enter your credentials:

        Add credentials in Scalekit dashboard

      • Click Save.

  5. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'googlemeet'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Google Meet:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'googlemeet_list_conference_records',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • googlemeet_get_conference_recordRetrieve details of a single Google Meet conference record by its resource name (e.g., 'conferenceRecords/abc123'), including its start/end time and associated space.Read-only

    Get Conference Record

    Retrieve details of a single Google Meet conference record by its resource name (e.g., 'conferenceRecords/abc123'), including its start/end time and associated space. Uses OAuth credentials.

    Inputs

    conference_record_namestringrequired
    Resource name of the conference record to retrieve (e.g., 'conferenceRecords/abc123def456')
  • googlemeet_get_meet_spaceRetrieve details of a Google Meet meeting space by its resource name (e.g., 'spaces/abc123'), including its meeting URI and configuration.Read-only

    Get Meet Space

    Retrieve details of a Google Meet meeting space by its resource name (e.g., 'spaces/abc123'), including its meeting URI and configuration. Uses OAuth credentials.

    Inputs

    space_namestringrequired
    Resource name of the Meet space to retrieve (e.g., 'spaces/abc123').

    Also accepts schema_version and tool_version to pin a version.

  • googlemeet_get_participantRetrieve details of a single Google Meet conference participant by their resource name (signed-in user, anonymous user, or phone user).Read-only

    Get Meet Participant

    Retrieve details of a single Google Meet conference participant by their resource name (signed-in user, anonymous user, or phone user). Uses OAuth credentials.

    Inputs

    participant_namestringrequired
    Resource name of the participant to retrieve (e.g., 'conferenceRecords/abc123def456/participants/xyz789')
  • googlemeet_get_recordingRetrieve details of a single Google Meet recording by its resource name, including its Google Drive export location.Read-only

    Get Meet Recording

    Retrieve details of a single Google Meet recording by its resource name, including its Google Drive export location. Uses OAuth credentials.

    Inputs

    recording_namestringrequired
    Resource name of the recording to retrieve (e.g., 'conferenceRecords/abc123def456/recordings/xyz789')
  • googlemeet_get_smart_noteRetrieve details of a single Gemini-generated smart notes session by its resource name, including its state and Google Docs destination.Read-only

    Get Smart Note

    Retrieve details of a single Gemini-generated smart notes session by its resource name, including its state and Google Docs destination. Uses OAuth credentials.

    Inputs

    smart_note_namestringrequired
    Resource name of the smart notes session to retrieve (e.g., 'conferenceRecords/abc123def456/smartNotes/xyz789')
  • googlemeet_get_transcriptRetrieve details of a single Google Meet transcript by its resource name, including its Google Docs export location.Read-only

    Get Meet Transcript

    Retrieve details of a single Google Meet transcript by its resource name, including its Google Docs export location. Uses OAuth credentials.

    Inputs

    transcript_namestringrequired
    Resource name of the transcript to retrieve (e.g., 'conferenceRecords/abc123def456/transcripts/xyz789')
  • googlemeet_list_conference_recordsList past Google Meet conference records, ordered by start time in descending order, optionally filtered by space name, meeting code, or start/end time.Read-only

    List Conference Records

    List past Google Meet conference records, ordered by start time in descending order, optionally filtered by space name, meeting code, or start/end time. Uses OAuth credentials.

    Inputs

    filterstring
    Filter expression restricting which conference records are returned, e.g. by space.meeting_code, space.name, start_time, or end_time
    page_sizeinteger
    Maximum number of conference records to return (default 25, maximum 100)
    page_tokenstring
    Token for retrieving the next page of results
  • googlemeet_list_participant_sessionsList the join/leave sessions of a single Google Meet participant.Read-only

    List Participant Sessions

    List the join/leave sessions of a single Google Meet participant. A participant can have multiple sessions if they rejoined the same conference. Uses OAuth credentials.

    Inputs

    participant_namestringrequired
    Resource name of the parent participant whose sessions to list (e.g., 'conferenceRecords/abc123def456/participants/xyz789')
    filterstring
    EBNF filter expression over start_time / end_time, e.g. "end_time IS NULL" to return only sessions still in progress.
    page_sizeinteger
    Maximum number of participant sessions to return (default 10, maximum 100)
    page_tokenstring
    Token for retrieving the next page of results

Workflows

Proxy API call
const result = await actions.request({
connectionName: 'googlemeet',
identifier: 'user_123',
path: '/v2/spaces',
method: 'GET',
});
console.log(result);
Execute a tool
const result = await actions.executeTool({
connector: 'googlemeet',
identifier: 'user_123',
toolName: 'googlemeet_list_conference_records',
toolInput: {},
});
console.log(result);
Google OAuth consent screen verification

Before you use your own Google OAuth credentials in production, understand what end users see on Google’s consent screen when they authorize a connected account.

Audience typeConsent screen behaviorWhen to use
InternalShows your App Name and logo from Branding settingsOnly users in your Google Workspace or Cloud Identity organization can authorize the connector
ExternalShows {env_name}.scalekit.dev until Google verifies your appAny user with a Google account can authorize the connector

Why External is required for most AgentKit connectors:

  • Internal restricts authorization to users in your Google Workspace or Cloud Identity organization. Users with @gmail.com or other Google accounts outside your organization cannot complete OAuth.
  • External is required when end users outside your organization authorize tool access through connected accounts.
  • Organization-managed OAuth clients follow the same rules as personal or developer OAuth clients. Switching to an org-owned client does not bypass Google verification.
  • Until Google completes verification of your External app, users see scalekit.dev on the consent screen. After verification, your App Name and logo appear.

During development:

  • Add Test users under APIs & Services → OAuth consent screen while publishing status is Testing.
  • On unverified apps, users can click Advanced → Go to app (unsafe) to proceed during testing.
  • Google Workspace admins may need to allowlist your OAuth client.

For Google’s verification requirements and timeline, refer to Google’s OAuth consent screen verification guide.