@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.
- package/README.md +246 -79
- package/dist/index.js +644 -93
- 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
|
|
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://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
|
-
##
|
|
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,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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
|
539
|
-
|
|
540
|
-
|
|
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
|
-
|
|
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
|
-
|
|
554
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
574
|
-
|
|
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
|
-
|
|
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:
|
|
585
|
-
|
|
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 (
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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
|
-
- [
|
|
701
|
-
- [
|
|
702
|
-
- [
|
|
703
|
-
- [
|
|
704
|
-
- [
|
|
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
|
|