@speakai/mcp-server 1.1.1 → 1.3.0

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 +250 -80
  2. package/dist/index.js +703 -97
  3. package/package.json +3 -2
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
- 82 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://speakai.co/connect"><strong>Installation guide at speakai.co/connect →</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,25 +322,24 @@ 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 (82)
325
+ ### MCP Tools (83)
164
326
 
165
327
  <details>
166
- <summary>Media (15 tools)</summary>
328
+ <summary>Media (16 tools)</summary>
167
329
 
168
330
  | Tool | Description |
169
331
  |---|---|
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 |
174
- | `list_media` | List and search media files with filters and pagination |
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. |
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
- | `get_media_status` | Check processing status (pending -> processed) |
341
+ | `bulk_update_transcript_speakers` | Rename speaker labels across multiple media files in one call (max 500) |
342
+ | `get_media_status` | Check processing status (pending → processed) |
180
343
  | `update_media_metadata` | Update name, description, tags, or folder |
181
344
  | `delete_media` | Permanently delete a media file |
182
345
  | `toggle_media_favorite` | Mark or unmark media as a favorite |
@@ -356,9 +519,7 @@ SPEAK_API_KEY=your-key npx @speakai/mcp-server
356
519
 
357
520
  </details>
358
521
 
359
- ---
360
-
361
- ## MCP Resources (5)
522
+ ### MCP Resources (5)
362
523
 
363
524
  Resources provide direct data access without tool calls. Clients can read these URIs directly.
364
525
 
@@ -370,13 +531,11 @@ Resources provide direct data access without tool calls. Clients can read these
370
531
  | Transcript | `speakai://media/{mediaId}/transcript` | Full transcript for a specific media file |
371
532
  | Insights | `speakai://media/{mediaId}/insights` | AI-generated insights for a specific media file |
372
533
 
373
- ---
374
-
375
- ## MCP Prompts (3)
534
+ ### MCP Prompts (3)
376
535
 
377
536
  Pre-built workflow prompts that agents can invoke to run multi-step tasks.
378
537
 
379
- ### `analyze-meeting`
538
+ #### `analyze-meeting`
380
539
 
381
540
  Upload a recording and get a full analysis — transcript, insights, action items, and key takeaways.
382
541
 
@@ -386,7 +545,7 @@ Parameters: url (required), name (optional)
386
545
 
387
546
  **Example:** "Use the analyze-meeting prompt with url=https://example.com/standup.mp3"
388
547
 
389
- ### `research-across-media`
548
+ #### `research-across-media`
390
549
 
391
550
  Search for themes, patterns, or topics across multiple recordings or your entire library.
392
551
 
@@ -396,7 +555,7 @@ Parameters: topic (required), folder (optional)
396
555
 
397
556
  **Example:** "Use the research-across-media prompt with topic='customer churn reasons'"
398
557
 
399
- ### `meeting-brief`
558
+ #### `meeting-brief`
400
559
 
401
560
  Prepare a brief from recent meetings — pull transcripts, extract decisions, and summarize open items.
402
561
 
@@ -406,9 +565,7 @@ Parameters: days (optional, default: 7), folder (optional)
406
565
 
407
566
  **Example:** "Use the meeting-brief prompt with days=14 to cover the last two weeks"
408
567
 
409
- ---
410
-
411
- ## CLI (28 Commands)
568
+ ### CLI (28 Commands)
412
569
 
413
570
  Install globally and configure once:
414
571
 
@@ -423,7 +580,7 @@ Or run without installing:
423
580
  npx @speakai/mcp-server config set-key
