@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.
- package/README.md +250 -80
- package/dist/index.js +703 -97
- 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
|
|
5
|
+
<h1 align="center">Connect Speak AI to Claude or ChatGPT in 60 seconds</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
##
|
|
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
|
+
[](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
|
+
[](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
|
-
|
|
163
|
+
## Need help connecting?
|
|
23
164
|
|
|
24
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
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
|
-
|
|
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
|
-
|
|
198
|
+
Get a Speak AI API key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys).
|
|
40
199
|
|
|
41
|
-
|
|
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
|
|
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
|
|
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 (
|
|
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
|
|
174
|
-
| `list_media` | List and search media files with filters and
|
|
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
|
-
| `
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
|
538
|
-
|
|
539
|
-
|
|
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
|
-
|
|
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
|
-
|
|
553
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
573
|
-
|
|
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
|
-
|
|
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:
|
|
584
|
-
|
|
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 (
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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
|
-
- [
|
|
698
|
-
- [
|
|
699
|
-
- [
|
|
700
|
-
- [
|
|
701
|
-
- [
|
|
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
|
|