Skip to main content
Glama
artemchuikin

YouTube Transcript & Search MCP Server


🎬 Зачем

Каждый, кто работает с агентом, хотя бы раз сталкивался с таким диалогом.

You:   Summarize this. https://www.youtube.com/watch?v=kCc8FmEb1nY
Agent: I'm not able to watch videos. If you paste the transcript here, I'll gladly help!

Транскрипт — это именно то, что агент не может получить самостоятельно. С подключённым этим сервером тот же запрос просто решается.

You:   Summarize this. https://www.youtube.com/watch?v=kCc8FmEb1nY
Agent: → get_transcript(video="kCc8FmEb1nY", video_metadata=true)      1 credit

       That's "Let's build GPT: from scratch, in code, spelled out" by Andrej
       Karpathy, 1:56:20. He starts from an empty file and a bigram model,
       derives self-attention step by step, and ends with a working GPT that...

Работа редко заканчивается одним видео. Вот честное сравнение трёх способов передать данные YouTube агенту.

Этот сервер

Локальный yt-dlp / MCP-скрапер

Google YouTube Data API

Транскрипты

✅ любое публичное видео, 5 форматов

⚠️ блокируется на IP дата-центров, ломается при изменении разметки YouTube

❌ вообще не выдаёт

Настройка

✅ URL и API-ключ

❌ локальная установка, бинарники, которые нужно держать в живых

❌ Cloud-проект, OAuth-экраны

Поиск YouTube

✅ нативный, 1 кредит за страницу

❌

⚠️ 100 единиц квоты за поиск

Каналы и плейлисты

✅ 100 видео на страницу или 500 «голых» ID

❌ по одному видео за раз

⚠️ квота считается за каждый элемент

Массовые транскрипты

✅ 4 000 за фоновую задачу

❌

❌

Нарезка RAG-ready

✅ 20–5 000 символов, тайм-коды по словам

❌

❌

Когда YouTube меняется

✅ фиксится на сервере, обновлять ничего не нужно

❌ вы сами патчите и передеплоиваете

✅

Упавшие вызовы

✅ кредиты возвращаются сами

❌ ваша retry-логика

⚠️ квота тратится в любом случае


Related MCP server: VidLens

⚡ Быстрый старт

1. Получите API-ключ. Зарегистрируйтесь на transcriptout.com и создайте ключ в панели управления. Новые аккаунты получают 100 бесплатных кредитов, автовпомен. Ключи начинаются с sk_ и показываются только один раз.

2. Направьте ваш клиент на сервер. Он работает по потоковому HTTP (streamable HTTP) и аутентифицируется одним Bearer-заголовком.

