get_recording
Retrieve the recording URL for a specific meeting bot to access captured meeting content.
Instructions
Get the recording URL for a bot
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| bot_id | Yes | ID of the bot to get recording for |
Implementation Reference
- src/index.ts:655-702 (handler)The handler function `getRecording` that executes the tool logic: validates bot_id, calls the API to fetch recording data, formats file size and duration, and returns a formatted text response with the recording URL and metadata.private async getRecording(args: Record<string, unknown>) { const bot_id = args.bot_id as string; if (!bot_id || typeof bot_id !== 'string') { throw new Error("Missing or invalid required parameter: bot_id"); } const data = await this.makeApiRequest(`/api/v1/bots/${bot_id}/recording`); const formatFileSize = (bytes?: number) => { if (!bytes) return "Unknown size"; const sizes = ['B', 'KB', 'MB', 'GB']; const i = Math.floor(Math.log(bytes) / Math.log(1024)); return Math.round(bytes / Math.pow(1024, i) * 100) / 100 + ' ' + sizes[i]; }; const formatDuration = (ms?: number) => { if (!ms) return "Unknown duration"; const seconds = Math.floor(ms / 1000); const minutes = Math.floor(seconds / 60); const hours = Math.floor(minutes / 60); if (hours > 0) { return `${hours}h ${minutes % 60}m ${seconds % 60}s`; } else if (minutes > 0) { return `${minutes}m ${seconds % 60}s`; } else { return `${seconds}s`; } }; return { content: [ { type: "text", text: [ `🎥 Recording for bot ${bot_id}:`, "", `📁 URL: ${data.url}`, `📊 Size: ${formatFileSize(data.file_size)}`, `⏱️ Duration: ${formatDuration(data.duration_ms)}`, "", "💡 This is a short-lived URL that expires after a certain time.", ].join("\n"), }, ], }; }
- src/index.ts:335-348 (schema)The tool schema definition including name, description, and inputSchema specifying the required 'bot_id' parameter.{ name: "get_recording", description: "Get the recording URL for a bot", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot to get recording for", }, }, required: ["bot_id"], }, },
- src/index.ts:431-432 (registration)The registration/dispatch case in the CallToolRequestSchema handler that routes calls to the getRecording method.case "get_recording": return await this.getRecording(args);
- src/index.ts:203-400 (registration)The ListToolsRequestSchema handler that registers the tool by including it in the list of available tools.this.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ { 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"], }, }, { name: "get_bot_status", description: "Get the current status of a meeting bot", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot to check", }, }, required: ["bot_id"], }, }, { name: "get_meeting_transcript", description: "Get the transcript from a meeting bot", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot whose transcript to retrieve", }, }, required: ["bot_id"], }, }, { name: "list_meeting_bots", description: "List all active meeting bots", inputSchema: { type: "object", properties: {}, required: [], }, }, { name: "remove_meeting_bot", description: "Remove a bot from a meeting", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot to remove", }, }, required: ["bot_id"], }, }, { name: "make_bot_speak", description: "Make a bot speak text during a meeting using text-to-speech", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot that should speak", }, text: { type: "string", description: "Text for the bot to speak", }, voice_language_code: { type: "string", description: "Voice language code (optional, defaults to 'en-US')", default: "en-US", }, voice_name: { type: "string", description: "Voice name (optional, defaults to 'en-US-Casual-K')", default: "en-US-Casual-K", }, }, required: ["bot_id", "text"], }, }, { name: "send_chat_message", description: "Send a chat message from the bot to the meeting", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot that should send the message", }, message: { type: "string", description: "Message text to send", }, }, required: ["bot_id", "message"], }, }, { name: "get_chat_messages", description: "Get chat messages from the meeting", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot to get chat messages for", }, }, required: ["bot_id"], }, }, { name: "get_recording", description: "Get the recording URL for a bot", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot to get recording for", }, }, required: ["bot_id"], }, }, { name: "send_image_to_meeting", description: "Send an image to the meeting through the bot (Google Meet only)", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot that should display the image", }, image_url: { type: "string", description: "HTTPS URL of the image to display", }, }, required: ["bot_id", "image_url"], }, }, { name: "send_video_to_meeting", description: "Send a video to the meeting through the bot (Google Meet only)", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot that should play the video", }, video_url: { type: "string", description: "HTTPS URL of the MP4 video to play", }, }, required: ["bot_id", "video_url"], }, }, { name: "delete_bot_data", description: "Delete all data associated with a bot (recordings, transcripts, etc.)", inputSchema: { type: "object", properties: { bot_id: { type: "string", description: "ID of the bot to delete data for", }, }, required: ["bot_id"], }, }, ] satisfies Tool[], }));