424
581
  ```
425
582
 
426
- ### Configuration
583
+ #### Configuration
427
584
 
428
585
  | Command | Description |
429
586
  |---|---|
@@ -433,7 +590,7 @@ npx @speakai/mcp-server config set-key
433
590
  | `config set-url <url>` | Set custom API base URL |
434
591
  | `init` | Interactive setup — configure key and auto-detect MCP clients |
435
592
 
436
- ### Media Management
593
+ #### Media management
437
594
 
438
595
  | Command | Description |
439
596
  |---|---|
@@ -449,7 +606,7 @@ npx @speakai/mcp-server config set-key
449
606
  | `captions <id>` | Get captions for a media file |
450
607
  | `reanalyze <id>` | Re-run AI analysis with latest models |
451
608
 
452
- ### AI & Search
609
+ #### AI & Search
453
610
 
454
611
  | Command | Description |
455
612
  |---|---|
@@ -457,7 +614,7 @@ npx @speakai/mcp-server config set-key
457
614
  | `chat-history` | List past Magic Prompt conversations |
458
615
  | `search <query>` | Full-text search across transcripts and insights |
459
616
 
460
- ### Folders & Clips
617
+ #### Folders & Clips
461
618
 
462
619
  | Command | Description |
463
620
  |---|---|
@@ -467,7 +624,7 @@ npx @speakai/mcp-server config set-key
467
624
  | `clips` | List clips (filter by media or folder) |
468
625
  | `clip <mediaId>` | Create a clip (`--start` and `--end` in seconds) |
469
626
 
470
- ### Workspace
627
+ #### Workspace
471
628
 
472
629
  | Command | Description |
473
630
  |---|---|
@@ -476,13 +633,13 @@ npx @speakai/mcp-server config set-key
476
633
  | `schedule-meeting <url>` | Schedule AI assistant to join a meeting |
477
634
  | `create-text <name>` | Create a text note (`--text` or pipe via stdin) |
478
635
 
479
- ### CLI Options
636
+ #### CLI options
480
637
 
481
638
  Every command supports:
482
639
  - `--json` — output raw JSON (for scripting and piping)
483
640
  - `--help` — show command-specific help
484
641
 
485
- ### CLI Examples
642
+ #### CLI examples
486
643
 
487
644
  ```sh
488
645
  # Upload and wait for processing
@@ -519,38 +676,38 @@ speakai-mcp schedule-meeting "https://zoom.us/j/123456" -t "Weekly Standup"
519
676
  speakai-mcp ls --type video --json | jq '.mediaList[].name'
520
677
 
521
678
  # List media from the last week
522
- speakai-mcp ls --from 2026-03-19 --to 2026-03-26
679
+ speakai-mcp ls --from 2026-04-18 --to 2026-04-25
523
680
 
524
681
  # Move 3 files to a folder
525
682
  speakai-mcp move folder123 media1 media2 media3
526
683
  ```
527
684
 
528
- ---
529
-
530
- ## Workflow Examples
685
+ ### Workflow examples
531
686
 
532
- ### Transcribe and Analyze a Meeting
687
+ #### Transcribe and analyze a meeting
533
688
 
534
689
  ```
535
690
  You: "Upload and transcribe this recording: https://example.com/meeting.mp3"
536
691
 
537
- AI: I'll upload and analyze that for you.
538
- -> upload_and_analyze(url, name)
539
- [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
540
697
 
541
698
  Here's your transcript with 3 speakers identified.
542
699
  Key insights: 5 action items, positive sentiment overall.
543
700
  Top topics: Q2 roadmap, hiring plan, budget review.
544
701
  ```
545
702
 
546
- ### Research Across Your Library
703
+ #### Research across your library
547
704
 
548
705
  ```
549
706
  You: "What themes came up across all our customer interviews this month?"
550
707
 
551
708
  AI: Let me search your media library.
552
- -> search_media(query: "customer interview", startDate: "2026-03-01")
553
- -> 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?")
554
711
 
555
712
  Across 12 interviews, the top themes were:
556
713
  1. Pricing sensitivity (mentioned in 8/12)
@@ -558,32 +715,32 @@ AI: Let me search your media library.
558
715
  3. Feature requests for API access (5/12)
559
716
  ```
560
717
 
561
- ### Meeting Automation
718
+ #### Meeting automation
562
719
 
563
720
  ```
564
721
  You: "Join my 2pm Zoom call, then send me a summary with action items"
565
722
 
566
- AI: -> schedule_meeting_event(meetingUrl, scheduledAt: "2026-03-25T14:00:00Z")
723
+ AI: schedule_meeting_event(meetingUrl, scheduledAt: "2026-04-25T14:00:00Z")
567
724
 
568
725
  Done. After the meeting ends and processing completes, I'll pull
569
726
  the transcript and insights automatically.
570
727
 
571
728
  [After the meeting]
572
- -> get_media_insights(mediaId)
573
- -> 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")
574
731
 
575
732
  Here's your meeting summary with 7 action items...
576
733
  ```
577
734
 
578
- ### Build a Weekly Brief
735
+ #### Build a weekly brief
579
736
 
580
737
  ```
581
738
  You: "Prepare a brief from all meetings in the last week"
582
739
 
583
- AI: -> list_media(from: "2026-03-18", mediaType: "audio")
584
- -> 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]
585
742
 
