MCP
Give Claude, Cursor, Windsurf or your own agent the ability to find and transcribe videos.
The MCP server gives an AI agent the same API as your key: it can find videos, transcribe them and read the results in the middle of a conversation. It charges your credits and honors your key's scopes. Nothing to install: point the client at the remote server.
Connect#
claude mcp add --transport http transcriptdock https://transcriptdock.com/mcp \--header "Authorization: Bearer td_live_YOUR_KEY"
{"mcpServers": {"transcriptdock": {"type": "http","url": "https://transcriptdock.com/mcp","headers": { "Authorization": "Bearer td_live_YOUR_KEY" }}}}
- Claude CodeOne terminal command.
- Claude DesktopEdit claude_desktop_config.json.
- CursorAdd to mcp.json.
- WindsurfAdd to mcp_config.json.
- OpenClawAutonomous agents over stdio.
Local server#
For clients without HTTP transport (Claude Desktop, OpenClaw), run the same server locally with Node.js. The signed-in MCP page in your dashboard has this config with your key filled in.
{"mcpServers": {"transcriptdock": {"command": "npx","args": ["-y", "@transcriptdock/mcp"],"env": {"TRANSCRIPTDOCK_API_KEY": "td_live_YOUR_KEY","TRANSCRIPTDOCK_BASE_URL": "https://transcriptdock.com"}}}}
wait_for_job again. Clients that only sign in with OAuth (Claude web, ChatGPT) are not supported yet.Tools#
| Tool | Does | Credits |
|---|---|---|
get_video_transcript | URL in, transcript out. Submits, waits, returns text (or srt, vtt, segments). | 1, or 2 per minute with AI transcription |
transcribe | Submit a job and return it without waiting. | Same |
wait_for_job | Wait for a job to finish. | Free |
get_job | Job status, error and billing. | Free |
get_transcript | Read a transcript by id as segments, text, srt or vtt. | Free |
list_jobs | Recent jobs. | Free |
search_youtube | Search YouTube. | 1 per page |
list_channel_videos | A channel's videos, newest first, with paging. | 1 per page |
get_channel_latest_videos | A channel's latest 10 videos. | 1 |
search_channel_videos | Search inside one channel. | 1 per page |
list_playlist_videos | A playlist's videos. | 1 per page |
list_tiktok_user_videos | A TikTok profile's latest videos (up to 10) and profile stats. | 1 |
get_video_discovery | Read a discovery by id, e.g. after a timeout. | Free |
get_video_transcript#
The tool an agent should reach for when asked what a video says.
{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "mode": "auto" }
Never gonna give you upNever gonna let you down…
The same video with the same mode is answered from your workspace's stored result, free.
transcribe, wait_for_job, get_transcript#
The three-step version for agents that want control: transcribe takes url, mode, optional language and max_credits, plus an idempotency_key (any stable 8 to 128 character string, so a retried call never submits twice) and returns the job. wait_for_job takes job_id and an optional timeout_seconds. get_transcript takes the job's result_id as transcript_id and a format.
Finding videos#
The search and list tools return videos with url, title, duration and view count, ready to pass to get_video_transcript. channel accepts an @handle, channel id or channel URL; playlist an id or URL; user a TikTok @user or profile URL. YouTube tools page with limit (default 20) and cursor. TikTok returns at most 10 videos and no further pages; include_details adds likes, comments, hashtags and caption languages per video.
Errors#
A failed call returns isError: true with the API error code, message and request id, so the agent can explain it or change course. The codes are the ones in the API reference.
Troubleshooting#
- Unauthorized: the key goes in the server config (header or env), not in your shell. Check it has not been revoked.
- Tool not found: restart the client after editing its config.
- Local server will not start: install a current Node.js LTS;
npxcomes with it. - NO_CAPTIONS: the video has no captions. Ask for
mode: "auto".