Spoken
This MCP server lets you find podcast episodes, retrieve their transcripts, and check your credit balance.
Search published podcast episodes by free-text query or pasted Spotify/YouTube URL; returns id, title, podcast, and date; does not consume credits.
Fetch an episode transcript as clean Markdown with real speaker names and timestamps using an episode id; costs 1 credit on first fetch, repeat fetches are free, and errors are never charged.
Check the current Spoken credit balance, account email, and recent usage for the configured API key; does not consume credits.
Spoken — podcast transcript API and MCP server, clean Markdown with real speaker names
Spoken is a transcript API that turns any published podcast into clean Markdown with real speaker names — not "Speaker 1." One API call returns named, timestamped text, ready for LLMs, RAG pipelines, summarizers, and search. This repo also ships spoken-mcp, an MCP server that gives Claude Desktop, Claude Code, Cursor and Cline the same transcripts as tools — see Use as an MCP server.
It's a transcript retrieval API, not a speech-to-text service: it works on already-published podcasts, so you skip uploading audio, running diarization, and mapping anonymous speaker labels by hand. For published shows that's typically 5–10× cheaper than running the audio through a transcription service.
🎙️ Real speaker names, resolved automatically
📄 Clean Markdown with timestamps, tuned for LLM context windows and RAG chunking
🔎 Search by text query or paste a Spotify/YouTube URL
💳 Pay-per-use credits — no subscription, failed calls never charged, repeat fetches free
🤖 Agent-native — ships with an Agent Skill,
agents.md,llms.txt, and an OpenAPI spec
Get a key at spoken.md — or try it free with the demo key pt_demo (search works fully; transcripts limited to the demo episode).
Quickstart
# 1. Find an episode (by text, or paste a Spotify/YouTube URL)
curl -s 'https://spoken.md/search?q=huberman+sleep' \
-H 'x-api-key: pt_demo'
# 2. Fetch the transcript as Markdown
curl -s 'https://spoken.md/transcripts/1000651996090' \
-H 'x-api-key: pt_demo'The transcript comes back as Markdown with named speakers and timestamps:
**John Smith** (0:00)
Welcome to the show. Today we're talking about...
**Jane Doe** (0:15)
Thanks for having me.Related MCP server: ParrotScribe MCP Server
Endpoints
Method & path | What it does | Credits |
| Find episodes; returns | 0 |
| List a show's full back catalog; returns every episode's | 0 |
| Return the Markdown transcript | 1 on first fetch, 0 on repeat |
| Current credit balance + usage history | 0 |
| The shows this key keeps up with (inferred from fetches, or declared with | 0 |
| New episodes on those shows that have not been fetched yet, each with a transcript URL; | 0 |
| New-key checkout (Stripe) | — |
| Returning-customer top-up (Stripe) | — |
Auth is the x-api-key header. Responses include X-Credits-Remaining and X-Credits-Charged. See agents.md for the full error table and response shapes.
Examples
examples/podcast_summarizer.py— fetch a transcript and summarize itexamples/rag_pipeline.py— chunk a transcript for a vector store / RAGexamples/quickstart.sh— search → transcript in two curl callsexamples/archive-show.sh— archive a show's entire back catalogue, one file per episode
Use from Python
The spoken-md package wraps the API with no dependencies outside the standard library, and installs a spoken-md command.
pip install spoken-mdfrom spoken_md import Spoken
spoken = Spoken() # SPOKEN_API_KEY, or the demo key
episode = spoken.search("huberman sleep")[0]
print(spoken.transcript(episode.id)) # Markdown with real speaker namesarchive(podcast_id, skip=...) walks a whole show and is resumable; errors are typed by status (PaymentRequired carries the top-up URL, NotFound means no transcript). See python/README.md.
Use as an MCP server
Spoken is a Model Context Protocol server two ways: hosted at https://spoken.md/mcp, and as spoken-mcp, the package in this repo, for clients that run a server locally (Claude Desktop, Cursor, Cline, …). Both provide the same eight tools:
Tool | Description |
| Find episodes by text or a pasted Spotify/YouTube URL |
| List a show's entire back-catalog from a |
| Fetch an episode's transcript as Markdown with real speaker names |
| Check remaining credits |
| The shows this key is kept current on, inferred from fetches or declared |
| Declare a follow for a show (or clear a mute) |
| Mute a show so it leaves the list and fetches do not re-add it |
| New episodes on followed shows that have not been fetched yet, with transcript links |
Keeping a knowledge base current is list_new_episodes on a schedule and get_transcript on what it lists: each fetch raises that show's floor.
Hosted
Nothing to install. Point a client that connects to a URL at https://spoken.md/mcp (Streamable HTTP):
claude mcp add --transport http spoken https://spoken.md/mcpThe client asks you to sign in the first time a tool needs your key. To skip that, send the key as a header yourself: Authorization: Bearer pt_your_key.
A client that can only sign in with OAuth, such as ChatGPT in developer mode, is sent to a page where you paste your key once. Steps for each app: spoken.md/mcp-server. With no key at all, searching, listing a show and the demo episode work.
Local
Add it to your MCP client config (e.g. Claude Desktop's claude_desktop_config.json):
{
"mcpServers": {
"spoken": {
"command": "npx",
"args": ["-y", "spoken-mcp"],
"env": { "SPOKEN_API_KEY": "pt_your_key" }
}
}
}SPOKEN_API_KEY defaults to pt_demo (search works fully; transcripts limited to the demo episode). Get a real key at spoken.md.
Run from source instead:
npm install && npm run build
SPOKEN_API_KEY=pt_your_key node dist/index.jsUse with AI agents
Spoken is designed to be called by agents. Point your agent at the Agent Skill (also served at https://spoken.md/.well-known/skills/spoken-md/SKILL.md), or hand it agents.md. The OpenAPI spec makes it easy to wrap as a tool for any function-calling or MCP-compatible client (Claude, GPT, Cursor).
Pricing
Pay-per-use credits, no subscription. New keys: 100 for $15, 500 for $50, 2,000 for $160. Machine-readable at spoken.md/pricing.md.
Links
Website & docs: https://spoken.md
Agent instructions: https://spoken.md/agents.md
OpenAPI spec: https://spoken.md/.well-known/openapi.json
LLM-friendly overview: https://spoken.md/llms.txt
Spoken is built and maintained at spoken.md.
Available Tools
3 toolsget_balanceGet credit balanceA
Check the current Spoken credit balance, account email, and recent usage for the configured API key. Does not consume credits.
Inputs: no named parameters.
get_transcriptGet transcriptA
Fetch a podcast episode's transcript as clean Markdown with real speaker names and timestamps. Pass an episode id from search_podcasts. Costs 1 credit on the first fetch of an episode; repeat fetches are free and errors are never charged.
Inputs: episode_id (required).
search_podcastsSearch podcastsA
Search published podcast episodes by text query, or paste an episode URL (Spotify, YouTube, etc.). Returns matching episodes with their id, title, podcast, and date. Use the id with get_transcript. Does not consume credits.
Inputs: query (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool targets a distinct concern: account balance, transcript retrieval, and episode search. No overlap in functionality.
All tools follow a consistent verb_noun pattern with snake_case (get_balance, get_transcript, search_podcasts).
Three tools is perfectly scoped for the server's purpose of podcast transcript retrieval, covering the core workflow without unnecessary complexity.
The tool surface covers the primary use case (search → transcript) and adds account balance. A minor gap is the lack of a tool to list all available podcasts or get episode details without searching, but this is acceptable.
Maintenance
Related MCP Connectors
Podcast transcripts as clean Markdown with real speaker names — via the Spoken API.
Podcast knowledge for AI agents: search episodes, pull transcripts and ask questions.
YouTube transcripts, IMDb search and podcast search as agent tools.
Search, ask and order podcast transcripts; answers cite the episode and minute.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects AI assistants to Pocket Casts accounts for browsing subscriptions, reading episode details, and retrieving transcripts with automatic transcription via AssemblyAI when no native transcript exists.-
- AlicenseAqualityFmaintenanceEnables AI agents to interact with the ParrotScribe transcription service on macOS, providing tools to start/stop transcription, retrieve real-time and historical transcripts, and search across sessions.86 npmMIT
- AlicenseNot gradedqualityDmaintenanceTranscribes audio/video files, generates summaries and structured knowledge items, and supports Notion integration and chat-based interaction. Works as a standalone CLI, Notion integration, or MCP server tool for agent ecosystems.12 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to search millions of podcasts, read and search episode transcripts with timestamps and speakers, and access chapters, soundbites, Podcasting 2.0 tags, value-for-value data, feed health, and index statistics through 36 tools.3623 npm1MIT