{
  "mcpServers": {
    "transcriptout": {
      "url": "https://api.transcriptout.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

Кнопки в один клик для Cursor и VS Code — вверху страницы. Точные фрагменты для остальных клиентов — в разделе Установка в вашем клиенте.

3. Вставьте ссылку.

Summarize this talk and pull the three strongest quotes.
https://www.youtube.com/watch?v=dQw4w9WgXcQ

Агент сам выберет get_transcript, прочитает текст с таймкодами и ответит на его основе. Каждый ответ содержит заголовок X-Credits-Remaining, так что баланс виден на всём протяжении сессии.


🧰 14 инструментов

Все 14 инструментов подключаются автоматически. Большинство вызовов стоят 1 кредит. Кредиты возвращаются автоматически, когда вызов падает до достигнутого YouTube (ошибки валидации, rate limits, отсутствие мощностей у нас), — so вы платите за ответы, а не за сбои. Точное «в этом видео нет субтитров» — ответ, и она тарифицируется как ответ.

1. get_transcript · 1 кредит

Получает транскрипт любого видео YouTube. format=text (по умолчанию) возвращает простой читаемый текст — это самый дешёвый вариант для рассуждений модели, — а format=json возвращает тайм-кодами сегменты.

Параметр

Тип

По умолчанию

Описание

video

string

обязательно

URL публиvs YouTube видео (полный или короткий) или 11-значный ID видео

lang

string

"en"

Языковой код дорожки (en, de, ...)

format

string

"text"

"text" (plain text), "json" (сегменты с start/duration в секундах), "srt"/"vtt" (тело файла субсидированного), "srv3" (исходный XML YouTube)

kind

string

авто-определение

"manual" или "auto". Если не задано, приоритет up ручной дорожке, как fallback — автоматическая

segment

integer

см. ниже

Максимум символов на сегмент. 500–1500 даёт фрагменты, готовые для RAG

video_metadata

boolean

false

Добавить название, канал, длительность и просмотры в тот же вызов, за те же 1 кредит

Если segment не задан, записи автоматических дорожек нарезаются на сегменты по ~180 символов, а ручные дорожки возвращаются так, как автор их разбил. Передавайте segment, когда нужно получить единый размер независимо от того, какая дорожка отвечает.

Пример вывода (format=json):

{
  "video_id": "dQw4w9WgXcQ",
  "language": "en",
  "kind": "manual",
  "transcript": [
    { "text": "Never gonna give you up", "start": 18.0, "duration": 4.12 },
    { "text": "Never gonna let you down", "start": 22.12, "duration": 3.85 }
  ]
}

srt и vtt возвращаются как полные тела файлов with колба своими субтитрами, готовые к записи на диск агентом. srv3 — это исходный XML и не сочетается с segment.

2. get_video_info · 1 кредит

Метаданные одного видео (название, канал,длительность, просмотры, превью) плюс список доступных языков — БЕЗ скачивания субтитров.

Параметр

Тип

По умолчанию

Описание

id

string

обязательно

YouTube video ID или URL

Гигиена кредита. Если один транскрипт и так понадобится, вызовите get_transcript с video_metadata=true: за один кредит получите оба данных, сколько бы ни было вызовов.

3. search_youtube · 1 кредит/страница

Ищет на YouTube видео или каналы. Пагинация через next_page_token. has_more сообщает, есть ли ещё страницы.

Параметр

Тип

По умолчанию

Описание

q

string

обязательно*

Поисковой запрос (*кроме случая пагинации)

type

string

"video"

"video" или "channel"

limit

integer

20

Результатов на страницу, 1–50

next_page_token

string

Токен из предыдущего ответа

4. list_channel_videos · 1 кредит/страница

Список видео с вкладки «Видео» канала, новые сверху. Принимает @handle, название канала, UC... id канала или URL канала.

Параметр

Тип

По умолчанию

Описание

name

string

обязательно*

@handle, название канала, UC... ID или URL

limit

integer

100

Размер страницы, до 500 с ids_only

ids_only

boolean

false

Вернуть только video_ids[], до 500 на страницу

next_page_token

string

Токен изprevious

ids_only=true — дешёвый способ передать ID в submit_transcripts_job.

4. search_channel_videos · 1 кредит/страница

Ищет внутри одного канала с использованием нативного поиска YouTube по релевантности. Результат, в заголовке которого нет слова из запроса, — норма. Результаты сортируются по релевантности, а не по substring.

Параметр

Тип

По умолчанию

Описание

id

string

обязательно

@handle, название канала,UC... ID или URL

q

string

обязательно

Запрос для поиска внутри канала

limit

integer

30

Результатов на страницу, 1–100

next_page_token

string

Токен пагинации

6. latest_channel_videos · 1 кредит

Последние ~15 видео канала из его RSS-ленты. Быстрейший и самый дешёвый способ узнать, что канал недавно публиковался.

Параметр

Тип

По умолч.

Описание

name

string

обязательно

@handle, название канала, UC... ID или URL

7. list_playlist_videos · 1 кредит/страница

Все видео плейлиста в порядке плейлиста. Принимает PL... ID плейлиста или URL с list=.

Параметр

Тип

По умолчанию

Описание

id

string

обязательно*

ID или URL плейлиста

limit

integer

100

Размер страницы, до 500 с ids_only

ids_only

boolean

остальные false

Только список video_ids[], до 500 на страницу

next_page_token

string

Токен пагинации

8. search_playlist_videos · 1 credit

Ищет видео внутри плейлиста по подстроке названия (без учёта регистра). YouTube не даёт соответствующий поиск по плейлисту, поэтому сканируются до 500 пунктов плейлиста. truncated=true означает, что за пределами просканированного окна могут остаться ещё совпадения.

Параметр

Тип

По умолчанию

Описание

id

string

обязательный

ID или URL плейлиста

q

string

обязательный

Подстрока для поиска в названиях видео

limit

integer

30

Максимум совпадений, 1–100

9. submit_transcripts_job · 1 кредит за видео

Поставьте в очередь расшифровки для МНОГИХ видео сразу (до 4 000) и получите job_id немедленно. Работа продолжается в фоне со скоростью, которую допускает ваш rate limit. Используйте этот метод вместо вызова get_transcript в цикле, когда видео больше двух-трёх.

Параметр

Тип

По умолчанию

Описание

videos

строковый[]

обязательный

ID или URL видео, до 4 000. Дубликаты устраняются ДО списания средств

lang

строка

"en"

Один язык для всего задания

format

строка

"text"

"text", "json", "srt", "vtt" или "srv3", одно значение для всего задания

kind

строка

auto-detect

"manual" или "auto"

segment

целое

Один размер сегмента для всего задания

video_metadata

boolean

false

Метаданные для каждого видео, без дополнительной платы

idempotency_key

строка

Повторная отправка того же списка с тем же ключом возвращает то же задание, без двойной оплаты

Требуется пользовательский ключ (sk_...). Кредиты списываются при отправке и возвращаются за каждое видео, которое не удалось доставить по нашей вине.

10. get_transcripts_job · бесплатно

Ход выполнения пакетного задания: статус (queued/running/done/cancelled), сколько видео готово, завершилось ошибкой и ожидает. Проверять уже оплаченное задание ничего не стоит.

11. get_transcripts_results · бесплатно

Готовые расшифровки из пакетного задания, в порядке отправки, постранично через next_page_token (limit 1–500, по умолчанию 100). Результаты появляются по мере получения, поэтому их можно читать до завершения задания. Каждая запись — это ровно то, что возвращает get_transcript для этого видео, плюс его статус.

12. get_transcripts_result · бесплатно

Результат одного видео из пакетного задания по его video_id, без пролистывания всего набора результатов. Код 404 означает, что задание не существует или видео ещё не готово, поэтому прежде чем делать выводы, проверьте get_transcripts_job.

Параметр

Тип

По умолчанию

Описание

job_id

строка

обязательный

ID задания из submit_transcripts_job

video_id

строка

обязательный

Один из ID видео, с которыми задание было отправлено

13. cancel_transcripts_job · бесплатно

Отменить пакетное задание. Кредиты возвращаются ТОЛЬКО за видео, обработка которых ещё не началась. Всё уже полученное остаётся в результатах и остаётся оплаченным.

14. get_credits · бесплатно

Текущий остаток кредитов ключа, без параметров. Остаток также передаётся в заголовке X-Credits-Remaining каждого ответа, но заголовки не видны модели, поэтому для числа, о котором спрашивает пользователь, нужен инструмент. Это удобно и прямо перед большим пакетным запуском, поскольку при отправке пакет списывает 1 кредит за видео.


🔌 Установка в вашем клиенте

Сервер находится удалённо, поэтому каждая установка ниже — это запись конфигурации и не более. Во всех случаях нужны одни и те же два значения: URL и заголовок Bearer из раздела Быстрый старт.

Стоит сделать один раз — постоянное правило для вашего клиента

Если добавить это в правила/инструкции клиента, вставки ссылки на YouTube достаточно, и слово «transcript» никогда не придётся вводить:

Whenever a YouTube link or video ID appears in my message, call the
transcriptout get_transcript tool first and answer from the transcript,
whether I asked for a summary, a quote, a translation or a question.

Установка в один клик:

Install MCP Server

После установки откройте настройки сервера и добавьте заголовок Authorization со своим ключом.

Ручная настройка (~/.cursor/mcp.json):

{
  "mcpServers": {
    "transcriptout": {
      "url": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
claude mcp add --transport http transcriptout https://api.transcriptout.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Пользовательские коннекторы Claude поддерживают аутентификацию удалённых серверов через OAuth, которого TranscriptOut пока не предлагает (только API-ключи). На десктопе используйте Claude Code (см. выше), который поддерживает заголовки API-ключей. Поддержка OAuth — в планах. Следите за changelog.

Или добавьте в пользовательские настройки VS Code (settings.json):

"mcp.servers": {
  "transcriptout": {
    "type": "http",
    "url": "https://api.transcriptout.com/mcp",
    "headers": {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  }
}
  1. Создайте нового агента

  2. В разделе «Actions» или «Tools» добавьте новый MCP Server

  3. URL: https://api.transcriptout.com/mcp

  4. Тип аутентификации: API Key

  5. Вставьте ваш API-ключ из панели управления

Добавьте в ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "transcriptout": {
      "serverUrl": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
{
  "mcpServers": {
    "transcriptout": {
      "url": "https://api.transcriptout.com/mcp",
      "type": "streamableHttp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

В settings.json Zed:

{
  "context_servers": {
    "transcriptout": {
      "source": "remote",
      "url": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
{
  "mcpServers": {
    "transcriptout": {
      "type": "streamable-http",
      "url": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
amp mcp add transcriptout https://api.transcriptout.com/mcp --header "Authorization: Bearer YOUR_API_KEY"

В settings.json в разделе augment.advanced:

"augment.advanced": {
  "mcpServers": [
    {
      "name": "transcriptout",
      "url": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  ]
}

В .kilocode/mcp.json:

{
  "mcpServers": {
    "transcriptout": {
      "type": "streamable-http",
      "url": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

В Settings → Tools → AI Assistant → MCP:

{
  "mcpServers": {
    "transcriptout": {
      "url": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

В ~/.gemini/settings.json:

{
  "mcpServers": {
    "transcriptout": {
      "httpUrl": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

В ~/.qwen/settings.json:

{
  "mcpServers": {
    "transcriptout": {
      "httpUrl": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
{
  "mcpServers": {
    "transcriptout": {
      "serverUrl": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
{
  "mcpServers": {
    "transcriptout": {
      "url": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

В mcp.json:

{
  "mcpServers": {
    "transcriptout": {
      "url": "https://api.transcriptout.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

В Settings → AI → MCP:

{
  "transcriptout": {
    "url": "https://api.transcriptout.com/mcp",
    "headers": {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  }
}

В Settings → Connectors → Advanced:

{
  "url": "https://api.transcriptout.com/mcp",
  "headers": {
    "Authorization": "Bearer YOUR_API_KEY"
  }
}

🧩 Установка как плагина для агента

Корень этого репозитория — пакет, соответствующий спецификации Agent Plugins 1.0.0, переносимому формату, который поддерживается в ChatGPT, Codex, Cursor, GitHub Copilot, Kiro и VS Code. Одна установка даёт вам MCP-сервер и встроенный навык youtube, который учит агента, когда использовать каждый инструмент и как не тратить кредиты.

plugin.json                # manifest
mcp.json                   # hosted MCP server, streamable-http
skills/youtube/SKILL.md    # when + how to use the 14 tools

VS Code. Палитра команд → Chat: Install Plugin From Source, затем вставьте:

https://github.com/artemchuikin/youtube-mcp

Или зарегистрируйте локальную копию в settings.json:

"chat.pluginLocations": { "/absolute/path/to/youtube-mcp": true }

Cursor. Customize в боковой панели → найдите плагин → Install. Для локальной копии:

git clone https://github.com/artemchuikin/youtube-mcp ~/.cursor/plugins/local/transcriptout

Затем Developer: Reload Window.

ChatGPT, Codex, GitHub Copilot, Kiro и любые другие клиенты. Направьте механизм плагинов вашего клиента на этот репозиторий или на локальную копию. Agent Plugins 1.0.0 стандартизирует формат пакета, а не установку, поэтому каждый клиент управляет своей установкой.

В этом пакете нет учётных данных — Agent Plugins 1.0.0 запрещает встраивать секреты. Сервер аутентифицируется с помощью API-ключа, который вы добавляете в настройки MCP вашего клиента (см. Ключи и безопасность). Проверьте пакет самостоятельно:

curl -sO https://agent-plugins.org/schemas/1.0.0/plugin.schema.json
curl -sO https://agent-plugins.org/schemas/1.0.0/mcp.schema.json
npx ajv-cli@5 validate --spec=draft2020 -s plugin.schema.json -d plugin.json
npx ajv-cli@5 validate --spec=draft2020 -s mcp.schema.json    -d mcp.json

🔑 Ключи и безопасность

  • Ключ показывается один раз при создании. Храните его в переменной окружения, а не в системе контроля версий.

  • Утёкший ключ становится мёртвым в тот момент, когда вы отозвали его в панели dashboard. Аккаунт содержит до 20 ключей, поэтому дайте каждой машине свой ключ.

  • Предпочитаете оставаться в чате? Агент с установленным сопутствующим youtube-skills может открыть аккаунт и выпустить ключ за вас, по email и 6-значному коду, без браузера.

  • OAuth-потока пока нет, поэтому клиенты, чьи коннекторы не могут отправлять кастомный заголовок (Claude Desktop и Claude Web), должны пока работать через Claude Code.

🐳 Запуск локально

Размещённый эндпоинт не требует установки, но клиентам с только stdin, песочницам и контейнерным платформам иногда нужен собственный процесс. В репозитории он есть: server.js — это полнофункциональный локальный MCP-сервер (официальный SDK, stdio transport), чьи 14 инструментов делают по одному HTTPS-запросу к REST API TranscriptOut — та же схема, что у любого SaaS-бэкенда MCP-сервера.

# as a container
docker build -t transcriptout-mcp https://github.com/artemchuikin/youtube-mcp.git
docker run -i -e TRANSCRIPTOUT_API_KEY=sk_your_key transcriptout-mcp

# or straight from a checkout (Node 20+)
npm install && TRANSCRIPTOUT_API_KEY=sk_your_key node server.js

Без ключа он по-прежнему подключается и показывает все инструменты; вызовы инструментов отвечают понятной ошибкой 401 с указанием, где получить ключ. Определения инструментов поставляются в tools.json и при запуске при наличии сети обновляются из актуального каталога, так что локальный список никогда не устаревает.


🍳 Рецепты

Каждый промпт ниже можно вставить как есть.

Сценарий использования

Пример промпта

📝 Сводка видео

«Кратко изложи ключевые мысли из этого видео: [URL]»

🔍 Исследование темы

«Найди на YouTube 5 самых популярных видео о нейронных полях излучания и кратко изложи каждое.»

🧠 Учебные конспекты

«Сделай конспект по плейлисту этого курса MIT: [PLAYLIST URL]»

⚖️ Сравнение точек зрения

«Сравни аргументы в этих двух видео: [URL1] [URL2]»

🌐 Перевод

«Переведи расшифровку этого видео на испанский: [URL]»

✍️ Переработка контента

«Преврати это видео в пост в блоге на 1 500 слов: [URL]»

📡 Следить за создателем

«Каждый утро перечисляй новые видео от @kurzgesagt и говори мне, что стоит посмотреть.»

🏛️ Сбор базы контента

«Вытащи все ID видео с @3blue1brown и поставь для всех них в очередь пакет расшифровок.»

🎯 Анализ конкурентов

«Поищи внутри @fireship видео на [конкурентный продукт] и резюмируй выводы.»

🧩 Загрузка в RAG

«Получи расшифровки этого плейлиста в JSON с segment=1000 и загрузи их в индекс.»

Быстрый рецепт для массовой задачи. «Архивировать целый канал» — это четыре вызова инструмента, а не скрипт:

  1. list_channel_videos с ids_only=true: до 500 ID видео на страницу

  2. submit_transcripts_job с этими ID (до 4 000; дубликаты отбрасываются до списания, idempotency_key делает повторный запрос бесплатным)

  3. get_transcripts_job до тех пор, пока status не станет done. Задача сама подстраивает темп под ваш лимит запросов

  4. get_transcripts_results постранично — результат можно читать, пока задача ещё работает

Если сервис не смог выдать какое-то видео, за него возвращаются деньги, поэтому итоговый счёт соответствует составу архива.


💳 Тарифы и лимиты

Тариф

Цена

Кредиты

Лимит запросов

Free

$0

100 при регистрации (разово)

200 запросов/мин

Starter

$4.49/мес

1,000/мес

200 запросов/мин

Starter Annual

$45.29/год (~$3.77/мес)

1,000/мес

200 запросов/мин

Scale

слайдер до $198.99/мес

до 100,000/мес

200 запросов/мин

  • Подписка выбирается слайдером от 1 000 до 100 000 кредитов в месяц с шагом в 1 000, и цена за 1 000 кредитов снижается с ростом объёма (10 000/мес стоят $27.49, а не $44.90). Годовая скидка увеличивается с ростом объёма — примерно от ~16% до ~35%.

  • 1 кредит = 1 обслуженный запрос. Запросы, которые завершились ошибкой до обращения к YouTube (валидация, лимит запросов, наши мощности), автоматически возвращаются. Текущий баланс кредитов передаётся в заголовке X-Credits-Remaining.

  • можно купить разовые пакеты кредитов без срока действия в дополнение к активной подписке.

  • Смотреть тарифы · Управление оплатой


🧯 Если запрос завершился с ошибкой

  • Убедитесь, что ваш API-ключ начинается с sk_

  • Проверьте, не попали ли лишние пробелы при копировании

  • Убедитесь, что ключ активен в вашей панели управления

  • Отозванные ключи перестают работать сразу. Выдайте новый ключ в панели управления

  • 404: у видео нет субтитров с запрошенном языке/дорожке или ID указан неверно. Это окончательный и однозначный ответ, повторные попытки ничего не изменят.

  • 410: видео было удалено.

  • 451: контент с возрастным ограничением или доступный только по подписке.

  • Следуйте заголовку Retry-After. В обоих случаях кредиты возвращаются автоматически

  • Для массовой работы используйте submit_transcripts_job: он сам подстраивается под ваш лимит запросов, а не спотником в него

Тело любой ошибки — это {"ok": false, "code": "...", "detail": "...", "request_id": "req_..."}. Ориентируйтесь на машиночитаемое code, а не на текст для человека. При обращениях в поддержку показывайте request_id.


🌐 Предпочитаете обычный REST?

Создаёте приложение, а не агента? Этот же бэкенд поставляется как JSON REST API, с теми же пятью форматами транскриптов и загрузкой исходного файла (download=true).

MCP

REST API

Для кого

ИИ-ассистенты и агенты

Приложения и бэкенд-сервисы

Настройка

Добавить URL и ключ

Интеграция в код

Начало работы

Этот README

Документация API →

Базовый URL: https://api.transcriptout.com/v1


🔗 Ссылки


📇 Реестр MCP

Этот сервер опубликован в официальном Реестре Model Context Protocol под именем:

com.transcriptout/youtube-transcript-and-youtube-search

TranscriptOut — независимый сервис; он не аффилирован с YouTube или Google LLC, не одобрен и не спонсируется ими. "YouTube" является товарным знаком Google LLC.

Available Tools

14 tools
cancel_transcripts_jobCancel batch jobA
DestructiveIdempotent
Inspect

Cancel a batch job. Credits are refunded ONLY for videos not started yet — anything already fetched stays in the results and stays paid for. Free.

NameRequiredDescriptionDefault
job_idYesid returned by submit_transcripts_job

Output Schema

NameRequiredDescription
statusNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations already disclosing destructive and idempotent behavior, it states the partial refund policy and that completed work remains paid for and stays in results. It also notes the operation is free, which is useful non-obvious context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each valuable: the operation, the refund semantics, and the cost. The core intent appears first and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive operation with an output schema, the description covers the most important behavior and economics. It could mention what happens if the job is already complete or already canceled, but idempotentHint partially covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool description does not add param details, but the schema already provides full coverage: job_id is described as 'id returned by submit_transcripts_job'. The description's general reference to 'a batch job' aligns with this parameter, so no real gap exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Cancel a batch job', clearly naming the action and its target. It is easily distinct from the get/search/submit siblings, and the title reinforces the operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The refund condition ('Credits are refunded ONLY for videos not started yet') gives a concrete rule for deciding whether a cancellation is still worthwhile. It implies this should be used when the caller wants to stop a previously submitted batch job, though it does not explicitly list when to avoid cancellation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_creditsCredit balanceA
Read-only
Inspect

Check the remaining credit balance of the API key. Free. Use it when the user asks how many credits are left, or before submit_transcripts_job to confirm a large batch fits the balance (the batch charges 1 credit per video on submit).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
creditsNo
meteredNo
user_idNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, and the description reinforces this with the word 'Check'. It adds context beyond annotations by noting the tool is free and by clarifying the credit accounting relationship with submit_transcripts_job (1 credit per video). This is useful behavioral context, though it does not discuss output format or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences cover purpose, cost, and two concrete use cases. There is no filler, and the primary action is front-loaded. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, parameterless tool with no additional configuration, the description covers all necessary context: what it does, when to use it, and how credit usage relates to submit_transcripts_job. The output schema is present, so the return value format does not need to be described in the text. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema is fully clear with an empty object. The description adds no parameter information because none is needed; this is the appropriate baseline for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Check the remaining credit balance of the API key.' It is unmistakably distinct from the sibling tools, which all concern transcripts, videos, or channels, so an agent can identify this as the credit balance tool without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage conditions: use it when the user asks about remaining credits, or before submit_transcripts_job to confirm a large batch fits. It also mentions the alternative context of submitting a job and the credit cost per video, making the decision clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transcriptGet transcriptA
Read-only
Inspect

Get the transcript (subtitles) of a YouTube video. Accepts a video id or any YouTube URL. Set video_metadata=true to get the title, channel and duration in the SAME call — do not call get_video_info first, that is a second billed call for data this one already returns. format=text returns plain readable text (default, cheapest to read); format=json returns timed segments with start/duration in seconds; srt/vtt return ready subtitle file bodies and srv3 the raw YouTube XML. Prefer text unless you need timestamps or a file. Costs 1 credit.

NameRequiredDescriptionDefault
kindNoTrack kind. Omit to prefer a manual track and fall back to auto
langNoLanguage code of the track, e.g. 'en', 'de'. Default 'en'.
videoYesYouTube video id or URL
formatNo'text' = plain text (default), 'json' = timed segments, 'srt'/'vtt' = subtitle file body, 'srv3' = raw YouTube XML (srv3 does not combine with segment)
segmentNoMax characters per segment. Raise it when chunking the transcript for embeddings or retrieval — 500-1500 gives chunks with enough context; lower it for subtitle-sized lines. Left out, an auto-generated track is cut into ~180-character segments and a manual one is returned exactly as its author broke it, so pass this whenever you need one size regardless of which track answers.
video_metadataNoInclude the video's title, channel, duration and views alongside the transcript. Replaces a separate get_video_info call — same one credit either way.

Output Schema

NameRequiredDescription
kindNo
languageNo
metadataNo
video_idNo
transcriptNoformat=json: array of {text, start, duration} segments (seconds); text/srt/vtt/srv3: one string in that format
available_langsNo

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses billing behavior (costs 1 credit, metadata call avoids an extra charge), default track behavior (manual vs auto fallback), segment defaulting per track type, and format-specific output differences. It also notes that srv3 does not combine with segment. These are meaningful non-obvious behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but information-dense. It front-loads the core purpose, then the billing optimization, then format choices and usage preferences. A small amount of repetition with the schema descriptions exists (e.g., format meanings), but every sentence contributes functional value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, an output schema present, and related sibling tools, the description covers the important edge cases: metadata inclusion, cost avoidance, format trade-offs, track selection, and segmentation behavior. An agent gets enough context to call this tool effectively without additional exploration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents parameters, but the description adds substantial semantics beyond it: cost implications of video_metadata, format selection guidance, and track-specific segment defaults. This is helpful and non-redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get the transcript (subtitles) of a YouTube video.' It also clarifies accepted inputs ('video id or any YouTube URL'), immediately distinguishing it from sibling tools like get_video_info and the get_transcripts_* job tools. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: it instructs the agent to set video_metadata=true to avoid a separate billed get_video_info call, explains when to prefer specific formats ('Prefer text unless you need timestamps or a file'), and gives segment sizing advice for embeddings/retrieval. This is strong usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transcripts_jobBatch job progressA
Read-only
Inspect

Check the progress of a batch job: status (queued/running/done/cancelled), how many videos are ready, failed and still pending. Free — polling a job you already paid for costs nothing. Read the transcripts themselves with get_transcripts_results.

NameRequiredDescriptionDefault
job_idYesid returned by submit_transcripts_job

Output Schema

NameRequiredDescription
doneNo
countNo
readyNo
failedNo
statusNo
pendingNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the non-destructive nature is covered. The description adds value beyond that: it clarifies cost behavior (polling is free), the specific statuses an agent can observe, and that only counts/status are returned here — not transcript content, which is an agent-facing distinction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: purpose with enumerations, a free-cost behavioral note, and a routing to the replacement tool. Barely any waste; the phrase 'a job you already paid for' is slightly redundant with 'Free', keeping it from a perfect 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only tool with a full schema description and an output schema, the description is nearly self-contained. It omits only a fully spelled-out poll-then-fetch workflow (poll until done, then call get_transcripts_results), which would make the agent's end-to-end behavior unambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter, job_id, and the schema already documents it fully as 'id returned by submit_transcripts_job' (100% coverage). The description's 'job you already paid for' is consistent with that but adds no new semantic detail, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Describes a specific verb+resource ('Check the progress of a batch job') and enumerates what is returned (status queued/running/done/cancelled, counts of ready/failed/pending). It also names the sibling get_transcripts_results, so an agent can clearly tell this progress-checker apart from the transcript-reading tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States when to use this tool (checking job progress) and explicitly routes the agent away when it needs transcripts: 'Read the transcripts themselves with get_transcripts_results.' The 'Free — polling a job you already paid for costs nothing' note additionally reassures the agent that frequent polling is safe, which is a practical usage condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transcripts_resultOne batch resultA
Read-only
Inspect

Read ONE video's result out of a batch job by its video id, without paging through get_transcripts_results. 404 means the job does not exist or this video has not finished yet — check get_transcripts_job before concluding anything. Free.

NameRequiredDescriptionDefault
job_idYesid returned by submit_transcripts_job
video_idYesone of the video ids the job was submitted with

Output Schema

NameRequiredDescription
statusNo
video_idNo
transcriptNoformat=json: array of {text, start, duration} segments (seconds); text/srt/vtt/srv3: one string in that format

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description adds meaningful behavioral disclosures: the exact meaning of a 404 and the explicit recommendation to consult get_transcripts_job, plus the 'Free' cost note. This goes well beyond what the schema or annotations already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: three short sentences, each earning its place. The opening line gives the purpose, the second provides critical error semantics, and the third addresses cost. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simple two-parameter input, a readOnly annotation, and an output schema, the description is complete. It covers purpose, differentiation, error handling, and cost, and refers to the right sibling tool for follow-up—leaving no critical gaps for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for both job_id and video_id. The tool description does not need to repeat parameter details, but it also does not enrich them beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and exact resource ('ONE video's result out of a batch job'), and clearly differentiates the tool from its plural sibling get_transcripts_results by saying 'without paging through get_transcripts_results.' This makes the purpose unambiguous and immediately distinguishable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to use this tool—when you need a single video result from a batch—and names the alternative 'get_transcripts_results' by advising against paging through it. It also provides important "do not assume worst case" guidance by telling agents to check get_transcripts_job on 404 before concluding anything.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transcripts_resultsBatch job resultsA
Read-only
Inspect

Read finished transcripts from a batch job, in the order submitted. Results appear as they are fetched, so this can be called before the job is done. Each entry is exactly what get_transcript returns for that video, plus its status. Page with next_page_token. Free.

NameRequiredDescriptionDefault
limitNoEntries per page, 1-500 (default 100)
job_idYesid returned by submit_transcripts_job
next_page_tokenNoToken from a previous result

Output Schema

NameRequiredDescription
countNo
resultsNo
has_moreNo
next_page_tokenNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint=true annotation declares safety, and the description adds meaningful behavior: partial results appear before job completion, each entry includes status, pagination via next_page_token, and it's free. No contradiction; the extra context complements the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with high information density and no fluff. It front-loads the core purpose and then adds caveats and pagination. It could be slightly more structured or clearer about parameter usage, but it earns a solid score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description doesn't need to explain return values in depth. It covers key operational details: partial results before completion, per-entry format, pagination. Minor lack of explicit rate limits or error conditions, but not essential given the output schema and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description doesn't need to document parameters in depth. It still adds value by explaining that order is submission order and confirming pagination behavior through next_page_token—semantics beyond field names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads finished transcripts from a batch job in submission order, which distinguishes it from siblings like get_transcripts_job (job metadata) and get_transcript (single transcript). The verb 'read' plus the resource 'finished transcripts from a batch job' makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says this can be called before the job is done since results appear as fetched—useful timing guidance. It also notes each entry equals what get_transcript returns, indirectly distinguishing it from that sibling. It lacks explicit when-not-to-use conditions, but the context is mostly clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_video_infoGet video infoA
Read-only
Inspect

Get metadata for one YouTube video (title, channel, duration, views, thumbnails) plus the list of available transcript languages, WITHOUT downloading the subtitles. Use it only when the transcript itself is not wanted. If you are going to fetch the transcript anyway, call get_transcript with video_metadata=true instead — it returns both for one credit, where these are two separate calls and two credits.

NameRequiredDescriptionDefault
idYesYouTube video id or URL

Output Schema

NameRequiredDescription
titleNo
available_langsNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/openWorldHint annotations, it discloses a key behavioral boundary: it returns transcript languages but does NOT download the subtitles. It also discloses the cost trade-off compared to get_transcript, which is information not present in annotations, schema, or output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the function purpose and output scope, then immediately provides the routing instruction to get_transcript. Every sentence adds distinct information in a compact form with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only tool with an output schema, the description covers what it returns, what it omits, when to use it, and when to call an alternative. Nothing an agent needs to route the call correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains the single parameter. The description reinforces that the call targets 'one YouTube video,' but it doesn't add new syntax, formats, or constraints beyond the existing schema coverage. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the operation ('Get metadata for one YouTube video'), enumerates the specific metadata fields returned, and explicitly notes it returns transcript languages without downloading subtitles. This distinguishes it immediately from get_transcript, the closest sibling, while also limited to a single video as opposed to list/search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use rule: 'Use it only when the transcript itself is not wanted.' It then names the recommended alternative with exact parameters and cost implications: 'call get_transcript with video_metadata=true instead — it returns both for one credit, where these are two separate calls and two credits.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

latest_channel_videosLatest channel videosA
Read-only
Inspect

Get the ~15 most recent videos of a channel from its RSS feed. Fastest and cheapest way to check what a channel published recently.

NameRequiredDescriptionDefault
nameYes@handle, channel name, UC... channel id or channel URL

Output Schema

NameRequiredDescription
videosNo
channelNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful behavior beyond the readOnlyHint by revealing that data comes from the RSS feed and that the result is approximate (~15 videos). It also signals cost/performance ('fastest and cheapest'), which helps an agent choose between similar tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences contain only relevant information: what the tool returns, approximately how many items, what source is used, and why this is a good option. The key scope and cost signals are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with a documented input schema, an output schema, and readOnly annotations, the description covers the essential behavior: source, result size, speed, and intended use. There is no critical missing information an agent would need to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the parameter, listing accepted forms such as @handle, channel name, UC... channel id, or channel URL, and schema description coverage is 100%. The description only weakly reinforces that the parameter refers to a channel, so no significant value is added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation ('get the ~15 most recent videos of a channel'), a resource ('channel'), and a concrete source ('RSS feed'). It distinguishes itself from sibling listing/search tools by framing itself as the fastest, cheapest way to check recent channel publications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly establishes when to use it: when you need a quick, lightweight check of what a channel recently published. It does not explicitly exclude cases like full channel listing or searching, but its intended niche is clear from the wording.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_channel_videosList channel videosA
Read-only
Inspect

List videos from a channel's Videos tab, newest first. Accepts an @handle, a UC... channel id or a channel URL. ids_only=true returns just video ids (up to 500 per page) — use it when you only need ids to fetch transcripts.

NameRequiredDescriptionDefault
nameNo@handle, channel name, UC... channel id or channel URL (required unless paginating)
limitNoPage size. Up to 100, or up to 500 with ids_only
ids_onlyNoReturn video_ids[] instead of full video objects
next_page_tokenNoToken from a previous result

Output Schema

NameRequiredDescription
countNo
videosNo
channelNo
has_moreNo
video_idsNo
next_page_tokenNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses meaningful behavior beyond the annotations: newest-first ordering, accepted channel identifier formats, ids_only behavior, and the 500-per-page ceiling. Since readOnlyHint=true already signals the operation's safety profile, the description does extra work by documenting ordering and output modes. There is no contradiction with the read-only annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet information-dense, with no filler or redundancy. The core action and ordering are front-loaded, and the id-only optimization is explained in a short second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, output schema, and readOnlyHint annotation, the description covers the remaining essentials: ordering, accepted identifiers, ids_only behavior, and pagination limits. The only material gap is the lack of explicit differentiation from the sibling list/search tools, which means an agent must infer when this tool is preferred.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% parameter coverage, so the baseline is solid. The description adds value by explaining the purpose of ids_only, clarifying that a channel name or handle is acceptable even though the schema names the parameter 'name', and noting the 500-item limit when ids_only is used. This is a meaningful complement to the schema rather than a mere restatement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: it lists videos from a channel's Videos tab, and it adds a useful behavioral detail by specifying 'newest first'. It also lists the accepted identifier formats, which helps an agent identify valid inputs. It does not explicitly differentiate itself from the sibling tool latest_channel_videos, so some sibling distinction is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides one specific usage guideline: use ids_only=true when you only need IDs to fetch transcripts, which is genuinely useful for call selection. However, it gives no explicit guidance about when to prefer this tool over search_channel_videos, latest_channel_videos, or list_playlist_videos. The intended use case is implied rather than clearly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_playlist_videosList playlist videosA
Read-only
Inspect

List videos of a playlist in playlist order. Accepts a PL... playlist id or a URL with list=. ids_only=true returns just video ids (up to 500 per page).

NameRequiredDescriptionDefault
idNoPL... playlist id or URL (required unless paginating)
limitNoPage size. Up to 100, or up to 500 with ids_only
ids_onlyNoReturn video_ids[] instead of full video objects
next_page_tokenNoToken from a previous result

Output Schema

NameRequiredDescription
countNo
videosNo
has_moreNo
playlistNo
video_idsNo
next_page_tokenNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, and the description goes further by disclosing playlist ordering, ID/URL input flexibility, and the up-to-500-per-page behavior with ids_only. This adds meaningful behavioral context beyond a simple 'list' label.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The first sentence states the core behavior, and the second covers input forms and the ids_only pagination nuance. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, readOnlyHint=true, and full schema documentation on parameters, the description covers the important nuances: playlist-order listing, accepted id shapes, and ids_only pagination constraints. No major calling concern is left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds extra detail: id can be a PL... id or a URL with list=, limit has a 500 cap only with ids_only, and ids_only changes the response shape to video IDs. This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list videos), the resource (a playlist), and a distinctive behavioral property ('in playlist order'). It does not explicitly distinguish itself from search_playlist_videos, but the list-vs-search distinction is reasonably inferable from the wording.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: it accepts a PL... playlist id or a list= URL, and explains the ids_only option and page-size behavior. It does not explicitly say when to choose this tool over alternatives like search_playlist_videos, but the intended call pattern is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_channel_videosSearch within a channelA
Read-only
Inspect

Search videos inside one channel using YouTube's native relevance search. Results are ranked by relevance, so a video whose title lacks the query word is normal.

NameRequiredDescriptionDefault
qNoQuery to search within the channel
nameNo@handle, channel name, UC... channel id or channel URL
limitNoResults per page, 1-100 (default 30)
next_page_tokenNoToken from a previous result

Output Schema

NameRequiredDescription
videosNo
channelNo
has_moreNo
next_page_tokenNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already signal safe read-only behavior. The description additionally discloses that results are relevance-ranked rather than keyword-matched, including the non-obvious fact that matching videos may lack the query in their title; this is meaningful behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The two sentences are front-loaded and free of waste. The first sentence defines the operation and scope, and the second guards against an agent misinterpreting relevant results that do not contain the query text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, existing output schema, and read-only annotations, this is nearly complete for an agent insert-correct call. The small gap is that it does not state what happens when no channel is identified or how to route among the similar channel/playlist siblings, which agents must infer from sibling names.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not materially deepen any parameter beyond what the schema already documents, such as q, the channel identifier forms, or pagination token.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and scope: search videos inside one channel. It also adds the YouTube-native relevance-search detail, which clearly separates it from a general YouTube search or a plain channel listing sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is clear context: this is for searching within a single channel using YouTube's relevance ranking, so an agent can distinguish it from cross-YouTube search or listing tools. It does not explicitly name when-not-to-use alternatives or provide exclusions, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_playlist_videosSearch within a playlistA
Read-only
Inspect

Find videos inside a playlist by a substring of the title (case-insensitive). YouTube has no native playlist search, so this scans up to 500 playlist items. truncated=true means there may be more matches beyond the scanned window.

NameRequiredDescriptionDefault
qYesSubstring to match in the video title
idYesPL... playlist id or URL
limitNoMax matches to return, 1-100 (default 30)

Output Schema

NameRequiredDescription
truncatedNo

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/openWorldHint annotations, the description discloses two non-obvious behaviors: the fixed 500-item scan window and the meaning of truncated=true. This is exactly the kind of caveat an agent needs to know before relying on the result — it cannot infer the scan limit or the partial-result flag from the schema and would otherwise assume the result is exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero fluff: it front-loads the matching behavior, gives the platform rationale, and closes with the critical truncation caveat. Every sentence earns its place and the ordering is maximally informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and readOnlyHint/openWorldHint annotations covering the safety profile, most of the burden is already borne by structured fields. The description covers the key additional semantics (scan window, truncation). Minor gaps that remain are being explicit about result ordering and behavior on invalid playlist IDs, which are small for a 3-parameter search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (id, q, limit each have meaningful descriptions with ranges and defaults), so the baseline is 3. The description adds only the case-insensitivity nuance about q via prose; no per-parameter detail is added beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb+resource and the match mechanics: 'Find videos inside a playlist by a substring of the title (case-insensitive).' This clearly differentiates from siblings like search_youtube (global search), list_playlist_videos (full listing), and search_channel_videos (channel-scoped) by confining the search to an existing playlist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The rationale ('YouTube has no native playlist search, so this scans up to 500 playlist items') explains why the tool exists and tells the agent it is the workaround for that platform gap. However, it does not name any alternative tool, give explicit when-not-to-use guidance, or point to a sibling like list_playlist_videos for full enumeration, so the agent is left to infer the decision boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_youtubeSearch YouTubeA
Read-only
Inspect

Search YouTube for videos or channels. Paginate by passing next_page_token from the previous result. has_more tells you whether another page exists.

NameRequiredDescriptionDefault
qNoSearch query (required unless paginating)
typeNoDefault 'video'
limitNoResults per page, 1-50 (default 20)
next_page_tokenNoToken from a previous result

Output Schema

NameRequiredDescription
has_moreNo
next_page_tokenNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint and openWorldHint, so the safe read-only nature is already established. The description adds valuable behavioral context: it explains the pagination pattern and the meaning of has_more, which are not present in the input schema. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the core search capability, and includes pagination guidance efficiently. There is no filler or redundant restating of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of a rich input schema, an output schema, and annotations, the description covers what an agent needs to invoke the tool correctly, especially the pagination loop. Nothing critical is missing for a search tool with this structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all four parameters with 100% coverage, so the baseline is 3. The description adds meaning by linking next_page_token to the pagination flow and mentioning that has_more indicates another page, which helps agents understand the parameter interaction beyond the schema's individual field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches YouTube for videos or channels, a specific verb and resource. This distinguishes it from sibling tools like search_channel_videos, which are scoped to specific contexts rather than a general YouTube-wide search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear pagination usage guidance with next_page_token and has_more, but it does not explicitly state when to choose this tool over siblings such as search_channel_videos or latest_channel_videos. The intended usage is implied rather than explicitly contrasted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_transcripts_jobSubmit transcripts batchAInspect

Queue transcripts for MANY videos at once (up to 4000) and get a job_id back immediately — the work continues in the background. Use this instead of calling get_transcript in a loop for more than a handful of videos. Feed it video ids from list_channel_videos or list_playlist_videos (ids_only=true). Next: poll get_transcripts_job until status is 'done', reading finished transcripts from get_transcripts_results as they land. Costs 1 credit per video, charged on submit; duplicates are removed first. Requires a user key (sk_...).

NameRequiredDescriptionDefault
kindNoTrack kind. Omit to prefer a manual track and fall back to auto
langNoLanguage code for every video, e.g. 'en'. Default 'en'.
formatNo'text' = plain text (default), 'json' = timed segments, 'srt'/'vtt' = subtitle file body, 'srv3' = raw YouTube XML (srv3 does not combine with segment)
videosYesVideo ids or URLs, up to 4000. Duplicates are collapsed.
segmentNoMax characters per segment, for every video in the job. Raise it to 500-1500 when the transcripts are going into embeddings or retrieval. Left out, an auto-generated track is cut into ~180-character segments and a manual one keeps its author's own lines — so pass this when the whole job has to come back at one size.
video_metadataNoInclude each video's title, channel and duration alongside its transcript. Replaces a get_video_info call per video and costs nothing extra.
idempotency_keyNoOptional. Resubmitting the same list with the same key returns the SAME job instead of opening a second one and charging twice.

Output Schema

NameRequiredDescription
countNo
job_idNo
statusNo
creditsNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the asynchronous execution model (background processing after immediate job_id), the billing dimension ('Costs 1 credit per video, charged on submit'), deduplication, and the auth requirement (sk_... key). All of this goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false) and enriches the agent's picture of side effects. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five sentences that are all load-bearing: the core value, the when-to-use rule, the input source, the follow-up workflow, and the costs/dedup/auth. It is front-loaded with the most critical information first and contains no filler or restatement of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an async batch operation with 7 parameters, the description covers the entry criterion (many videos vs handful), how to invoke it (input sources), what comes back (immediate job_id), the costs, the required key, and the full downstream contract (poll get_transcripts_job until 'done', read results from get_transcripts_results). The output schema handles return-value specifics, so nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3 and the schema already documents every parameter including segment sizing guidance and idempotency_key behavior. The description adds a sourcing hint for videos (feed from list-channel/playlist tools) and the credit-per-video math, but it does not provide per-parameter explanations beyond the schema — a correct middle ground.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'Queue transcripts for MANY videos at once (up to 4000) and get a job_id back immediately'. It differentiates this batch tool from its sibling get_transcript and the polling/result tools, so an agent understands exactly what this tool does and what it is not without reading any other definition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to choose it: 'Use this instead of calling get_transcript in a loop for more than a handful of videos.' It also tells the agent where to get inputs ('Feed it video ids from list_channel_videos or list_playlist_videos') and exactly which sibling to poll next (get_transcripts_job, get_transcripts_results). This is explicit routing, not implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv1.0.2
    • First observedcancel_transcripts_job
    • First observedget_credits
    • First observedget_transcript
    • First observedget_transcripts_job
    • First observedget_transcripts_result
    • First observedget_transcripts_results
    • First observedget_video_info
    • First observedlatest_channel_videos
    • First observedlist_channel_videos
    • First observedlist_playlist_videos
    • First observedsearch_channel_videos
    • First observedsearch_playlist_videos
    • First observedsearch_youtube
    • First observedsubmit_transcripts_job

TDQS

A4.3/5.0

Scored across 14 tools

Disambiguation4/5

Each tool has a distinct job: search, list, fetch single transcript, manage batch jobs, or check credits. The main ambiguities are get_transcripts_results vs get_transcripts_result and get_video_info vs get_transcript with video_metadata=true, but the descriptions clearly point agents to the right choice.

Naming Consistency4/5

Most names follow a clean verb_noun pattern like get_transcript, list_channel_videos, submit_transcripts_job. The pattern is slightly mixed by latest_channel_videos and the singular/plural get_transcripts_results/get_transcripts_result, but conventions remain mostly predictable.

Tool Count5/5

With 14 tools, the server is well-scoped for transcript retrieval plus YouTube search and batch job management. Every tool addresses a real workflow and none feel redundant.

Completeness5/5

The surface covers the full workflow: discover videos, get metadata, fetch individual or batch transcripts, poll job status, retrieve results, cancel jobs, and monitor credits. There are no obvious missing operations for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    B
    maintenance
    Enables AI agents to search, analyze, and extract insights from YouTube videos including transcripts, visual frames, and benchmarks without requiring API keys. Supports semantic search across playlists, sentiment analysis, and visual content indexing with automatic fallback chains for reliable access.
    41
    77 npm
    34
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to search YouTube like a database, retrieve transcripts and channel data, and mine videos for claims, numbers, and demand signals — without needing an API key.
    6
    10 npm
    MIT