create_meeting_bot
Automate meeting attendance by creating a bot to join, record, and transcribe video calls on platforms like Zoom, Google Meet, and Teams using the Attendee MCP Server.
Instructions
Create a bot to join a meeting and record/transcribe it
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| bot_name | No | Name for the bot (optional, defaults to 'Go Bot') | Go Bot |
| meeting_url | Yes | URL of the meeting (Zoom, Google Meet, or Teams) |
Implementation Reference
- src/index.ts:447-468 (handler)The main handler function that executes the create_meeting_bot tool. Validates inputs, calls the backend API to create the bot, formats the creation response, and returns it as MCP content.private async createMeetingBot(args: Record<string, unknown>) { const meeting_url = args.meeting_url as string; const bot_name = (args.bot_name as string) || "Claude Bot"; if (!meeting_url || typeof meeting_url !== 'string') { throw new Error("Missing or invalid required parameter: meeting_url"); } const data = await this.makeApiRequest("/api/v1/bots", "POST", { meeting_url, bot_name, }); return { content: [ { type: "text", text: this.formatBotCreated(data), }, ], }; }
- src/index.ts:205-223 (registration)Tool registration in the ListTools response, including name, description, and input schema definition.{ name: "create_meeting_bot", description: "Create a bot to join a meeting and record/transcribe it", inputSchema: { type: "object", properties: { meeting_url: { type: "string", description: "URL of the meeting (Zoom, Google Meet, or Teams)", }, bot_name: { type: "string", description: "Name for the bot (optional, defaults to 'Go Bot')", default: "Go Bot", }, }, required: ["meeting_url"], }, },
- src/index.ts:398-399 (registration)Dispatch case in the CallToolRequest handler that routes to the createMeetingBot implementation.case "create_meeting_bot": return await this.createMeetingBot(args);
- src/index.ts:129-140 (helper)Helper function to format the bot creation response into a user-friendly message.private formatBotCreated(data: any): string { return [ "✅ Successfully created meeting bot!", "", `🤖 Bot ID: ${data.id}`, `🔗 Meeting URL: ${data.meeting_url}`, `📊 State: ${data.state}`, `📝 Transcription State: ${data.transcription_state}`, "", `💡 You can check the bot status using bot ID: ${data.id}`, ].join("\n"); }
- src/index.ts:78-111 (helper)Shared helper function used by the handler to make authenticated API requests to the backend.private async makeApiRequest( endpoint: string, method: string = "GET", body?: any ): Promise<any> { const url = `${API_BASE_URL}${endpoint}`; const headers: Record<string, string> = { "Content-Type": "application/json", }; if (API_KEY) { headers["Authorization"] = `Token ${API_KEY}`; } try { const response = await fetch(url, { method, headers, body: body ? JSON.stringify(body) : undefined, }); if (!response.ok) { const errorText = await response.text(); throw new Error(`API error ${response.status}: ${errorText}`); } return await response.json(); } catch (error) { if (error instanceof Error) { throw new Error(`Network error: ${error.message}`); } throw error; } }