Clean YouTube transcripts for agents: single videos, channels, playlists, plus AI caption cleanup.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer ytd_sk_... API key. Get a free key (25 free credits) at https://youtubetranscriptdownload.com/account
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get transcripts for a YouTube channel's most recent videos (newest first) as timestamped markdown, one section per video. Use for research across a creator's recent output; for one known video use get_transcript. Read-only; requires an API key. Charges 1 credit per video that returns a transcript, including repeat calls; videos without captions are skipped free. A 10-video call typically costs up to 10 credits, so start with a small limit. Rate limit: 5 requests per 10 seconds.
YouTube channel URL or handle (e.g. https://www.youtube.com/@lexfridman or @lexfridman)
Number of most-recent videos to fetch, 1-50 (default 10). Upper bound on the credit charge for this call.
Get transcripts for a YouTube channel's most recent videos (newest first) as timestamped markdown, one section per video. Use for research across a creator's recent output; for one known video use get_transcript. Read-only; requires an API key. Charges 1 credit per video that returns a transcript, including repeat calls; videos without captions are skipped free. A 10-video call typically costs up to 10 credits, so start with a small limit. Rate limit: 5 requests per 10 seconds.
| Argument | Type | Description |
|---|---|---|
| url* | string | YouTube channel URL or handle (e.g. https://www.youtube.com/@lexfridman or @lexfridman) |
| limit | integer | Number of most-recent videos to fetch, 1-50 (default 10). Upper bound on the credit charge for this call. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "YouTube channel URL or handle (e.g. https://www.youtube.com/@lexfridman or @lexfridman)"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Number of most-recent videos to fetch, 1-50 (default 10). Upper bound on the credit charge for this call."
}
}
}Get transcripts for the videos in a YouTube playlist (in playlist order) as timestamped markdown, one section per video. Use for working through a course, series, or curated list; for one known video use get_transcript. Read-only; requires an API key. Charges 1 credit per video that returns a transcript, including repeat calls; videos without captions are skipped free. A 10-video call typically costs up to 10 credits, so start with a small limit. Rate limit: 5 requests per 10 seconds.
| Argument | Type | Description |
|---|---|---|
| url* | string | YouTube playlist URL (e.g. https://www.youtube.com/playlist?list=PLxxxxxx) |
| limit | integer | Number of videos to fetch from the start of the playlist, 1-50 (default 10). Upper bound on the credit charge for this call. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "YouTube playlist URL (e.g. https://www.youtube.com/playlist?list=PLxxxxxx)"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Number of videos to fetch from the start of the playlist, 1-50 (default 10). Upper bound on the credit charge for this call."
}
}
}Get the full transcript of a single YouTube video as timestamped markdown. Read-only: fetches existing captions, modifies nothing. Requires an API key; each successful call charges 1 credit, including repeat calls for the same video, so reuse a transcript already in context instead of re-fetching. Videos without captions return an error and cost nothing. Rate limit: 5 requests per 10 seconds.
| Argument | Type | Description |
|---|---|---|
| video* | string | YouTube video ID (e.g. dQw4w9WgXcQ) or full video URL (youtube.com/watch?v=... or youtu.be/... forms) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"video"
],
"properties": {
"video": {
"type": "string",
"description": "YouTube video ID (e.g. dQw4w9WgXcQ) or full video URL (youtube.com/watch?v=... or youtu.be/... forms)"
}
}
}Get a cleaned-up transcript of a YouTube video's auto-generated captions: punctuation and capitalisation restored, filler and false starts removed, paragraphs added, misheard names fixed, faithful to what was said. Use when raw captions are too messy to read or quote; for a plain transcript use get_transcript. Read-only; requires an API key. Each call charges credits by transcript length (about 3 per 1,000 words, minimum 5), including repeat calls, so keep the result in context. Human-uploaded captions (already clean) and transcripts over ~7,000 words return an error without charging. Rate limit: 5 requests per 10 seconds.
| Argument | Type | Description |
|---|---|---|
| video* | string | YouTube video ID (e.g. dQw4w9WgXcQ) or full video URL (youtube.com/watch?v=... or youtu.be/... forms) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"video"
],
"properties": {
"video": {
"type": "string",
"description": "YouTube video ID (e.g. dQw4w9WgXcQ) or full video URL (youtube.com/watch?v=... or youtu.be/... forms)"
}
}
}