586
- Weekly Meeting Brief (Mar 18-25):
743
+ Weekly Meeting Brief (Apr 18-25):
587
744
  - Engineering Standup: Deployed v2.3, 2 bugs triaged
588
745
  - Sales Review: Pipeline at $1.2M, 3 deals closing this week
589
746
  - Product Sync: Finalized Q2 roadmap, new hire starts Monday
@@ -591,11 +748,7 @@ AI: -> list_media(from: "2026-03-18", mediaType: "audio")
591
748
  Consolidated Action Items: [12 items grouped by owner]
592
749
  ```
593
750
 
594
- ---
595
-
596
- ## For Agent Developers
597
-
598
- ### Authentication
751
+ ### Authentication (REST API)
599
752
 
600
753
  The MCP server and CLI handle token management automatically. If you're calling the REST API directly, here's the full auth flow:
601
754
 
@@ -645,27 +798,28 @@ curl -X POST https://api.speakai.co/v1/auth/refreshToken \
645
798
 
646
799
  **Auth Rate Limits:** 5 requests per 60 seconds on both `/v1/auth/accessToken` and `/v1/auth/refreshToken`.
647
800
 
648
- ### Data Model Notes
801
+ ### Data model notes
649
802
 
650
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.
651
804
  - **Media IDs:** Media items use `mediaId` (returned in list responses as `_id`).
652
805
 
653
- ### Rate Limits
806
+ ### Rate limits & best practices
654
807
 
655
808
  - The MCP client automatically retries on `429` with exponential backoff
656
809
  - For direct API usage, implement exponential backoff and respect `Retry-After` headers
657
810
  - Cache stable data (folder lists, field definitions, supported languages)
658
811
  - Use `export_multiple_media` over individual exports for batch operations
659
- - Use `upload_and_analyze` instead of manual upload + poll + fetch loops
660
812
  - Use `bulk_move_media` to move multiple items at once instead of updating one by one
813
+ - Use `bulk_update_transcript_speakers` to rename speakers across many files in one call
814
+ - Use `list_media` with `include: ["transcription"]` to fetch media with transcripts inline, avoiding N+1 calls to `get_transcript`
661
815
 
662
- ### Error Format
816
+ ### Error format
663
817
 
664
818
  All tool errors follow this structure:
665
819
 
666
820
  ```json
667
821
  {
668
- "content": [{ "type": "text", "text": "Error: HTTP 401: {\"message\": \"Invalid API key\"}" }],
822
+ "content": [{ "type": "text", "text": "Error: HTTP 401: Invalid API key" }],
669
823
  "isError": true
670
824
  }
671
825
  ```
@@ -677,9 +831,7 @@ All tool errors follow this structure:
677
831
  | `404` | Resource not found |
678
832
  | `429` | Rate limit exceeded |
679
833
 
680
- ---
681
-
682
- ## Development
834
+ ### Development
683
835
 
684
836
  ```sh
685
837
  git clone https://github.com/speakai/speakai-mcp.git
@@ -690,15 +842,33 @@ npm run dev # Run with hot reload
690
842
  npm run build # Production build
691
843
  ```
692
844
 
845
+ </details>
846
+
693
847
  ---
694
848
 
695
849
  ## Resources
696
850
 
697
- - [Speak AI](https://speakai.co) — Platform
698
- - [API Documentation](https://docs.speakai.co) — Full API reference
699
- - [MCP Protocol](https://modelcontextprotocol.io) — Model Context Protocol spec
700
- - [npm Package](https://www.npmjs.com/package/@speakai/mcp-server) — npm registry
701
- - [Support](mailto:accounts@speakai.co) — Email us
851
+ - [speakai.co/connect](https://speakai.co/connect) — 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.
702
872
 
703
873
  ## License
704
874