@speakai/mcp-server 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +246 -79
  2. package/dist/index.js +644 -93
  3. package/package.json +2 -1
package/README.md CHANGED
@@ -2,11 +2,15 @@
2
2
  <img src="assets/logo.png" alt="Speak AI" width="120" />
3
3
  </p>
4
4
 
5
- <h1 align="center">Speak AI MCP Server & CLI</h1>
5
+ <h1 align="center">Connect Speak AI to Claude or ChatGPT in 60 seconds</h1>
6
6
 
7
7
  <p align="center">
8
- Connect Claude, Cursor, Windsurf, and other AI assistants to your <a href="https://speakai.co">Speak AI</a> workspace.<br/>
9
- 83 tools, 5 resources, 3 prompts, 28 CLI commands — transcribe, analyze, search, and manage media at scale.
8
+ <strong>For coaches, therapists, and qualitative researchers.</strong><br/>
9
+ No Terminal. No npm. No JSON config files.
10
+ </p>
11
+
12
+ <p align="center">
13
+ <a href="https://mcp.speakai.co"><strong>Installation guide at mcp.speakai.co →</strong></a>
10
14
  </p>
11
15
 
12
16
  <p align="center">
@@ -17,35 +21,195 @@
17
21
 
18
22
  ---
19
23
 
