Skip to content

insodimension/google-meet

v0.1.2MIT

Create Google Meet spaces, read conference records/recordings/transcripts, and live-transcribe a call

What this package declares

The file a client reads when it loads this plugin, exactly as this revision carries it.

plugin.json
{
	"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
	"name": "google-meet",
	"version": "0.1.2",
	"description": "Create Google Meet spaces, read conference records/recordings/transcripts, and live-transcribe a call",
	"author": {
		"name": "Dimension"
	},
	"license": "MIT",
	"keywords": [
		"google-meet",
		"meet",
		"meetings",
		"transcription",
		"conference-records",
		"recordings",
		"productivity"
	],
	"extensions": {
		"ai.insodimension.dimension": {
			"contractVersion": 1,
			"title": "Google Meet",
			"icon": "assets/icon.svg",
			"category": "connector",
			"defaultEnabled": false,
			"examples": [
				"Create a Google Meet and give me the join link",
				"Summarize the transcript of my last meeting and list the action items",
				"Join my standup at https://meet.google.com/abc-defg-hij and take notes"
			],
			"connect": {
				"kind": [
					"oauth"
				],
				"setup": [
					{
						"title": "Reuse (or create) your Google Cloud OAuth client",
						"detail": "If you set up Google Drive or Calendar you already have one — the same Desktop-app OAuth client works here. If not, create a free Google Cloud project and a Desktop-app OAuth client (no billing, no redirect URI to register).",
						"url": "https://console.cloud.google.com/apis/credentials",
						"urlLabel": "Open Credentials"
					},
					{
						"title": "Enable the Google Meet API",
						"detail": "APIs & Services → Library → \"Google Meet API\" → Enable. Creating the client is NOT enough — without this step the connection succeeds but every Meet call fails.",
						"url": "https://console.cloud.google.com/apis/library/meet.googleapis.com",
						"urlLabel": "Open the API Library"
					},
					{
						"title": "Copy the Client ID and Client Secret into the form below",
						"detail": "Same values as your Drive/Calendar connector — they stay on this machine. Note: reading past-meeting conference records, recordings, and transcripts generally requires a Google Workspace account (personal Gmail can create spaces and live-transcribe, but has no conference-record artifacts)."
					}
				],
				"form": [
					{
						"id": "clientId",
						"label": "OAuth Client ID",
						"help": "Reuse the SAME OAuth client you created for Google Drive or Calendar — no new Cloud project needed; just also enable the Google Meet API. If you don't have one yet, follow the steps above.",
						"helpUrl": "https://console.cloud.google.com/apis/credentials",
						"helpUrlLabel": "Open Google Cloud Console"
					},
					{
						"id": "clientSecret",
						"label": "OAuth Client Secret",
						"secret": true,
						"help": "The same Client Secret as your Drive/Calendar connector. Google issues one for Desktop app clients even though it isn't treated as secret for installed apps (RFC 8252). Copy it from the same credential page."
					}
				],
				"oauth": {
					"provider": "google",
					"authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
					"tokenUrl": "https://oauth2.googleapis.com/token",
					"scopes": [
						"https://www.googleapis.com/auth/meetings.space.created",
						"https://www.googleapis.com/auth/meetings.space.readonly",
						"https://www.googleapis.com/auth/meetings.space.settings"
					],
					"usePkce": true,
					"extraAuthParams": {
						"access_type": "offline",
						"prompt": "consent"
					}
				},
				"configTarget": "~/.config/dimension-google-meet/token.json",
				"verify": {
					"http": "https://meet.googleapis.com/v2/conferenceRecords?pageSize=1",
					"failures": [
						{
							"match": "has not been used in project|is disabled|SERVICE_DISABLED|accessNotConfigured",
							"title": "Enable the Google Meet API",
							"detail": "Your account connected, but the Google Cloud project has the Meet API turned off. Enable it, wait a minute, then connect again.",
							"url": "https://console.cloud.google.com/apis/library/meet.googleapis.com",
							"urlLabel": "Open the API Library"
						},
						{
							"match": "invalid_grant|UNAUTHENTICATED|Invalid Credentials|invalid_token",
							"title": "Reconnect your Google account",
							"detail": "The stored token is no longer valid — run Connect again to re-authorize."
						},
						{
							"match": "PERMISSION_DENIED|permission|not authorized|Workspace",
							"title": "Conference records need a Google Workspace account",
							"detail": "Reading past-meeting records/recordings/transcripts requires a Google Workspace account with Meet artifacts enabled. A personal Gmail account can still create spaces and live-transcribe, but has no conference-record history — this is expected."
						}
					]
				}
			},
			"toolRenderer": [
				{
					"match": "google_meet_create_space",
					"use": "summary",
					"icon": "google-meet",
					"title": "Create Meet"
				},
				{
					"match": "google_meet_get_space",
					"use": "summary",
					"icon": "google-meet",
					"title": "Meet space"
				},
				{
					"match": "google_meet_end_active_conference",
					"use": "summary",
					"icon": "google-meet",
					"title": "End conference"
				},
				{
					"match": "google_meet_list_conference_records",
					"use": "summary",
					"icon": "google-meet",
					"title": "Conference records"
				},
				{
					"match": "google_meet_get_conference_record",
					"use": "summary",
					"icon": "google-meet",
					"title": "Conference record"
				},
				{
					"match": "google_meet_list_participants",
					"use": "summary",
					"icon": "google-meet",
					"title": "Participants"
				},
				{
					"match": "google_meet_list_recordings",
					"use": "summary",
					"icon": "google-meet",
					"title": "Recordings"
				},
				{
					"match": "google_meet_list_transcripts",
					"use": "summary",
					"icon": "google-meet",
					"title": "Transcripts"
				},
				{
					"match": "google_meet_list_transcript_entries",
					"use": "summary",
					"icon": "google-meet",
					"title": "Transcript"
				},
				{
					"match": "google_meet_join",
					"use": "summary",
					"icon": "google-meet",
					"title": "Join call"
				},
				{
					"match": "google_meet_live_status",
					"use": "summary",
					"icon": "google-meet",
					"title": "Call status"
				},
				{
					"match": "google_meet_live_transcript",
					"use": "summary",
					"icon": "google-meet",
					"title": "Live transcript"
				},
				{
					"match": "google_meet_leave",
					"use": "summary",
					"icon": "google-meet",
					"title": "Leave call"
				}
			],
			"skillCard": {
				"skill": "google-meet",
				"use": "summary",
				"icon": "google-meet",
				"title": "Google Meet"
			},
			"tools": [
				{
					"name": "google_meet_create_space",
					"description": "Create a new Meet space and return its join URL and meeting code"
				},
				{
					"name": "google_meet_get_space",
					"description": "Look up a Meet space by name or meeting code, incl. whether a conference is active"
				},
				{
					"name": "google_meet_end_active_conference",
					"description": "End the active conference in a Meet space"
				},
				{
					"name": "google_meet_list_conference_records",
					"description": "List past conference records (optionally filtered by space/meeting code/time)"
				},
				{
					"name": "google_meet_get_conference_record",
					"description": "Get one conference record by id"
				},
				{
					"name": "google_meet_list_participants",
					"description": "List the participants of a conference record"
				},
				{
					"name": "google_meet_list_recordings",
					"description": "List a conference's recordings and their Drive links"
				},
				{
					"name": "google_meet_list_transcripts",
					"description": "List a conference's transcripts and their Google Docs links"
				},
				{
					"name": "google_meet_list_transcript_entries",
					"description": "Read the structured speech entries of a transcript"
				},
				{
					"name": "google_meet_join",
					"description": "Join a live meet.google.com call and start scraping captions to a transcript (listen-only)"
				},
				{
					"name": "google_meet_live_status",
					"description": "Report the live call bot's state — joined, lobby, caption progress"
				},
				{
					"name": "google_meet_live_transcript",
					"description": "Read the live-scraped transcript for the active call"
				},
				{
					"name": "google_meet_leave",
					"description": "Leave the active live call and finalize the transcript"
				}
			]
		}
	}
}

Client extensions

Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.

  • ai.insodimension.dimension