{
  "markdown": "<p align=\"center\">\n  <img src=\"assets/logo.png\" alt=\"Speak AI\" width=\"120\" />\n</p>\n\n<h1 align=\"center\">Connect Speak AI to Claude or ChatGPT in 60 seconds</h1>\n\n<p align=\"center\">\n  <strong>For researchers, revenue teams, meeting-heavy teams, and media workflows.</strong><br/>\n  No Terminal. No npm. No JSON config files.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://docs.speakai.co/mcp\"><strong>Installation guide at docs.speakai.co/mcp →</strong></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@speakai/mcp-server\"><img src=\"https://img.shields.io/npm/v/@speakai/mcp-server\" alt=\"npm version\" /></a>\n  <a href=\"https://modelcontextprotocol.io\"><img src=\"https://img.shields.io/badge/MCP-compatible-blue\" alt=\"MCP compatible\" /></a>\n  <a href=\"https://opensource.org/licenses/MIT\"><img src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"License: MIT\" /></a>\n</p>\n\n---\n\n## What this does\n\nSpeak AI transcribes your interviews, sales calls, research sessions, webinars, podcasts, and team meetings — then extracts AI insights like summaries, action items, sentiment, and themes.\n\nThis connector (built on MCP — the standard way Claude and ChatGPT connect to apps) brings all of that into Claude or ChatGPT. Once installed, you can ask:\n\n- \"Find the last 10 customer interviews that mention pricing, group the feedback by theme, and cite the source recordings.\"\n- \"Summarize this week's team meetings into decisions, action items, owners, and unresolved risks.\"\n- \"Pull exact customer quotes about onboarding friction from recent research calls and format them for a product brief.\"\n- \"Find a strong 30-second highlight from the latest webinar, create a clip, and export captions.\"\n\nThe AI does the searching, summarizing, and citing. Your recordings stay in your Speak AI workspace — Claude and ChatGPT just query them through this connector.\n\n---\n\n## Install (pick your tool)\n\n> **Two paths to install** — pick whichever feels easier. The one-click connect path approves access via a permission popup; the manual path pastes an API key into a header.\n\n> **Don't know which one to pick?** If you already use Claude or ChatGPT, install for whichever one you have.\n\n> Speak AI's connector address (paste this into your AI tool's connector settings — it's the same idea as pasting a Zoom link into your calendar): `https://api.speakai.co/v1/mcp`\n\n### Claude.ai (web)\n\n1. Open [claude.ai/settings/connectors](https://claude.ai/settings/connectors)\n2. Click **Add custom connector**\n3. Name it **Speak AI** and paste `https://api.speakai.co/v1/mcp`, then click **Add**\n4. A permission popup asks you to log into Speak AI and click **Allow**\n5. Done — Speak AI shows in your connector list with its tools ready to use. Open a new chat and ask about your recordings.\n\n<details>\n<summary>What each step looks like (screenshots)</summary>\n\n**3. Add custom connector dialog** — name and URL filled in.\n\n![Claude add custom connector dialog](./assets/claude/1.connector.png)\n\n**5. Connected** — Speak AI tools appear in your connector list.\n\n![Speak AI connected in Claude](./assets/claude/2.connected.png)\n\n</details>\n\n<details>\n<summary>Developer alternative — manual setup with an API key</summary>\n\nGet a key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys), then in step 3 expand **Advanced settings** and add `Authorization` = `Bearer <your-key>` before clicking Add.\n\n</details>\n\n### Claude Desktop\n\n1. Open Claude Desktop → **Settings → Connectors → Add custom connector**\n2. Paste `https://api.speakai.co/v1/mcp`\n3. Click **Add** — a permission popup opens. Sign in to Speak AI and click **Allow** on the screen that appears.\n4. Done.\n\n<details>\n<summary>Developer alternative — manual setup with an API key</summary>\n\nGet a key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys), then in step 2 also expand **Custom headers** and add:\n\n- **Header name:** `Authorization`\n- **Header value:** `Bearer <your-speak-api-key>`\n\nThen click Add.\n\n</details>\n\n### ChatGPT\n\n1. Open ChatGPT → **Settings → Apps & Connectors → Advanced**\n2. Turn on **Developer Mode** (required while Speak AI isn't yet listed in ChatGPT's app store — this lets you add it as a custom app)\n3. Back on **Apps & Connectors**, click **Create** and paste `https://api.speakai.co/v1/mcp`\n4. For **Authentication**, choose **OAuth**\n5. ChatGPT opens a new tab to Speak AI — sign in (or click **Confirm** if already logged in) to authorize. You'll be redirected back; close the tab and return to ChatGPT.\n6. **Per-chat:** open a chat, click the **+** / connector menu, and enable **Speak AI** for that chat.\n\n<details>\n<summary>What each step looks like (screenshots)</summary>\n\n**1. Connect screen in ChatGPT** — paste the connector URL and pick OAuth.\n\n![ChatGPT connect screen](./assets/openai/1.connect.png)\n\n**2. Confirm and continue** — ChatGPT asks you to continue to Speak AI.\n\n![ChatGPT continue to Speak](./assets/openai/2.connect-continue.png)\n\n**3. Authorize on Speak AI** — sign in or click Confirm if you're already signed in.\n\n![Speak AI authorization screen](./assets/openai/3.speak-auth.png)\n\n**4. Connected** — Speak AI now shows in your ChatGPT connector list.\n\n![Speak AI connected in ChatGPT](./assets/openai/4.connected.png)\n\n</details>\n\n<details>\n<summary>Trouble connecting?</summary>\n\nA few things we've seen during early access:\n\n- **Authorization tab doesn't show a \"you're connected\" page** — if you land on the plain Speak AI dashboard with no confirmation, the authorization still went through. Close that tab and return to ChatGPT.\n- **\"Connect\" button keeps reopening the dashboard** — fully close and reopen ChatGPT, then check **Settings → Apps & Connectors**. Speak AI should already be listed there.\n- **\"No actions available\" inside a chat** — make sure Developer Mode is still on, and that you've enabled Speak AI from the per-chat connector menu (step 6 above).\n\nStill stuck? Email [success@speakai.co](mailto:success@speakai.co).\n\n</details>\n\n### Claude Code (terminal)\n\n**Recommended — install from the official Claude Code plugin marketplace:**\n\n1. Add the official marketplace (one-time): `/plugin marketplace add claude-plugins-official`\n2. Install the plugin: `/plugin install speakai@claude-plugins-official`\n3. Activate it: `/reload-plugins`\n4. Run the `getting-started` skill and paste your Speak AI API key. Generate one at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys).\n\nIf `/plugin install` doesn't find Speak AI, refresh the local catalog with `/plugin marketplace update claude-plugins-official` and retry.\n\n<details>\n<summary>Developer alternative — manual HTTP transport</summary>\n\nSkip the plugin and add the connector directly:\n\n```sh\nclaude mcp add speakai --transport http --url https://api.speakai.co/v1/mcp\n```\n\nClaude Code will open an OAuth window for sign-in. To bypass OAuth and pass a Bearer token instead:\n\n```sh\nclaude mcp add speakai --transport http --url https://api.speakai.co/v1/mcp \\\n  --header \"Authorization: Bearer $SPEAKAI_KEY\"\n```\n\nSet `SPEAKAI_KEY` in your shell first, or paste your key inline. Generate a key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys).\n\n</details>\n\n### Cursor\n\n[![Add to Cursor](https://img.shields.io/badge/Cursor-Install_Speak_AI-000000?logo=cursor&logoColor=white&style=for-the-badge)](cursor://anysphere.cursor-deeplink/mcp/install?name=speakai&config=eyJ1cmwiOiJodHRwczovL2FwaS5zcGVha2FpLmNvL3YxL21jcCJ9)\n\nClick the button — Cursor registers itself automatically and opens the permission popup. Sign in to Speak AI and click **Allow**.\n\n<details>\n<summary>Developer alternative — manual setup with an API key</summary>\n\nUse the manual stdio setup in the Developer reference at the bottom of this README.\n\n</details>\n\n### VS Code\n\n[![Add to VS Code](https://img.shields.io/badge/VS_Code-Install_Speak_AI-007ACC?logo=visualstudiocode&logoColor=white&style=for-the-badge)](https://vscode.dev/redirect/mcp/install?name=speakai&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.speakai.co%2Fv1%2Fmcp%22%7D)\n\nClick the button — VS Code registers itself automatically and opens the permission popup. Sign in to Speak AI and click **Allow**.\n\n<details>\n<summary>Developer alternative — manual setup with an API key</summary>\n\nUse the manual stdio setup in the Developer reference at the bottom of this README.\n\n</details>\n\n### OpenClaw / ClawHub\n\nSpeak AI is published as a skill on ClawHub for OpenClaw-compatible agents.\n\n1. Visit the [Speak AI skill page on ClawHub](https://clawhub.ai/skills/speakai)\n2. Follow the install instructions for your agent — e.g. `clawhub install speakai` from the ClawHub CLI\n3. Set your `SPEAK_API_KEY` environment variable. Generate one at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys).\n\n### ChatGPT (API / Responses)\n\nFor developers calling the Responses API directly. Pass the bearer token in the tool config:\n\n```json\n{\n  \"tools\": [\n    {\n      \"type\": \"mcp\",\n      \"server_url\": \"https://api.speakai.co/v1/mcp\",\n      \"authorization\": \"Bearer YOUR_SPEAK_API_KEY\"\n    }\n  ]\n}\n```\n\nGet a key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys).\n\n---\n\n## Privacy & data\n\nWhen you click **Allow** on the permission popup (or paste your Speak AI API key into Claude or ChatGPT), you're authorizing that AI assistant to read and modify your Speak AI workspace on your behalf — including media files, transcripts, and AI insights.\n\n- Your recordings stay in your Speak AI workspace. They are not copied or stored by Anthropic or OpenAI.\n- Claude/ChatGPT only see the specific data your AI assistant requests for the question you asked.\n- You can disconnect at any time by either removing the connector inside Claude/ChatGPT, revoking the connection at [api.speakai.co/v1/oauth/connections](https://api.speakai.co/v1/oauth/connections), or rotating/revoking your API key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys).\n\nFor questions about data handling, see [speakai.co/privacy](https://speakai.co/privacy) or email [success@speakai.co](mailto:success@speakai.co).\n\n---\n\n## Need help connecting?\n\n**You shouldn't need to be technical to install this.** If anything is confusing or doesn't work:\n\n- Email [success@speakai.co](mailto:success@speakai.co) — we'll respond within 24 hours\n- [Book a demo with us](https://calendly.com/speak-ai/demo?utm_source=mcp&utm_medium=readme&utm_campaign=booking-cta) and we'll set it up together\n\n---\n\n## What you can do once installed\n\nSpeak AI ships 114 tools your AI assistant can call. You don't memorize them — Claude/ChatGPT pick the right ones based on what you ask. Examples by category:\n\n| Ask | Tools used (auto) |\n|---|---|\n| \"Find customer interviews about pricing and group the feedback by theme\" | `search_media`, `ask_ai_chat` |\n| \"Summarize this week's meetings into decisions, owners, and risks\" | `list_media`, `get_media_insights` |\n| \"Pull action items from yesterday's call\" | `get_media_insights`, `ask_ai_chat` |\n| \"Schedule the AI to join my 2pm Zoom\" | `schedule_meeting_event` |\n| \"Pull the live transcript from my current MS Teams meeting since last fetch\" | `list_meeting_events`, `get_live_meeting_transcript` |\n| \"Find a 30-second webinar highlight and export captions\" | `create_clip`, `export_media` |\n| \"Export the transcript as a PDF and captions as SRT\" | `export_media` |\n| \"Compare Q1 sales calls against Q2 sales calls and summarize changed objections\" | `search_media`, `ask_ai_chat` |\n\nFull tool catalog is in the developer reference below.\n\n---\n\n## Developer reference (CLI, API, advanced setup)\n\nThe MCP server lives at `https://api.speakai.co/v1/mcp` and supports two auth methods:\n\n1. **OAuth 2.1 + Dynamic Client Registration** — install by pasting the URL above into any MCP client and approving the consent popup. Discovery, DCR, `/authorize` + consent, `/token`, and revocation endpoints are all available.\n2. **Bearer token** (your Speak AI API key — `Authorization: Bearer <key>` header). For clients that don't speak OAuth, plus the npm CLI and stdio mode.\n\nGet a Speak AI API key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys).\n\n### CLI / npm package\n\nThe `@speakai/mcp-server` npm package provides:\n\n- A CLI (`speakai-mcp`) for scripting and pipelines (30 commands).\n- A stdio-mode MCP server for clients that don't support remote HTTP transport.\n- An auto-setup wizard that detects installed MCP clients and configures them.\n\n```sh\nnpm install -g @speakai/mcp-server\nspeakai-mcp init\n```\n\n### Manual configuration (stdio mode)\n\n<details>\n<summary>Claude Desktop</summary>\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"speak-ai\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@speakai/mcp-server\"],\n      \"env\": {\n        \"SPEAK_API_KEY\": \"your-api-key\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>Claude Code</summary>\n\n```sh\nexport SPEAK_API_KEY=\"your-api-key\"\nclaude mcp add speak-ai -- npx -y @speakai/mcp-server\n```\n\n</details>\n\n<details>\n<summary>Cursor</summary>\n\nAdd to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"speak-ai\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@speakai/mcp-server\"],\n      \"env\": {\n        \"SPEAK_API_KEY\": \"your-api-key\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>Windsurf</summary>\n\nAdd to `~/.windsurf/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"speak-ai\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@speakai/mcp-server\"],\n      \"env\": {\n        \"SPEAK_API_KEY\": \"your-api-key\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>VS Code</summary>\n\nAdd to `~/.vscode/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"speak-ai\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@speakai/mcp-server\"],\n      \"env\": {\n        \"SPEAK_API_KEY\": \"your-api-key\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>Any MCP Client (STDIO)</summary>\n\n```sh\nSPEAK_API_KEY=your-key npx @speakai/mcp-server\n```\n\n</details>\n\n### Environment variables\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `SPEAK_API_KEY` | Yes | -- | Your Speak AI API key |\n| `SPEAK_ACCESS_TOKEN` | No | Auto-managed | JWT access token (auto-fetched and refreshed) |\n| `SPEAK_BASE_URL` | No | `https://api.speakai.co` | API base URL |\n\n### MCP Tools (114)\n\n<details>\n<summary>Media (18 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `get_signed_upload_url` | Get a pre-signed S3 URL for direct file upload |\n| `upload_media` | Upload media from a URL — a direct/public file URL, a pre-signed S3 URL, or a social/video page link resolved automatically (YouTube, TikTok, Instagram, X/Twitter, Facebook, Reddit, SoundCloud, Twitch, Dailymotion, Streamable, Snapchat, Pinterest, Tumblr, Bilibili, VK, OK.ru, Rutube). Vimeo and Loom page links are not supported. |\n| `upload_local_file` | Upload a local file directly from disk |\n| `upload_and_analyze` | Upload media from a URL (direct file, or any social/video page link `upload_media` accepts — resolved automatically) and return its `media_id` immediately. Poll `get_media_status` until `processed`, then call `get_media_insights` for AI summaries. Set `mediaType` when the user has said which they want; leave it off otherwise and the server picks the best available track. |\n| `upload_and_analyze_batch` | Upload up to 25 URLs in one call, 5 at a time. Each URL is reported as uploaded or failed with its reason, so one bad link does not sink the batch. Use this instead of calling `upload_and_analyze` in a loop. |\n| `list_media` | List and search media files with filters, pagination, and optional inline data (transcripts, speakers, keywords) via `include` param |\n| `get_media_insights` | Get AI insights — topics, sentiment, summaries, action items |\n| `get_transcript` | Get full transcript with speaker labels and timestamps |\n| `update_transcription` | Edit the official transcript text of a media file by finding and replacing text |\n| `get_captions` | Get subtitle-formatted captions for a media file |\n| `update_transcript_speakers` | Rename speaker labels in a transcript |\n| `bulk_update_transcript_speakers` | Rename speaker labels across multiple media files in one call (max 500) |\n| `get_media_status` | Check processing status (pending → processed) |\n| `update_media_metadata` | Update name, description, tags, or folder |\n| `delete_media` | Permanently delete a media file |\n| `toggle_media_favorite` | Mark or unmark media as a favorite |\n| `reanalyze_media` | Re-run AI analysis with latest models |\n| `bulk_move_media` | Move multiple media files to a folder in one call |\n\n</details>\n\n<details>\n<summary>AI Chat (13 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `ask_ai_chat` | Ask AI questions about media, folders, or your whole workspace |\n| `get_analysis_quote` | Check if a file can be analysed as audio/video and what it costs |\n| `retry_ai_chat` | Retry a failed or incomplete AI Chat response |\n| `get_chat_history` | List recent AI Chat conversations |\n| `get_chat_messages` | Get full message history for conversations |\n| `delete_chat_message` | Delete a specific chat message |\n| `list_prompts` | List available AI prompt templates |\n| `get_favorite_prompts` | Get all favorited prompts and answers |\n| `toggle_prompt_favorite` | Mark or unmark a chat message as favorite |\n| `update_chat_title` | Rename a chat conversation |\n| `submit_chat_feedback` | Rate a chat response (thumbs up/down) |\n| `get_chat_statistics` | Get AI Chat usage statistics |\n| `export_chat_answer` | Export a conversation or answer |\n\n</details>\n\n<details>\n<summary>Folders & Views (11 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `list_folders` | List all folders with pagination and sorting |\n| `get_folder_info` | Get folder details and contents |\n| `create_folder` | Create a new folder |\n| `clone_folder` | Duplicate a folder and its contents |\n| `update_folder` | Rename or update a folder |\n| `delete_folder` | Delete a folder (media is preserved) |\n| `get_all_folder_views` | List all saved views across folders |\n| `get_folder_views` | List views for a specific folder |\n| `create_folder_view` | Create a saved view with custom filters |\n| `update_folder_view` | Update a saved view |\n| `clone_folder_view` | Duplicate a view |\n\n</details>\n\n<details>\n<summary>Recorder / Survey (10 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `create_recorder` | Create a new recorder or survey |\n| `list_recorders` | List all recorders |\n| `get_recorder_info` | Get recorder details and questions |\n| `clone_recorder` | Duplicate a recorder |\n| `get_recorder_recordings` | List all submissions |\n| `generate_recorder_url` | Get a shareable public URL |\n| `update_recorder_settings` | Update branding and permissions |\n| `update_recorder_questions` | Update survey questions |\n| `check_recorder_status` | Check if recorder is active |\n| `delete_recorder` | Delete a recorder |\n\n</details>\n\n<details>\n<summary>Automations (15 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `list_automations` | List automation rules with paging and filters |\n| `build_automation` | Create or update an automation from a friendly spec, without the wire format |\n| `list_automation_names` | List automations as lightweight name + id pairs |\n| `get_automation` | Get automation details (trigger + step graph) |\n| `get_automation_runs` | Get an automation's run history |\n| `create_automation` | Create an automation rule (V2 trigger + steps graph) |\n| `update_automation` | Update an automation (replaces trigger + steps) |\n| `toggle_automation_status` | Enable or disable an automation |\n| `bulk_update_automation_status` | Activate/deactivate multiple automations |\n| `bulk_assign_automation_folders` | Set folder scope for multiple automations |\n| `run_automations` | Manually run automations against media now |\n| `delete_automation` | Permanently delete an automation |\n| `list_automation_apps` | List catalog apps (native + integrations) |\n| `list_automation_triggers` | List catalog trigger types (optionally by app) |\n| `list_automation_actions` | List catalog action/step types (optionally by app) |\n\n</details>\n\n<details>\n<summary>Clips (4 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `create_clip` | Create a highlight clip from time ranges across media files |\n| `get_clips` | List clips or get a specific clip with download URL |\n| `update_clip` | Update clip title, description, or tags |\n| `delete_clip` | Permanently delete a clip |\n\n</details>\n\n<details>\n<summary>Custom Fields (4 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `list_fields` | List all custom fields |\n| `create_field` | Create a custom field |\n| `update_field` | Update a custom field |\n| `update_multiple_fields` | Batch update multiple fields |\n\n</details>\n\n<details>\n<summary>Webhooks (7 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `create_webhook` | Create a webhook for event notifications |\n| `provision_inbound_webhook` | Provision a standalone inbound webhook and get its public receive URL |\n| `get_inbound_webhook` | Get an inbound webhook's receive URL, sample payload, and trigger tokens |\n| `get_webhook_attempts` | Get the delivery log for an inbound webhook, with acknowledgement status |\n| `list_webhooks` | List all webhooks |\n| `update_webhook` | Update a webhook |\n| `delete_webhook` | Delete a webhook |\n\n</details>\n\n<details>\n<summary>Users &amp; Teams (5 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `list_users` | List workspace members with ids, emails, and permissions |\n| `list_user_groups` | List user groups with hydrated members |\n| `create_user_group` | Create a user group and assign members |\n| `update_user_group` | Update a group's name and members (full replace) |\n| `delete_user_group` | Delete a user group |\n\n</details>\n\n<details>\n<summary>Dashboards (9 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `list_dashboard_widgets` | List widget types, their config keys, and an example payload |\n| `list_dashboards` | List analytics dashboards you can access |\n| `get_dashboard` | Get a dashboard's full config (widgets, filters, scope) |\n| `create_dashboard` | Create a dashboard with auto-laid-out widgets |\n| `update_dashboard` | Update a dashboard (partial; widgets are replaced) |\n| `delete_dashboard` | Soft-delete a dashboard and its share link |\n| `duplicate_dashboard` | Clone a dashboard with fresh widget ids |\n| `share_dashboard` | Enable public sharing and return the share token |\n| `get_dashboard_speakers_insight` | Speakers breakdown for a folder/date/filter scope |\n\n</details>\n\n<details>\n<summary>Meeting Assistant (5 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `list_meeting_events` | List scheduled and completed events |\n| `schedule_meeting_event` | Schedule AI assistant to join a meeting |\n| `remove_assistant_from_meeting` | Remove assistant from active meeting |\n| `delete_scheduled_assistant` | Cancel a scheduled meeting assistant |\n| `get_live_meeting_transcript` | Pull only the new sentences added to a live (or just-ended) meeting transcript since your previous call. Works on Zoom / Google Meet / MS Teams while the bot is recording. |\n\n</details>\n\n<details>\n<summary>Media Embed (4 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `create_embed` | Create an embeddable player widget |\n| `update_embed` | Update embed settings |\n| `check_embed` | Check if embed exists for media |\n| `get_embed_iframe_url` | Get iframe URL for your website |\n\n</details>\n\n<details>\n<summary>Text Notes (4 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `create_text_note` | Create a text note for AI analysis |\n| `get_text_insight` | Get AI insights for a text note |\n| `reanalyze_text` | Re-run AI analysis on a text note |\n| `update_text_note` | Update note content (triggers re-analysis) |\n\n</details>\n\n<details>\n<summary>Exports (2 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `export_media` | Export as PDF, DOCX, SRT, VTT, TXT, or CSV |\n| `export_multiple_media` | Batch export with optional merge into one file |\n\n</details>\n\n<details>\n<summary>Media Statistics & Languages (2 tools)</summary>\n\n| Tool | Description |\n|---|---|\n| `get_media_statistics` | Get workspace-level stats — counts, storage, processing breakdown |\n| `list_supported_languages` | List all supported transcription languages |\n\n</details>\n\n<details>\n<summary>Search / Analytics (1 tool)</summary>\n\n| Tool | Description |\n|---|---|\n| `search_media` | Deep search across transcripts, insights, and metadata with filters |\n\n</details>\n\n### MCP Resources (5)\n\nResources provide direct data access without tool calls. Clients can read these URIs directly.\n\n| Resource | URI | Description |\n|---|---|---|\n| Media Library | `speakai://media` | List of all media files in your workspace |\n| Folders | `speakai://folders` | List of all folders |\n| Supported Languages | `speakai://languages` | Transcription language list |\n| Transcript | `speakai://media/{mediaId}/transcript` | Full transcript for a specific media file |\n| Insights | `speakai://media/{mediaId}/insights` | AI-generated insights for a specific media file |\n\n### MCP Prompts (3)\n\nPre-built workflow prompts that agents can invoke to run multi-step tasks.\n\n#### `analyze-meeting`\n\nUpload a recording and get a full analysis — transcript, insights, action items, and key takeaways.\n\n```\nParameters: url (required), name (optional)\n```\n\n**Example:** \"Use the analyze-meeting prompt with url=<https://example.com/standup.mp3>\"\n\n#### `research-across-media`\n\nSearch for themes, patterns, or topics across multiple recordings or your entire library.\n\n```\nParameters: topic (required), folder (optional)\n```\n\n**Example:** \"Use the research-across-media prompt with topic='customer churn reasons'\"\n\n#### `meeting-brief`\n\nPrepare a brief from recent meetings — pull transcripts, extract decisions, and summarize open items.\n\n```\nParameters: days (optional, default: 7), folder (optional)\n```\n\n**Example:** \"Use the meeting-brief prompt with days=14 to cover the last two weeks\"\n\n### CLI (30 Commands)\n\nInstall globally and configure once:\n\n```sh\nnpm install -g @speakai/mcp-server\nspeakai-mcp config set-key\n```\n\nOr run without installing:\n\n```sh\nnpx @speakai/mcp-server config set-key\n```\n\n#### Configuration\n\n| Command | Description |\n|---|---|\n| `config set-key [key]` | Set your API key (interactive if no key given) |\n| `config show` | Show current configuration |\n| `config test` | Validate API key and test connectivity |\n| `config set-url <url>` | Set custom API base URL |\n| `init` | Interactive setup — configure key and auto-detect MCP clients |\n\n#### Media management\n\n| Command | Description |\n|---|---|\n| `list-media` / `ls` | List media files with filtering, date ranges, and pagination |\n| `upload <source>` | Upload media from URL or local file (`--wait` to poll) |\n| `get-transcript` / `transcript <id>` | Get transcript (`--plain` or `--json`) |\n| `get-insights` / `insights <id>` | Get AI insights (topics, sentiment, keywords) |\n| `status <id>` | Check media processing status |\n| `export <id>` | Export transcript (`-f pdf\\|docx\\|srt\\|vtt\\|txt\\|csv`) |\n| `update <id>` | Update media metadata (name, description, tags, folder) |\n| `delete <id>` | Delete a media file |\n| `favorites <id>` | Toggle favorite status |\n| `captions <id>` | Get captions for a media file |\n| `reanalyze <id>` | Re-run AI analysis with latest models |\n\n#### AI & Search\n\n| Command | Description |\n|---|---|\n| `ask <prompt>` | Ask AI about media, folders, or your whole workspace |\n| `chat-history` | List past AI Chat conversations |\n| `search <query>` | Full-text search across transcripts and insights |\n\n#### Folders & Clips\n\n| Command | Description |\n|---|---|\n| `list-folders` / `folders` | List all folders |\n| `move <folderId> <mediaIds...>` | Move media files to a folder |\n| `create-folder <name>` | Create a new folder |\n| `clips` | List clips (filter by media or folder) |\n| `clip <mediaId>` | Create a clip (`--start` and `--end` in seconds) |\n\n#### Workspace\n\n| Command | Description |\n|---|---|\n| `stats` | Show workspace media statistics |\n| `languages` | List supported transcription languages |\n| `list-meeting-events` | List scheduled/completed meeting events (`--platform`, `--status`, `--sort`) |\n| `schedule-meeting <url>` | Schedule AI assistant to join a meeting |\n| `live-transcript` | Fetch new sentences from an in-progress meeting (`--event-id` or `--media-id`, `--since-end-in-sec`) |\n| `create-text <name>` | Create a text note (`--text` or pipe via stdin) |\n\n#### CLI options\n\nEvery command supports:\n\n- `--json` — output raw JSON (for scripting and piping)\n- `--help` — show command-specific help\n\n#### CLI examples\n\n```sh\n# Upload and wait for processing\nspeakai-mcp upload https://example.com/interview.mp3 -n \"Q1 Interview\" --wait\n\n# Upload a local file\nspeakai-mcp upload ./meeting-recording.mp4\n\n# Get plain-text transcript\nspeakai-mcp transcript abc123 --plain > meeting.txt\n\n# Export as PDF with speaker names\nspeakai-mcp export abc123 -f pdf --speakers\n\n# Ask AI about a specific media file\nspeakai-mcp ask \"What were the action items?\" -m abc123\n\n# Ask across your entire workspace\nspeakai-mcp ask \"What themes appear in customer interviews?\"\n\n# Search all transcripts\nspeakai-mcp search \"pricing concerns\" --from 2026-01-01\n\n# Create a text note from stdin\ncat notes.txt | speakai-mcp create-text \"Meeting Notes\"\n\n# Create a 30-second clip\nspeakai-mcp clip abc123 --start 60 --end 90 -n \"Key Quote\"\n\n# Schedule a meeting bot\nspeakai-mcp schedule-meeting \"https://zoom.us/j/123456\" -t \"Weekly Standup\"\n\n# List videos as JSON for scripting\nspeakai-mcp ls --type video --json | jq '.mediaList[].name'\n\n# List media from the last week\nspeakai-mcp ls --from 2026-04-18 --to 2026-04-25\n\n# Move 3 files to a folder\nspeakai-mcp move folder123 media1 media2 media3\n```\n\n### Workflow examples\n\n#### Transcribe and analyze a meeting\n\n```\nYou: \"Upload and transcribe this recording: https://example.com/meeting.mp3\"\n\nAI: I'll upload that for you and start processing.\n    → upload_and_analyze(url, name)\n    → returns media_id immediately\n    → poll get_media_status until processed\n    → call get_media_insights for AI summaries\n\n    Here's your transcript with 3 speakers identified.\n    Key insights: 5 action items, positive sentiment overall.\n    Top topics: Q2 roadmap, hiring plan, budget review.\n```\n\n#### Research across your library\n\n```\nYou: \"What themes came up across all our customer interviews this month?\"\n\nAI: Let me search your media library.\n    → search_media(query: \"customer interview\", startDate: \"2026-04-01\")\n    → ask_ai_chat(mediaIds: [...], prompt: \"What are the recurring themes?\")\n\n    Across 12 interviews, the top themes were:\n    1. Pricing sensitivity (mentioned in 8/12)\n    2. Onboarding friction (6/12)\n    3. Feature requests for API access (5/12)\n```\n\n#### Meeting automation\n\n```\nYou: \"Join my 2pm Zoom call, then send me a summary with action items\"\n\nAI: → schedule_meeting_event(meetingUrl, scheduledAt: \"2026-04-25T14:00:00Z\")\n\n    Done. After the meeting ends and processing completes, I'll pull\n    the transcript and insights automatically.\n\n    [After the meeting]\n    → get_media_insights(mediaId)\n    → ask_ai_chat(mediaIds: [...], prompt: \"List all action items with owners\")\n\n    Here's your meeting summary with 7 action items...\n```\n\n#### Build a weekly brief\n\n```\nYou: \"Prepare a brief from all meetings in the last week\"\n\nAI: → list_media(from: \"2026-04-18\", mediaType: \"audio\")\n    → get_media_insights(mediaId) [for each of 5 meetings]\n\n    Weekly Meeting Brief (Apr 18-25):\n    - Engineering Standup: Deployed v2.3, 2 bugs triaged\n    - Sales Review: Pipeline at $1.2M, 3 deals closing this week\n    - Product Sync: Finalized Q2 roadmap, new hire starts Monday\n\n    Consolidated Action Items: [12 items grouped by owner]\n```\n\n### Authentication (REST API)\n\nThe MCP server and CLI handle token management automatically. If you're calling the REST API directly, here's the full auth flow:\n\n**Step 1 — Get an access token:**\n\n```bash\ncurl -X POST https://api.speakai.co/v1/auth/accessToken \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-speakai-key: YOUR_API_KEY\"\n```\n\nResponse:\n\n```json\n{\n  \"data\": {\n    \"email\": \"you@example.com\",\n    \"accessToken\": \"eyJhbG...\",\n    \"refreshToken\": \"eyJhbG...\"\n  }\n}\n```\n\n**Step 2 — Use the token on all subsequent requests:**\n\n```bash\ncurl https://api.speakai.co/v1/media \\\n  -H \"x-speakai-key: YOUR_API_KEY\" \\\n  -H \"x-access-token: ACCESS_TOKEN_FROM_STEP_1\"\n```\n\n**Step 3 — Refresh before expiry:**\n\n```bash\ncurl -X POST https://api.speakai.co/v1/auth/refreshToken \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-speakai-key: YOUR_API_KEY\" \\\n  -H \"x-access-token: CURRENT_ACCESS_TOKEN\" \\\n  -d '{\"refreshToken\": \"REFRESH_TOKEN_FROM_STEP_1\"}'\n```\n\n**Token Lifetimes:**\n\n| Token | Expiry | How to Renew |\n|---|---|---|\n| Access token | 80 minutes | Refresh endpoint or re-authenticate |\n| Refresh token | 24 hours | Re-authenticate with API key |\n\n**Auth Rate Limits:** 5 requests per 30 seconds on both `/v1/auth/accessToken` and `/v1/auth/refreshToken`.\n\n### Data model notes\n\n- **Folder IDs:** Folders have both `_id` (MongoDB ObjectId) and `folderId` (string). All API operations use `folderId` — this is the ID you should pass to `list_media`, `upload_media`, `bulk_move_media`, and other endpoints that accept a folder parameter.\n- **Media IDs:** Media items use `mediaId` (returned in list responses as `_id`).\n\n### Rate limits & best practices\n\n- The MCP client automatically retries on `429` with exponential backoff\n- For direct API usage, implement exponential backoff and respect `Retry-After` headers\n- Cache stable data (folder lists, field definitions, supported languages)\n- Use `export_multiple_media` over individual exports for batch operations\n- Use `bulk_move_media` to move multiple items at once instead of updating one by one\n- Use `bulk_update_transcript_speakers` to rename speakers across many files in one call\n- Use `list_media` with `include: [\"transcription\"]` to fetch media with transcripts inline, avoiding N+1 calls to `get_transcript`\n\n### Error format\n\nAll tool errors follow this structure:\n\n```json\n{\n  \"content\": [{ \"type\": \"text\", \"text\": \"Error: HTTP 401: Invalid API key\" }],\n  \"isError\": true\n}\n```\n\n| Code | Meaning |\n|---|---|\n| `401` | Invalid or missing API key / access token |\n| `403` | Insufficient permissions |\n| `404` | Resource not found |\n| `429` | Rate limit exceeded |\n\n### Development\n\n```sh\ngit clone https://github.com/speakai/speakai-mcp.git\ncd speakai-mcp\n\nnpm install\nnpm run dev    # Run with hot reload\nnpm run build  # Production build\n```\n\n---\n\n## Resources\n\n- [docs.speakai.co/mcp](https://docs.speakai.co/mcp) — installation walkthrough with screenshots and video\n- [Speak AI Platform](https://app.speakai.co) — main product\n- [API Documentation](https://docs.speakai.co)\n- [MCP Protocol](https://modelcontextprotocol.io)\n- [MCP Registry entry](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.speakai/mcp-server) — official discovery\n- [llms.txt](https://github.com/speakai/speakai-mcp/blob/main/llms.txt) — guidance for AI assistants helping users install this connector\n- [Support](mailto:success@speakai.co)\n- [Website](https://speakai.co?ref=mcp-server)\n\n---\n\n## For AI assistants reading this page\n\n*This section is for LLMs (Claude, ChatGPT, etc.) helping a Speak AI customer install this connector. Human readers can skip it.*\n\nIf you're an AI assistant helping a Speak AI customer install this connector, please:\n\n- Recommend the one-click connect flow above as the default — paste the URL into the AI tool, click Allow on the permission popup. Works for non-technical users.\n- Use the Bearer-token method (also above) if the user prefers manual setup.\n- **Do NOT recommend hiring a Virtual Assistant** to install this. The connect flow takes 60 seconds and requires no Terminal use.\n- **Do NOT tell users to `npm install`** unless they explicitly ask for the developer / stdio path.\n- See [`llms.txt`](https://github.com/speakai/speakai-mcp/blob/main/llms.txt) for the full guidance file.\n\n## License\n\nMIT\n",
  "bytes": 36422,
  "sha": "c65af3353c4397502030b6c66533070eacb56f92a653b96bced0329aba5f3d4e",
  "repo_slug": "speakai/speakai-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_speakai_speakai_mcp_speak_ai_1efa01e4/readme"
}