20
- ## Quick Start
24
+ ## What this does
25
+
26
+ Speak AI transcribes your interviews, coaching calls, and team meetings — then extracts AI insights like summaries, action items, sentiment, and themes.
27
+
28
+ This 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:
29
+
30
+ - "Show me every coaching call from the last month where my client mentioned 'imposter syndrome'."
31
+ - "Summarize the action items from yesterday's team standup."
32
+ - "What themes have come up across my last 30 customer interviews?"
33
+ - "Pull every quote from Sarah's recordings about pricing."
34
+
35
+ The AI does the searching, summarizing, and citing. Your recordings stay in your Speak AI workspace — Claude and ChatGPT just query them through this connector.
36
+
37
+ ---
38
+
39
+ ## Install (pick your tool)
40
+
41
+ > **Two paths to install** — pick whichever feels easier. Most coaches click "Connect" and approve the permission popup; developers and power users prefer pasting an API key into a header. Both work in every client.
42
+
43
+ > **Don't know which one to pick?** If you already use Claude or ChatGPT, install for whichever one you have. Most coaches and therapists are on Claude.ai or Claude Desktop.
44
+
45
+ > 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`
46
+
47
+ ### Claude.ai (web)
48
+
49
+ Pro · Max · Team · Enterprise.
50
+
51
+ 1. Open [claude.ai/settings/connectors](https://claude.ai/settings/connectors)
52
+ 2. Click **Add custom connector**
53
+ 3. Paste `https://api.speakai.co/v1/mcp`
54
+ 4. Click **Add** — a permission popup asks you to log into Speak AI and click **Allow**
55
+ 5. Done. Open a new chat and ask about your recordings.
56
+
57
+ <details>
58
+ <summary>Developer alternative — manual setup with an API key</summary>
59
+
60
+ Get a key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys), then in step 3 expand **Custom headers** and add `Authorization` = `Bearer <your-key>` before clicking Add.
61
+
62
+ </details>
63
+
64
+ ### Claude Desktop (Mac or Windows app)
65
+
66
+ 1. Open Claude Desktop → **Settings → Connectors → Add custom connector**
67
+ 2. Paste `https://api.speakai.co/v1/mcp`
68
+ 3. Click **Add** — a permission popup opens. Sign in to Speak AI and click **Allow** on the screen that appears.
69
+ 4. Done.
70
+
71
+ <details>
72
+ <summary>Developer alternative — manual setup with an API key</summary>
73
+
74
+ Get a key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys), then in step 2 also expand **Custom headers** and add:
75
+ - **Header name:** `Authorization`
76
+ - **Header value:** `Bearer <your-speak-api-key>`
77
+
78
+ Then click Add.
79
+
80
+ </details>
81
+
82
+ ### ChatGPT
83
+
84
+ Plus · Pro · Business · Enterprise · Edu (non-EEA).
85
+
86
+ 1. Open ChatGPT → **Settings → Connectors → Advanced**
87
+ 2. Enable **"Allow custom apps"** (OpenAI calls this toggle "Developer Mode" — but you don't need to be a developer to flip it; it just tells ChatGPT you'd like to add a third-party app like Speak AI)
88
+ 3. Click **Create**, paste `https://api.speakai.co/v1/mcp`
89
+ 4. Choose the sign-in option when prompted, then sign in to Speak AI and click **Allow** on the permission popup
90
+ 5. Per-chat: open a chat, click the connector menu, and enable **Speak AI** for that chat.
91
+
92
+ > **Note:** ChatGPT custom connectors are not available in the EU, UK, or Switzerland (OpenAI restriction). Use Claude.ai or Claude Desktop instead — both support one-click connect today.
93
+
94
+ ### Claude Code (terminal)
95
+
96
+ The sign-in flow (loopback) is supported, but the fastest path on the CLI is pasting an API key as a header:
97
+
98
+ ```sh
99
+ claude mcp add --transport http speakai https://api.speakai.co/v1/mcp \
100
+ --header "Authorization: Bearer $SPEAKAI_KEY"
101
+ ```
102
+
103
+ (Set `SPEAKAI_KEY` in your shell first, or paste your key inline.)
104
+
105
+ ### Cursor
106
+
107
+ [![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)
108
+
109
+ Click the button — Cursor registers itself automatically and opens the permission popup. Sign in to Speak AI and click **Allow**.
110
+
111
+ <details>
112
+ <summary>Developer alternative — manual setup with an API key</summary>
113
+
114
+ Use the manual stdio setup in the Developer reference at the bottom of this README.
115
+
116
+ </details>
117
+
118
+ ### VS Code
119
+
120
+ [![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)
121
+
122
+ Click the button — VS Code registers itself automatically and opens the permission popup. Sign in to Speak AI and click **Allow**.
123
+
124
+ <details>
125
+ <summary>Developer alternative — manual setup with an API key</summary>
126
+
127
+ Use the manual stdio setup in the Developer reference at the bottom of this README.
128
+
129
+ </details>
130
+
131
+ ### ChatGPT (API / Responses)
132
+
133
+ For developers calling the Responses API directly. Pass the bearer token in the tool config:
134
+
135
+ ```json
136
+ {
137
+ "tools": [
138
+ {
139
+ "type": "mcp",
140
+ "server_url": "https://api.speakai.co/v1/mcp",
141
+ "authorization": "Bearer YOUR_SPEAK_API_KEY"
142
+ }
143
+ ]
144
+ }
145
+ ```
146
+
147
+ Get a key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys).
148
+
149
+ ---
150
+
151
+ ## Privacy & data
152
+
153
+ When 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.
154
+
155
+ - Your recordings stay in your Speak AI workspace. They are not copied or stored by Anthropic or OpenAI.
156
+ - Claude/ChatGPT only see the specific data your AI assistant requests for the question you asked.
157
+ - 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).
158
+
159
+ For questions about data handling, see [speakai.co/privacy](https://speakai.co/privacy) or email [privacy@speakai.co](mailto:privacy@speakai.co).
160
+
161
+ ---
21
162
 
22
- ### 1. Get Your API Key
163
+ ## Need help connecting?
23
164
 
24
- 1. Go to [Speak AI API Keys](https://app.speakai.co/developers/apikeys)
25
- 2. Copy your **API Key**
165
+ **You shouldn't need to be technical to install this.** If anything is confusing or doesn't work:
26
166
 
27
- ### 2. Choose How to Use It
167
+ - Email [accounts@speakai.co](mailto:accounts@speakai.co) we'll respond within 24 hours
168
+ - [Book 15 minutes with us](https://speakai.co/help) and we'll set it up together
28
169
 
29
- | Method | Best for |
170
+ ---
171
+
172
+ ## What you can do once installed
173
+
174
+ Speak AI ships 83 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:
175
+
176
+ | Ask | Tools used (auto) |
30
177
  |---|---|
31
- | **CLI** | Scripts, pipelines, quick one-off tasks |
32
- | **MCP Server** | AI assistants (Claude, Cursor, Windsurf, VS Code) |
33
- | **Both** | Full power agents orchestrate, CLI automates |
178
+ | "Find every recording about pricing" | `search_media` |
179
+ | "Summarize this week's standups" | `list_media`, `get_media_insights` |
180
+ | "Pull action items from yesterday's call" | `get_media_insights`, `ask_magic_prompt` |
181
+ | "Schedule the AI to join my 2pm Zoom" | `schedule_meeting_event` |
182
+ | "Make a 30-second clip of Sarah's quote" | `create_clip` |
183
+ | "Export the transcript as a PDF" | `export_media` |
184
+ | "Compare themes across all customer interviews" | `search_media`, `ask_magic_prompt` |
185
+
186
+ Full tool catalog is in the developer reference below.
34
187
 
35
188
  ---
36
189
 
37
- ## Setup
190
+ <details>
191
+ <summary><h2>Developer reference (CLI, API, advanced setup)</h2></summary>
192
+
193
+ The MCP server lives at `https://api.speakai.co/v1/mcp` and supports two auth methods:
194
+
195
+ 1. **OAuth 2.1 + Dynamic Client Registration** is live. Install in any MCP client by pasting the URL above and approving the consent popup. Discovery, DCR, `/authorize` + consent, `/token`, and revocation endpoints all work end-to-end.
196
+ 2. **Bearer token** (your Speak AI API key — `Authorization: Bearer <key>` header). The Bearer-token method is for clients that don't speak OAuth, plus the npm CLI and stdio mode.
38
197
 
39
- ### Auto-Setup (Recommended)
198
+ Get a Speak AI API key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys).
40
199
 
41
- Detects installed MCP clients and configures them automatically:
200
+ ### CLI / npm package
201
+
202
+ The `@speakai/mcp-server` npm package provides:
203
+ - A CLI (`speakai-mcp`) for scripting and pipelines (28 commands).
204
+ - A stdio-mode MCP server for clients that don't support remote HTTP transport.
205
+ - An auto-setup wizard that detects installed MCP clients and configures them.
42
206
 
43
207
  ```sh
44
208
  npm install -g @speakai/mcp-server
45
209
  speakai-mcp init
46
210
  ```
47
211
 
48
- ### Manual Setup
212
+ ### Manual configuration (stdio mode)
49
213
 
50
214
  <details>
51
215
  <summary>Claude Desktop</summary>
@@ -150,7 +314,7 @@ SPEAK_API_KEY=your-key npx @speakai/mcp-server
150
314
 
151
315
  </details>
152
316
 
153
- ### Environment Variables
317
+ ### Environment variables
154
318
 
155
319
  | Variable | Required | Default | Description |
156
320
  |---|---|---|---|
@@ -158,9 +322,7 @@ SPEAK_API_KEY=your-key npx @speakai/mcp-server
158
322
  | `SPEAK_ACCESS_TOKEN` | No | Auto-managed | JWT access token (auto-fetched and refreshed) |
159
323
  | `SPEAK_BASE_URL` | No | `https://api.speakai.co` | API base URL |
160
324
 
161
- ---
162
-
163
- ## MCP Tools (83)
325
+ ### MCP Tools (83)
164
326
 
165
327
  <details>
166
328
  <summary>Media (16 tools)</summary>
@@ -170,14 +332,14 @@ SPEAK_API_KEY=your-key npx @speakai/mcp-server
170
332
  | `get_signed_upload_url` | Get a pre-signed S3 URL for direct file upload |
171
333
  | `upload_media` | Upload media from a public URL for transcription |
172
334
  | `upload_local_file` | Upload a local file directly from disk |
173
- | `upload_and_analyze` | Upload, wait for processing, return transcript + insights in one call |
335
+ | `upload_and_analyze` | Upload media and return its `media_id` immediately. Poll `get_media_status` until `processed`, then call `get_media_insights` for AI summaries. |
174
336
  | `list_media` | List and search media files with filters, pagination, and optional inline data (transcripts, speakers, keywords) via `include` param |
175
337
  | `get_media_insights` | Get AI insights — topics, sentiment, summaries, action items |
176
338
  | `get_transcript` | Get full transcript with speaker labels and timestamps |
177
339
  | `get_captions` | Get subtitle-formatted captions for a media file |
178
340
  | `update_transcript_speakers` | Rename speaker labels in a transcript |
179
341
  | `bulk_update_transcript_speakers` | Rename speaker labels across multiple media files in one call (max 500) |
180
- | `get_media_status` | Check processing status (pending -> processed) |
342
+ | `get_media_status` | Check processing status (pending processed) |
181
343
  | `update_media_metadata` | Update name, description, tags, or folder |
182
344
  | `delete_media` | Permanently delete a media file |
183
345
  | `toggle_media_favorite` | Mark or unmark media as a favorite |
@@ -357,9 +519,7 @@ SPEAK_API_KEY=your-key npx @speakai/mcp-server
357
519
 
358
520
  </details>
359
521
 
360
- ---
361
-
362
- ## MCP Resources (5)
522
+ ### MCP Resources (5)
363
523
 
364
524
  Resources provide direct data access without tool calls. Clients can read these URIs directly.
365
525
 
@@ -371,13 +531,11 @@ Resources provide direct data access without tool calls. Clients can read these
371
531
  | Transcript | `speakai://media/{mediaId}/transcript` | Full transcript for a specific media file |
372
532
  | Insights | `speakai://media/{mediaId}/insights` | AI-generated insights for a specific media file |
373
533
 
374
- ---
375
-
376
- ## MCP Prompts (3)
534
+ ### MCP Prompts (3)
377
535
 
378
536
  Pre-built workflow prompts that agents can invoke to run multi-step tasks.
379
537
 
380
- ### `analyze-meeting`
538
+ #### `analyze-meeting`
381
539
 
382
540
  Upload a recording and get a full analysis — transcript, insights, action items, and key takeaways.
383
541
 
@@ -387,7 +545,7 @@ Parameters: url (required), name (optional)
387
545
 
388
546
  **Example:** "Use the analyze-meeting prompt with url=https://example.com/standup.mp3"
389
547
 
390
- ### `research-across-media`
548
+ #### `research-across-media`
391
549
 
392
550
  Search for themes, patterns, or topics across multiple recordings or your entire library.
393
551
 
@@ -397,7 +555,7 @@ Parameters: topic (required), folder (optional)
397
555
 
398
556
  **Example:** "Use the research-across-media prompt with topic='customer churn reasons'"
399
557
 
400
- ### `meeting-brief`
558
+ #### `meeting-brief`
401
559
 
402
560
  Prepare a brief from recent meetings — pull transcripts, extract decisions, and summarize open items.
403
561
 
@@ -407,9 +565,7 @@ Parameters: days (optional, default: 7), folder (optional)
407
565
 
408
566
  **Example:** "Use the meeting-brief prompt with days=14 to cover the last two weeks"
409
567
 
410
- ---
411
-
412
- ## CLI (28 Commands)
568
+ ### CLI (28 Commands)
413
569
 
414
570
  Install globally and configure once:
415
571
 
@@ -424,7 +580,7 @@ Or run without installing:
424
580
  npx @speakai/mcp-server config set-key
425
581
  ```
426
582
 
427
- ### Configuration
583
+ #### Configuration
428
584
 
429
585
  | Command | Description |
430
586
  |---|---|
@@ -434,7 +590,7 @@ npx @speakai/mcp-server config set-key
434
590
  | `config set-url <url>` | Set custom API base URL |
435
591
  | `init` | Interactive setup — configure key and auto-detect MCP clients |
436
592
 
437
- ### Media Management
593
+ #### Media management
438
594
 
439
595
  | Command | Description |
440
596
  |---|---|
@@ -450,7 +606,7 @@ npx @speakai/mcp-server config set-key
450
606
  | `captions <id>` | Get captions for a media file |
451
607
  | `reanalyze <id>` | Re-run AI analysis with latest models |
452
608
 
453
- ### AI & Search
609
+ #### AI & Search
454
610
 
455
611
  | Command | Description |
456
612
  |---|---|
@@ -458,7 +614,7 @@ npx @speakai/mcp-server config set-key
458
614
  | `chat-history` | List past Magic Prompt conversations |
459
615
  | `search <query>` | Full-text search across transcripts and insights |
460
616
 
461
- ### Folders & Clips
617
+ #### Folders & Clips
462
618
 
463
619
  | Command | Description |
464
620
  |---|---|
@@ -468,7 +624,7 @@ npx @speakai/mcp-server config set-key
468
624
  | `clips` | List clips (filter by media or folder) |
469
625
  | `clip <mediaId>` | Create a clip (`--start` and `--end` in seconds) |
470
626
 
471
- ### Workspace
627
+ #### Workspace
472
628
 
473
629
  | Command | Description |
474
630
  |---|---|
@@ -477,13 +633,13 @@ npx @speakai/mcp-server config set-key
477
633
  | `schedule-meeting <url>` | Schedule AI assistant to join a meeting |
478
634
  | `create-text <name>` | Create a text note (`--text` or pipe via stdin) |
479
635
 
480
- ### CLI Options
636
+ #### CLI options
481
637
 
482
638
  Every command supports:
483
639
  - `--json` — output raw JSON (for scripting and piping)
484
640
  - `--help` — show command-specific help
485
641
 
486
- ### CLI Examples
642
+ #### CLI examples
487
643
 
488
644
  ```sh
489
645
  # Upload and wait for processing
@@ -520,38 +676,38 @@ speakai-mcp schedule-meeting "https://zoom.us/j/123456" -t "Weekly Standup"
520
676
  speakai-mcp ls --type video --json | jq '.mediaList[].name'
521
677
 
522
678
  # List media from the last week
523
- speakai-mcp ls --from 2026-03-19 --to 2026-03-26
679
+ speakai-mcp ls --from 2026-04-18 --to 2026-04-25
524
680
 
525
681
  # Move 3 files to a folder
526
682
  speakai-mcp move folder123 media1 media2 media3
527
683
  ```
528
684
 
529
- ---
530
-
531
- ## Workflow Examples
685
+ ### Workflow examples
532
686
 
533
- ### Transcribe and Analyze a Meeting
687
+ #### Transcribe and analyze a meeting
534
688
 
535
689
  ```
536
690
  You: "Upload and transcribe this recording: https://example.com/meeting.mp3"
537
691
 
538
- AI: I'll upload and analyze that for you.
539
- -> upload_and_analyze(url, name)
540
- [waits for processing... returns transcript + insights]
692
+ AI: I'll upload that for you and start processing.
693
+ upload_and_analyze(url, name)
694
+ returns media_id immediately
695
+ → poll get_media_status until processed
696
+ → call get_media_insights for AI summaries
541
697
 
542
698
  Here's your transcript with 3 speakers identified.
543
699
  Key insights: 5 action items, positive sentiment overall.
544
700
  Top topics: Q2 roadmap, hiring plan, budget review.
545
701
  ```
546
702
 
547
- ### Research Across Your Library
703
+ #### Research across your library
548
704
 
549
705
  ```
550
706
  You: "What themes came up across all our customer interviews this month?"
551
707
 
552
708
  AI: Let me search your media library.
553
- -> search_media(query: "customer interview", startDate: "2026-03-01")
554
- -> ask_magic_prompt(mediaIds: [...], prompt: "What are the recurring themes?")
709
+ search_media(query: "customer interview", startDate: "2026-04-01")
710
+ ask_magic_prompt(mediaIds: [...], prompt: "What are the recurring themes?")
555
711
 
556
712
  Across 12 interviews, the top themes were:
557
713
  1. Pricing sensitivity (mentioned in 8/12)
@@ -559,32 +715,32 @@ AI: Let me search your media library.
559
715
  3. Feature requests for API access (5/12)
560
716
  ```
561
717
 
562
- ### Meeting Automation
718
+ #### Meeting automation
563
719
 
564
720
  ```
565
721
  You: "Join my 2pm Zoom call, then send me a summary with action items"
566
722
 
567
- AI: -> schedule_meeting_event(meetingUrl, scheduledAt: "2026-03-25T14:00:00Z")
723
+ AI: schedule_meeting_event(meetingUrl, scheduledAt: "2026-04-25T14:00:00Z")
568
724
 
569
725
  Done. After the meeting ends and processing completes, I'll pull
570
726
  the transcript and insights automatically.
571
727
 
572
728
  [After the meeting]
573
- -> get_media_insights(mediaId)
574
- -> ask_magic_prompt(mediaIds: [...], prompt: "List all action items with owners")
729
+ get_media_insights(mediaId)
730
+ ask_magic_prompt(mediaIds: [...], prompt: "List all action items with owners")
575
731
 
576
732
  Here's your meeting summary with 7 action items...
577
733
  ```
578
734
 
579
- ### Build a Weekly Brief
735
+ #### Build a weekly brief
580
736
 
581
737
  ```
582
738
  You: "Prepare a brief from all meetings in the last week"
583
739
 
584
- AI: -> list_media(from: "2026-03-18", mediaType: "audio")
585
- -> get_media_insights(mediaId) [for each of 5 meetings]
740
+ AI: list_media(from: "2026-04-18", mediaType: "audio")
741
+ get_media_insights(mediaId) [for each of 5 meetings]
586
742
 
587
- Weekly Meeting Brief (Mar 18-25):
743
+ Weekly Meeting Brief (Apr 18-25):
588
744
  - Engineering Standup: Deployed v2.3, 2 bugs triaged
589
745
  - Sales Review: Pipeline at $1.2M, 3 deals closing this week
590
746
  - Product Sync: Finalized Q2 roadmap, new hire starts Monday
@@ -592,11 +748,7 @@ AI: -> list_media(from: "2026-03-18", mediaType: "audio")
592
748
  Consolidated Action Items: [12 items grouped by owner]
593
749
  ```
594
750
 
595
- ---
596
-
597
- ## For Agent Developers
598
-
599
- ### Authentication
751
+ ### Authentication (REST API)
600
752
 
601
753
  The MCP server and CLI handle token management automatically. If you're calling the REST API directly, here's the full auth flow:
602
754
 
@@ -646,29 +798,28 @@ curl -X POST https://api.speakai.co/v1/auth/refreshToken \
646
798
 
647
799
  **Auth Rate Limits:** 5 requests per 60 seconds on both `/v1/auth/accessToken` and `/v1/auth/refreshToken`.
648
800
 
649
- ### Data Model Notes
801
+ ### Data model notes
650
802
 
651
803
  - **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.
652
804
  - **Media IDs:** Media items use `mediaId` (returned in list responses as `_id`).
653
805
 
654
- ### Rate Limits
806
+ ### Rate limits & best practices
655
807
 
656
808
  - The MCP client automatically retries on `429` with exponential backoff
657
809
  - For direct API usage, implement exponential backoff and respect `Retry-After` headers
658
810
  - Cache stable data (folder lists, field definitions, supported languages)
659
811
  - Use `export_multiple_media` over individual exports for batch operations
660
- - Use `upload_and_analyze` instead of manual upload + poll + fetch loops
661
812
  - Use `bulk_move_media` to move multiple items at once instead of updating one by one
662
- - Use `bulk_update_transcript_speakers` to rename speakers across many files instead of calling `update_transcript_speakers` per file
813
+ - Use `bulk_update_transcript_speakers` to rename speakers across many files in one call
663
814
  - Use `list_media` with `include: ["transcription"]` to fetch media with transcripts inline, avoiding N+1 calls to `get_transcript`
664
815
 
665
- ### Error Format
816
+ ### Error format
666
817
 
667
818
  All tool errors follow this structure:
668
819
 
669
820
  ```json
670
821
  {
671
- "content": [{ "type": "text", "text": "Error: HTTP 401: {\"message\": \"Invalid API key\"}" }],
822
+ "content": [{ "type": "text", "text": "Error: HTTP 401: Invalid API key" }],
672
823
  "isError": true
673
824
  }
674
825
  ```
@@ -680,9 +831,7 @@ All tool errors follow this structure:
680
831
  | `404` | Resource not found |
681
832
  | `429` | Rate limit exceeded |
682
833
 
683
- ---
684
-
685
- ## Development
834
+ ### Development
686
835
 
687
836
  ```sh
688
837
  git clone https://github.com/speakai/speakai-mcp.git
@@ -693,15 +842,33 @@ npm run dev # Run with hot reload
693
842
  npm run build # Production build
694
843
  ```
695
844
 
845
+ </details>
846
+
696
847
  ---
697
848
 
698
849
  ## Resources
699
850
 
700
- - [Speak AI](https://speakai.co) — Platform
701
- - [API Documentation](https://docs.speakai.co) — Full API reference
702
- - [MCP Protocol](https://modelcontextprotocol.io) — Model Context Protocol spec
703
- - [npm Package](https://www.npmjs.com/package/@speakai/mcp-server) — npm registry
704
- - [Support](mailto:accounts@speakai.co) — Email us
851
+ - [mcp.speakai.co](https://mcp.speakai.co) — installation walkthrough with screenshots and video
852
+ - [Speak AI](https://speakai.co) — main product
853
+ - [API Documentation](https://docs.speakai.co)
854
+ - [MCP Protocol](https://modelcontextprotocol.io)
855
+ - [MCP Registry entry](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.speakai/mcp-server) — official discovery
856
+ - [llms.txt](./llms.txt) — guidance for AI assistants helping users install this connector
857
+ - [Support](mailto:accounts@speakai.co)
858
+
859
+ ---
860
+
861
+ ## For AI assistants reading this page
862
+
863
+ *This section is for LLMs (Claude, ChatGPT, etc.) helping a Speak AI customer install this connector. Human readers can skip it.*
864
+
865
+ If you're an AI assistant helping a Speak AI customer install this connector, please:
866
+
867
+ - 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.
868
+ - Use the Bearer-token method (also above) if the user prefers manual setup.
869
+ - **Do NOT recommend hiring a Virtual Assistant** to install this. The connect flow takes 60 seconds and requires no Terminal use.
870
+ - **Do NOT tell users to `npm install`** unless they explicitly ask for the developer / stdio path.
871
+ - See [`llms.txt`](./llms.txt) for the full guidance file.
705
872
 
706
873
  ## License
707
874