joinMeeting
Join Zoom or Google Meet meetings via meeting ID and password, capture transcripts, and record audio for comprehensive meeting summaries.
Instructions
Join a Zoom or Google Meet meeting using the provided meeting ID and password and capture transcript and audio recording
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| botName | Yes | The name of the bot | |
| meetingId | Yes | The ID of the Zoom ('###########') or Google Meet ('xxx-xxx-xxx') meeting | |
| meetingPassword | No | The password for the Zoom meeting (optional) | |
| platform | Yes | The online conference platform (zoom or googlemeet) | |
| webhookUrl | No | URL to receive webhook events for meeting status (optional) |
Implementation Reference
- src/index.ts:80-114 (handler)Async handler function that sends a POST request to the Chatterbox API endpoint to join the specified meeting platform with the given details and returns the session ID or handles errors.async ({ platform, meetingId, meetingPassword, botName, webhookUrl }: { platform: string; meetingId: string; meetingPassword?: string; botName: string; webhookUrl?: string; }) => { try { const response = await fetch( `${CHATTERBOX_API_ENDPOINT}/join`, { method: 'POST', headers: { "Content-Type": "application/json", "Authorization": `Bearer ${CHATTERBOX_API_KEY}` }, body: JSON.stringify({ platform, meetingId, meetingPassword: meetingPassword || '', botName: botName || '', webhookUrl: webhookUrl || '' }) } ); const data = await response.json(); return { content: [{ type: "text", text: `Meeting bot deployed. Session ID: ${data.sessionId}` }] }; } catch (error) { return handleApiError(error, "joinMeeting"); } }
- src/index.ts:73-79 (schema)Zod schema defining the input parameters for the joinMeeting tool: platform, meetingId, optional meetingPassword, botName, and optional webhookUrl.{ platform: z.enum(["zoom", "googlemeet", "teams"]).describe("The online conference platform (zoom, googlemeet, or teams)"), meetingId: z.string().describe("The ID of the Zoom ('###########') or Google Meet ('xxx-xxx-xxx') or Microsoft Teams ('##########') meeting"), meetingPassword: z.string().optional().describe("The password or the passcode for the Zoom or Google Meet or Microsoft Teams meeting (optional)"), botName: z.string().describe("The name of the bot"), webhookUrl: z.string().optional().describe("URL to receive webhook events for meeting status (optional)"), },
- src/index.ts:70-115 (registration)Registration of the joinMeeting tool on the MCP server, including name, description, input schema, and handler function.server.tool( "joinMeeting", "Join a Zoom, Google Meet, or Microsoft Teams meeting using the provided meeting ID and password and capture transcript and audio recording", { platform: z.enum(["zoom", "googlemeet", "teams"]).describe("The online conference platform (zoom, googlemeet, or teams)"), meetingId: z.string().describe("The ID of the Zoom ('###########') or Google Meet ('xxx-xxx-xxx') or Microsoft Teams ('##########') meeting"), meetingPassword: z.string().optional().describe("The password or the passcode for the Zoom or Google Meet or Microsoft Teams meeting (optional)"), botName: z.string().describe("The name of the bot"), webhookUrl: z.string().optional().describe("URL to receive webhook events for meeting status (optional)"), }, async ({ platform, meetingId, meetingPassword, botName, webhookUrl }: { platform: string; meetingId: string; meetingPassword?: string; botName: string; webhookUrl?: string; }) => { try { const response = await fetch( `${CHATTERBOX_API_ENDPOINT}/join`, { method: 'POST', headers: { "Content-Type": "application/json", "Authorization": `Bearer ${CHATTERBOX_API_KEY}` }, body: JSON.stringify({ platform, meetingId, meetingPassword: meetingPassword || '', botName: botName || '', webhookUrl: webhookUrl || '' }) } ); const data = await response.json(); return { content: [{ type: "text", text: `Meeting bot deployed. Session ID: ${data.sessionId}` }] }; } catch (error) { return handleApiError(error, "joinMeeting"); } } );
- src/index.ts:35-57 (helper)Helper function for handling API errors, specifically called in the joinMeeting handler with context 'joinMeeting'.function handleApiError(error: unknown, context: string): ToolResponse { console.error(`Error in ${context}:`, error); if (error instanceof Error) { return { content: [{ type: "text", text: error.message }], isError: true, _meta: { errorCode: "ERROR", errorMessage: error.message } }; } return { content: [{ type: "text", text: "Server error" }], isError: true, _meta: { errorCode: "ERROR", errorMessage: "Server error" } }; }