Skip to main content
Glama
teobouancheau

YouTube Knowledge MCP

YouTube Knowledge MCP

npm version License: MIT Node.js GitHub stars

Un servidor de Model Context Protocol (MCP) que ofrece a los asistentes de IA la capacidad de buscar, analizar y extraer conocimiento de los vídeos de YouTube. Funciona con Claude Desktop, Claude Code, Claude.ai, Cursor y cualquier cliente compatible con MCP.

Admite tanto transporte local (stdio) como remoto (Streamable HTTP).

YouTube Knowledge MCP

Características

Buscar y leer

  • Buscar vídeos y canales por palabra clave

  • Obtener vídeos de una lista de reproducción o canal

  • Metadatos de vídeo, canal y lista de reproducción, capítulos y comentarios principales

  • Transcripciones con marcas de tiempo, segmentadas por rango de tiempo o capítulo, y limitadas para que un vídeo de tres horas no inunde tu contexto

  • Buscar dentro de una transcripción y obtener enlaces ?t= que abren el vídeo en el momento exacto

  • Herramientas por lotes: transcripciones de muchos vídeos a la vez, o un resumen de una lista de reproducción completa

Extraer para edición

  • Recortar un rango de tiempo sin descargar el vídeo completo, cortar con precisión o en fotogramas clave, por marca de tiempo o nombre de capítulo

  • Clips de audio en mp3, m4a, wav, flac u opus

  • Captura de fotogramas en cualquier marca de tiempo, sin descargar el archivo

  • Exportación de subtítulos como SRT, WebVTT o texto plano para Premiere, Resolve o CapCut

  • Descargas completas con ajustes predefinidos de calidad

Conserva lo que aprendas (modo local)

  • Guarda resúmenes y notas de habilidades en una biblioteca local

  • Léelos de nuevo y busca entre todos con clasificación de texto completo

  • Etiqueta, vuelve a etiquetar y elimina

Construye un cerebro para un canal (modo local)

  • Lee un canal completo y conviértelo en un corpus de pasajes con marcas de tiempo, en cualquier idioma de subtítulos, reanudable y seguro de interrumpir: una segunda ejecución continúa donde se detuvo y recoge nuevas subidas

  • Pregunta qué ha dicho un creador sobre cualquier cosa, en todos los vídeos, y obtén los propios momentos con enlaces que abren el vídeo en ese punto

  • Mide el canal: cuánto era legible, su ritmo de publicación, su velocidad de habla y las frases que repite en los vídeos

  • Mantén un perfil escrito junto al corpus, basado en pasajes que puedas citar

Diseñado para seguir funcionando

  • WebVTT analizado por la implementación de referencia del W3C, no por un comparador escrito a mano

  • Errores tipados y accionables — «sin subtítulos en en, prueba: fr, es, de» en lugar de un muro de stderr de yt-dlp

  • Tiempos de espera, reintentos con retroceso y un límite de concurrencia en cada llamada a yt-dlp

  • check_health diagnostica yt-dlp y ffmpeg faltantes o desactualizados

  • Salida estructurada en cada herramienta, además de recursos, prompts y completions de MCP

Related MCP server: YouTube Translate MCP

Requisitos previos

  • Node.js 22+

  • yt-dlp — necesario para todas las herramientas. brew install yt-dlp (macOS) o pip install -U yt-dlp

  • ffmpeg — necesario para descargas, extracción de clips y captura de fotogramas. Todo lo demás funciona sin él.

Ejecuta la herramienta check_health para confirmar que ambos están instalados y actualizados. Un yt-dlp desactualizado es la causa más común de fallos inexplicables, ya que YouTube cambia con frecuencia; yt-dlp -U soluciona la mayoría de ellos.

Instalación

Mediante npm (recomendado)

npm install -g youtube-knowledge-mcp

Mediante npx (sin instalación)

Configúralo directamente con npx (consulta la sección de Configuración).

Desde el código fuente

git clone https://github.com/teobouancheau/youtube-knowledge-mcp.git
cd youtube-knowledge-mcp
npm install
npm run build

Configuración

Local (stdio) — Claude Desktop, Claude Code, Cursor

Inicio rápido con npx

{
  "mcpServers": {
    "youtube-knowledge": {
      "command": "npx",
      "args": ["-y", "youtube-knowledge-mcp"]
    }
  }
}

Con instalación global

npm install -g youtube-knowledge-mcp
{
  "mcpServers": {
    "youtube-knowledge": {
      "command": "youtube-knowledge-mcp"
    }
  }
}

Ubicaciones de los archivos de configuración

Cliente

Ruta

Claude Desktop (macOS)

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Desktop (Windows)

%APPDATA%\Claude\claude_desktop_config.json

Claude Desktop (Linux)

~/.config/Claude/claude_desktop_config.json

Claude Code

.mcp.json en tu proyecto o ~/.claude/settings.json

Cursor

.cursor/mcp.json en tu proyecto

Reinicia tu cliente después de actualizar la configuración.

Remoto (HTTP) — Claude.ai, Claude Mobile, conectores personalizados

El servidor admite transporte Streamable HTTP para acceso remoto mediante los conectores oficiales de Claude.

Cada configuración remota es tu propio despliegue. No hay ninguna instancia compartida a la que apuntar un conector, por diseño: cada llamada invoca a yt-dlp, por lo que un único host que sirva tráfico de otras personas es un host al que YouTube limita la velocidad para todos. El botón de abajo despliega este repositorio en tu propia cuenta de Render, en unos dos minutos y sin clonar nada.

Autohospedado

npm run build
npm run start:http

El servidor escucha en PORT (por defecto 3000). Cambia la variable de entorno PORT para modificarlo.

Docker

docker build -t youtube-knowledge-mcp .

TOKEN=$(openssl rand -hex 32) && echo "MCP_AUTH_TOKEN=$TOKEN"
docker run -p 3000:10000 -e MCP_AUTH_TOKEN="$TOKEN" youtube-knowledge-mcp

El token se imprime porque nada más lo imprimirá: el servidor registra que se requiere un token, pero nunca su valor. Envíalo como Authorization: Bearer $TOKEN.

La imagen establece PORT=10000 y lo expone; publícalo en el puerto del host que quieras. La compilación se realiza dentro de la imagen, así que no hace falta un npm run build local previo.

Desplegar en Render

Deploy to Render

El botón abre el flujo Blueprint de Render con render.yaml de este repositorio, que compila la imagen de Docker, apunta la comprobación de salud a /health y genera un MCP_AUTH_TOKEN para ti. Sin fork, sin clon, sin ajustes que rellenar: el servicio es tuyo, en tu cuenta.

  1. Haz clic en el botón y confirma. Render compila la imagen y la despliega.

  2. Abre la pestaña Entorno del servicio y copia el MCP_AUTH_TOKEN generado. El transporte HTTP rechaza cualquier solicitud sin él, así que una URL que se filtre no es un servidor abierto.

  3. Añade https://<your-service>.onrender.com/mcp como conector personalizado, con Authorization: Bearer <token>.

Vale la pena hacer esto una vez que el servicio exista: establece MCP_ALLOWED_HOSTS al nombre de host de tu servicio (<your-service>.onrender.com). No puede rellenarse desde el Blueprint, ya que el nombre de host no existe hasta que existe el servicio, y rechaza las solicitudes que lleguen bajo cualquier otro nombre.

Tu instancia no sigue este repositorio. El Blueprint establece autoDeployTrigger: off, porque el despliegue automático ejecutaría código subido aquí dentro de tu cuenta, bajo tu token, sin que lo leas antes. Para usar una versión más reciente, utiliza Despliegue manual en el servicio.

El plan gratuito se duerme tras la inactividad, así que la primera llamada después de una pausa espera a un arranque en frío. Cualquier plan de pago elimina eso.

Conectar mediante Claude.ai

  1. Ve a Configuración > Conectores

  2. Haz clic en Añadir conector personalizado

  3. Introduce la URL de tu servidor (p. ej., https://your-app.onrender.com/mcp)

  4. Añade la cabecera Authorization: Bearer <token> si configuraste MCP_AUTH_TOKEN

  5. Haz clic en Añadir

Herramientas MCP

33 herramientas. Las 14 de solo lectura funcionan en ambos transportes; las 19 que tocan tu sistema de archivos se registran solo en modo local (stdio), por lo que un despliegue remoto no puede acceder al disco del host.

Cada herramienta devuelve texto legible por humanos y salida estructurada tipada, y reporta los fallos como un mensaje accionable — [NO_CAPTIONS] No "en" captions are available for this video. Call get_transcript again with one of: fr, es, de.

Descubrimiento — remoto + local

Herramienta

Parámetros clave

Devuelve

search_videos

query, limit

Vídeos coincidentes con duraciones, canales y recuentos de visualizaciones

search_channels

query, limit

Canales coincidentes con recuentos de suscriptores

fetch_videos

url, limit

Vídeos en una lista de reproducción o canal

get_video_info

video

Título, canal, duración, visualizaciones, me gusta, descripción, etiquetas

get_channel_info

channel

Nombre, identificador, número de suscriptores, descripción

get_playlist_info

url

Título, canal, número de vídeos, última actualización

get_chapters

video

Títulos de capítulos con horas de inicio/fin y enlaces profundos

Biblioteca de conocimientos — solo local

Herramienta

Parámetros clave

Devuelve

save_to_library

videoId, title, content, contentType, channel, tags

Ruta a la nota guardada

list_library

tag

Elementos guardados, los más recientes primero

get_library_item

videoId, contentType

El markdown guardado y sus metadatos

search_library

query, limit, offset

Coincidencias clasificadas con extractos

update_library_tags

videoId, add, remove, replace

Las etiquetas actualizadas

delete_library_item

videoId, contentType

Lo que se eliminó

rebuild_library_index

—

Número de notas reindexadas

Cerebros de canal — solo local

Herramienta

Parámetros clave

Devuelve

build_brain

channel, maxVideos, language, since, minDurationSeconds

Lo que se leyó, lo que se descartó y las estadísticas

ask_brain

channel, query, limit, offset

Pasajes con marcas de tiempo y enlaces ?t=

list_brains

—

Todos los cerebros creados localmente

get_brain_info

channel, includeVideos

Cobertura, estadísticas y frases repetidas

save_brain_profile

channel, content

Ruta al perfil guardado

delete_brain

channel

Lo que se eliminó

build_brain es el único que toca la red. El resto resuelve un canal a partir de lo que ya hay en disco, por lo que funcionan sin conexión y no cuestan nada llamarlos.

Un cerebro contiene un único idioma de subtítulos; pasa language para leer otro y crea un cerebro separado por idioma.

since y minDurationSeconds describen el cerebro, no solo la llamada que los pasó. Se vuelven a aplicar cada vez, así que estrechar uno elimina los pasajes de los vídeos que excluye, y ampliarlo los vuelve a leer — por eso build_brain está anotado como destructivo. Si un vídeo cumple los requisitos se decide a partir de la fecha y la duración ya registradas, así que cambiar de opinión no cuesta ninguna petición hasta que haya algo nuevo que obtener. Esos valores provienen de los metadatos de cada vídeo, nunca de una suposición: una lista plana de canal no incluye fecha de publicación en absoluto.

build_brain también repara. Si el archivo de pasajes se pierde o se trunca, los vídeos que ya no puede justificar se vuelven a leer en la siguiente llamada en lugar de omitirse para siempre como ya hechos.

Prompts

Flujos de trabajo reutilizables que tu cliente puede invocar directamente: summarize_video, extract_skill, compare_videos, research_topic, channel_deep_dive, clip_from_quote (encontrar una frase y luego cortar el clip alrededor de ella), y — solo local — review_library, create_brain (crear el corpus de un canal y luego escribir su perfil a partir de él) y ask_creator (responder una pregunta estrictamente desde un cerebro, con citas).

Recursos

  • youtube://transcript/{videoId} — una transcripción con marcas de tiempo, obtenida y almacenada en caché en la primera lectura

  • youtube://library/{videoId}/{summary|skill} — una nota guardada (solo local y enumerable)

  • youtube://brain/{channelId}/{manifest|profile} — lo que cubre el cerebro de un canal, o el perfil escrito a partir de él (solo local y enumerable)

Códigos de error

Los fallos se notifican dentro del resultado para que el modelo pueda leerlos y recuperarse de ellos, cada uno con un prefijo de código y seguido de un siguiente paso.

Código

Significado

PRIVATE, AGE_GATED, MEMBERS_ONLY, PREMIUM_ONLY, NOT_FOUND

No se puede acceder al vídeo

LOGIN_REQUIRED

yt-dlp informa de que el vídeo necesita una cuenta con sesión iniciada

NO_CAPTIONS

No hay subtítulos en el idioma solicitado; el mensaje enumera los que existen

LIVE_NOT_ENDED

Una transmisión próxima, o una cuya grabación aún se está procesando

RATE_LIMITED, TIMEOUT

Transitorios; se reintentan automáticamente con retroceso antes de aparecer

YTDLP_MISSING, FFMPEG_MISSING, YTDLP_FAILED

Un problema de herramientas; el mensaje indica cómo solucionarlo

INVALID_INPUT

Un argumento incorrecto, detectado antes de cualquier llamada de red

CANCELLED

El cliente canceló la solicitud

Variables de entorno

Todas opcionales.

Variable

Por defecto

Propósito

MCP_AUTH_TOKEN

sin definir

Exigir este token de portador en el transporte HTTP. Configúralo si expones el servidor más allá de localhost.

MCP_ALLOWED_HOSTS

sin definir

Lista de hosts permitidos separados por comas; habilita la protección contra el reenlace de DNS

MCP_ALLOWED_ORIGINS

sin definir

Lista de orígenes permitidos separados por comas

MCP_BIND_HOST

0.0.0.0

Interfaz a la que vincularse

PORT

3000

Puerto HTTP. La imagen de Docker establece 10000; Render y plataformas similares inyectan el suyo

MCP_RATE_LIMIT

60

Solicitudes por ventana, por cliente

MCP_RATE_WINDOW_MS

60000

Ventana de límite de velocidad

MCP_SESSION_IDLE_MS

1800000

Cerrar sesiones HTTP inactivas durante este tiempo

MCP_MAX_SESSIONS

1000

Rechazar nuevas sesiones a partir de este número

YOUTUBE_MCP_MAX_CONCURRENCY

3

Procesos yt-dlp simultáneos

YOUTUBE_MCP_TRANSCRIPT_TTL_MS

30 días

Duración de la caché de transcripciones

Almacenamiento de la biblioteca

El contenido se almacena en ~/.youtube-knowledge/:

~/.youtube-knowledge/
├── transcripts/          # Cached timestamped transcripts
│   └── {video_id}.{lang}.json
├── library/              # Saved notes
│   └── {video_id}/
│       ├── metadata.json
│       ├── summary.md
│       └── skill.md
├── brains/               # Channel brains
│   └── {channel_id}/
│       ├── manifest.json # What the brain covers, and where a build stopped
│       ├── chunks.json   # The timestamped passages
│       └── profile.md    # The written account, if one was saved
├── downloads/            # Full downloads
├── clips/                # Extracted clips
├── frames/               # Captured stills
├── subtitles/            # Exported SRT / VTT / TXT
├── index.json            # Library index
└── search-index.json     # Full-text search index

Las transcripciones se almacenan en caché durante 30 días por defecto; pasa refresh: true a cualquier herramienta de transcripción para omitir la caché, o establece YOUTUBE_MCP_TRANSCRIPT_TTL_MS.

Toda herramienta que escribe archivos limita su salida a tu directorio personal, y outputDir es rechazado si apunta a cualquier otro lugar.

Ejemplos de uso

Encontrar un momento y citarlo

"Find where this video talks about rate limiting and give me the timestamp:
 https://youtube.com/watch?v=..."

search_transcript devuelve cada coincidencia con un enlace que abre el vídeo en ese segundo, de modo que la afirmación se puede comprobar en lugar de aceptarse sin más.

Encontrar un momento y recortarlo

"Find where she says 'the real bottleneck was the database' and cut me a
 30-second clip around it"

search_transcript localiza el momento, extract_clip lo corta. Solo se descarga el rango de bytes que cubre el clip.

Leer una sección de un vídeo largo

"Summarize just the 'Benchmarks' chapter of this 3-hour podcast"

get_chapters encuentra la sección, y luego get_transcript con chapter: "Benchmarks" lee solo esa parte en lugar de todo el vídeo.

Examinar una lista de reproducción de forma económica

"What does this 40-video course cover, and which three videos should I watch?"

digest_playlist devuelve los metadatos y capítulos de cada vídeo en una sola llamada.

Preparar material para una edición

"Pull these four moments as separate clips and export the subtitles as SRT"

extract_clips corta los cuatro en una sola llamada; export_subtitles escribe un archivo que tu editor puede importar.

Crear y consultar una base de conocimiento

"Summarize this video and save it to my library tagged 'databases'"
"What have I saved about connection pooling?"

save_to_library la guarda; search_library busca en todo lo guardado con clasificación de texto completo.

Crear un cerebro para un creador

"Build a brain for @Fireship, then tell me everything they've said about Rust"

build_brain lee el canal en pasajes con marcas de tiempo: interrúmpelo y vuelve a llamarlo para continuar. Luego ask_brain responde a partir de lo que realmente se dijo, devolviendo los propios momentos para que cada afirmación se pueda comprobar con el vídeo. Vuelve a ejecutar build_brain un mes después y leerá solo las nuevas subidas.

Pruebas

npm test              # Run all tests
npm run test:watch    # Watch mode
npm run test:coverage # Coverage report, with thresholds enforced

La suite cubre la lógica pura directamente, maneja el servidor real a través de un cliente MCP sobre un transporte en memoria, ejercita la biblioteca contra un sistema de archivos temporal real y captura el manifiesto de herramientas para que cualquier cambio en la superficie pública aparezca como una diferencia revisable.

Desarrollo

npm run dev        # Watch mode
npm run build      # Build for production
npm run rebuild    # Clean and rebuild
npm start          # Run server (stdio)
npm run start:http # Run server (HTTP)
npm run validate   # Typecheck + lint + format check + test

La CI ejecuta la misma comprobación en Node 22 y 24 para cada push y pull request, y luego arranca el servidor compilado como un cliente MCP real para verificar el manifiesto.

Contribuir

Las contribuciones son bienvenidas: consulta CONTRIBUTING.md para conocer la estructura del proyecto, los estándares de codificación y cómo añadir una herramienta.

Seguridad

El transporte HTTP no está autenticado a menos que establezcas MCP_AUTH_TOKEN. Consulta SECURITY.md antes de exponerlo más allá de localhost y para informar de una vulnerabilidad.

Licencia

Licencia MIT: consulta LICENSE para más detalles.

Agradecimientos

  • yt-dlp para la extracción de YouTube

  • Anthropic para el Protocolo de Contexto del Modelo


Available Tools

13 tools
download_videoDownload YouTube VideoA

Download a YouTube video to local disk. Use the quality parameter for automatic format selection with smart fallbacks, or formatId for a specific format from list_formats. Returns the downloaded file path, title, and format details.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoYesYouTube video ID (e.g., dQw4w9WgXcQ) or full URL
qualityNoQuality preset with smart fallback. "best" selects highest available. Specific resolutions fall back to next best if unavailable. "audio" extracts audio only. Default: best
formatIdNoSpecific format code from list_formats (e.g., "22", "137+140" for combined). Overrides quality when provided.
outputDirNoOutput directory path. Default: ~/.youtube-knowledge/downloads/

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate readOnly=false, so the write nature is known. The description adds that the write is to 'local disk' and discloses the return value (file path, title, format details), which annotations do not cover. However, it does not mention other behavioral traits such as overwriting behavior or error handling, so it offers minimal but non-redundant value.

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 long and front-loads the core purpose, followed by parameter guidance and return value. No words are wasted, and it is well-structured for quick parsing by an agent.

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 no output schema, the description appropriately summarizes the return values. It covers the key parameter choices and gives enough context to use the tool effectively. It does not address edge cases like failures or file conflicts, but the annotations and schema fill in most missing details for a download 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 coverage is 100%, with each parameter fully described. The description adds a small cross-reference between quality and formatId, but largely repeats what the schema already states. Since the schema does the heavy lifting, a baseline score of 3 is appropriate with only marginal added meaning.

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 action ('Download') and the resource ('a YouTube video to local disk'), distinguishing it from sibling tools like get_video_info or list_formats. It also specifies the function's output (file path, title, format details), leaving no ambiguity.

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 explicit internal guidance on when to use quality vs formatId, and references list_formats to obtain format codes. It does not explicitly state when to use this tool versus alternatives (e.g., when only metadata is needed), but the clear purpose and parameter guidance provide adequate context.

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

fetch_videosFetch YouTube VideosA
Read-onlyIdempotent

List videos from a YouTube playlist or channel. Returns video IDs, titles, durations, upload dates, and URLs. Sorted by playlist or channel order.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesYouTube playlist URL, channel URL, or channel handle (e.g., https://www.youtube.com/@channel)
limitNoMaximum number of videos to return (1-100, default: 20)

TDQS

A4/5.0
Behavior4/5

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

The description reveals useful behavioral details such as the returned video fields and the sort order (playlist/channel order). Annotations already cover the read-only, idempotent, and non-destructive nature, so the description adds value without needing to restate those.

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 long, front-loaded with the primary action, and includes only essential details about return values and sorting. No filler or redundancy.

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 simple list tool with two parameters and no output schema, the description adequately covers purpose, return data, and ordering. It could be slightly more complete by referencing alternative tools, but overall it is sufficient.

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 schema provides complete descriptions for both parameters (url and limit), so the description does not need to add param-specific meaning. It does echo the url parameter's source types but offers no additional semantic depth.

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 uses a specific verb 'List' and a clear resource ('videos from a YouTube playlist or channel'), and specifies the return fields (IDs, titles, durations, upload dates, URLs) and ordering. This distinguishes it from sibling tools like search_videos, which focuses on keyword 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 implies the tool is for listing videos from a playlist or channel, but it does not explicitly mention when to use this tool versus search_videos or other alternatives. No exclusions or alternative guidance is provided.

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

get_channel_infoGet YouTube Channel InfoA
Read-onlyIdempotent

Get metadata for a YouTube channel. Returns channel name, handle, subscriber count, description, and channel URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesYouTube channel URL, handle (e.g., @Fireship), or channel name

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds the specific output fields (channel name, handle, subscriber count, description, URL), which is useful context beyond the annotations, but it does not disclose any error behavior or rate limits.

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 a single sentence that immediately states the function and lists the return fields. No unnecessary words.

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 simple one-parameter read tool with strong annotations, the description sufficiently covers the purpose and output shape. The absence of an output schema is compensated by the explicit list of returned fields.

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 fully describes the 'channel' parameter as a URL, handle, or name, so schema coverage is 100%. The description does not add any additional parameter semantics beyond what is in 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 uses the specific verb 'Get' and clearly identifies the resource as 'metadata for a YouTube channel', listing the exact fields returned (name, handle, subscriber count, description, URL). This distinguishes it from sibling tools like get_video_info or search_channels.

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 implies the tool is for retrieving metadata for a specific known channel, but it does not explicitly state when to use it over alternatives like search_channels. There are no explicit exclusions or alternative recommendations.

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

get_chaptersGet YouTube Video ChaptersA
Read-onlyIdempotent

Extract chapter markers and timestamps from a YouTube video. Returns chapter titles with start and end times. Not all videos have chapters. Returns empty list if none found.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoYesYouTube video ID (e.g., dQw4w9WgXcQ) or full URL

TDQS

A4.5/5.0
Behavior5/5

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

The description adds value beyond the annotations by disclosing the return contents (titles with start/end times) and the edge case behavior (empty list if no chapters). This informs the agent about expected output and failure mode, which annotations don't cover.

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 conveying essential information without redundancy. The description is tightly written and free of fluff.

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 read-only tool, the description is complete: it states what it returns, when it might return nothing, and the input format (covered in schema). No critical information 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?

The schema already thoroughly describes the 'video' parameter (ID or full URL) at 100% coverage. The description adds no additional parameter semantics, so a baseline score 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 opens with 'Extract chapter markers and timestamps from a YouTube video,' a specific verb+resource that clearly differentiates this tool from siblings like get_transcript or get_video_info. The additional details about chapter titles and timestamps reinforce the scope.

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 provides clear context: it's for extracting chapters. It implies when to use it (when you need chapter markers) but does not explicitly name alternatives or exclusion criteria. The caveat about videos without chapters adds context.

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

get_commentsGet YouTube Video CommentsA
Read-onlyIdempotent

Get top comments from a YouTube video sorted by popularity. Returns author, text, like count, and pinned status. Only top-level comments, no replies.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of top-level comments to return (1-50, default: 20)
videoYesYouTube video ID (e.g., dQw4w9WgXcQ) or full URL

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description need not restate safety. It adds valuable behavioral context: sorting by popularity, return fields (author, text, like count, pinned status), and the limitation to top-level comments, going beyond mere annotation coverage.

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 extremely concise at two sentences, with the main action front-loaded and every sentence carrying meaningful information. It avoids redundancy and unnecessary detail.

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 simple read-only tool with no output schema, the description adequately covers purpose, return values, and scope limitations. Combined with strong annotations and a well-documented schema, it provides a complete picture for an agent to select and invoke the 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?

Schema description coverage is 100%, with both video and limit fully described in the input schema. The tool description reinforces the 'top-level comments' aspect but does not add significant meaning beyond the schema, so a baseline score 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 clearly states the action (get top comments), the resource (YouTube video), and key details (sorted by popularity, top-level only, no replies). It distinguishes itself from sibling tools like get_video_info and get_transcript by specifying its focus on comments and the exact output fields.

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 provides a clear scope of use (top comments, sorted by popularity) and explicitly excludes replies, guiding when not to use it. However, it does not name an alternative tool for retrieving replies or other comment types, so it falls short of the highest bar for explicit alternatives.

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

get_playlist_infoGet YouTube Playlist InfoA
Read-onlyIdempotent

Get metadata for a YouTube playlist. Returns title, channel, video count, last updated date, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesYouTube playlist URL (e.g., https://www.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb)

TDQS

A3.9/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds the return fields but no additional behavioral context (e.g., whether private playlists are accessible, error behavior, or rate limits). This is adequate for a read-only operation.

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 one sentence, front-loaded with the action ('Get metadata for a YouTube playlist') followed by the return fields. Every word earns its place; 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 simple tool (one parameter, fully documented in schema) and robust annotations (read-only, idempotent, non-destructive), the description is complete. It clearly states the return fields, which is essential since there is no output schema. No significant gaps are apparent.

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%, and the url parameter is fully described with an example in the schema. The tool description does not add any additional parameter semantics beyond what the schema already provides, so it meets the baseline for high coverage.

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 clear, specific action: 'Get metadata for a YouTube playlist.' It lists the exact fields returned (title, channel, video count, last updated date, description), which distinguishes it from sibling tools like get_video_info and get_channel_info.

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 usage is implied by the name and description but never explicitly stated. It does not mention when to use this tool versus alternatives (e.g., for individual videos or channels), nor does it provide any exclusions or prerequisites.

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

get_transcriptGet YouTube Video TranscriptA
Read-onlyIdempotent

Extract the full transcript from a YouTube video. Supports auto-generated and manual captions. Returns plain text with word count and detected language. Results are cached locally.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoYesYouTube video ID (e.g., dQw4w9WgXcQ) or full URL
languageNoPreferred caption language as ISO 639-1 code (e.g., en, fr, es, de). Falls back to available language if unavailable. Default: enen

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds valuable behavior: it returns plain text with word count and detected language, and states results are cached locally. It also notes support for both auto-generated and manual captions. These details enrich understanding beyond the annotations, though it doesn't discuss error handling or rate limits.

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 three sentences, front-loaded with the main action ('Extract the full transcript from a YouTube video') and followed by concise details on caption types, output, and caching. Every sentence contributes meaningful information, with no redundancy or fluff.

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 two parameters, robust annotations, and no output schema, the description sufficiently explains the return value (plain text with word count and detected language). It also covers key behavioral aspects like caching and caption support. Combined with the schema and annotations, the tool is fully specified for an agent to invoke 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 both parameters clearly documented: video accepts an ID or full URL, and language specifies ISO 639-1 code with fallback behavior and a default. The description adds no extra semantic meaning beyond the schema, 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?

The description clearly states 'Extract the full transcript from a YouTube video' with a specific verb and resource. It distinguishes itself from sibling tools like get_video_info, get_chapters, or download_video, as no other sibling retrieves transcripts. The mention of supporting both auto-generated and manual captions further clarifies its scope.

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 usage context is clear: use this tool when you need the transcript of a YouTube video. While it doesn't explicitly name alternatives or exclusions, the tool's unique function among the siblings makes the when-to-use obvious. No misleading guidance is present.

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

get_video_infoGet YouTube Video InfoA
Read-onlyIdempotent

Get detailed metadata for a single YouTube video. Returns title, channel, duration, upload date, view count, like count, comment count, description, tags, and thumbnail URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoYesYouTube video ID (e.g., dQw4w9WgXcQ) or full URL

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the specific metadata fields returned, but does not disclose error behavior, rate limits, or prerequisites. With annotations present, the extra context is useful but not extensive.

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 a single concise sentence that leads with the action and resource, followed by a clear list of return fields. Every word adds value, with no redundant information.

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 no output schema, the description carries the burden of explaining return values, which it does by enumerating all metadata fields (title, channel, duration, etc.). For a simple single-parameter, read-only tool with comprehensive annotations, this is complete.

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%, fully explaining the 'video' parameter as either an ID or full URL. The description adds no additional parameter syntax or constraints beyond the schema, so score matches the baseline for high schema coverage.

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 gets detailed metadata for a single YouTube video, with a specific verb and resource. It lists the return fields, which distinguishes it from siblings like get_transcript and get_comments that fetch different aspects of a video.

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 implies when to use the tool via 'single YouTube video', indicating it is for individual video metadata rather than search or channel-level info. However, it does not explicitly mention alternatives or exclusions, such as using fetch_videos for multiple videos.

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

list_formatsList YouTube Video FormatsA
Read-onlyIdempotent

List all available download formats for a YouTube video. Returns format IDs, extensions, resolutions, FPS, codecs, and file sizes. Grouped by video+audio, video-only, and audio-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoYesYouTube video ID (e.g., dQw4w9WgXcQ) or full URL

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, open-world, idempotent, and non-destructive behavior. The description adds useful behavioral context beyond that, such as grouping by video+audio, video-only, and audio-only, which helps set expectations about the response structure.

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-loaded with the verb and resource, and includes a concise list of return fields. No wasted words.

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 simple list tool with one parameter, good annotations, and no output schema, the description provides sufficient detail about return values and groupings. It lacks explicit error handling details, but that's not critical here.

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 single parameter 'video' is already fully described in the schema (ID or URL, with examples). The description does not add additional meaning beyond the schema, so the baseline score 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?

The description clearly states the tool's purpose: listing all available download formats for a YouTube video, with specific details on what is returned. It distinguishes from siblings like download_video or get_video_info by focusing on format listing.

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 implies usage context: when you need format IDs, resolutions, etc. for a video. It doesn't explicitly name alternatives or exclusions, but the context is clear enough for an agent to select appropriately.

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

list_libraryList YouTube Knowledge LibraryA
Read-onlyIdempotent

List all saved items in the local YouTube knowledge library. Returns titles, channels, content types, tags, and save dates. Optionally filter by tag. Sorted by most recently saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter results by tag. Case-insensitive partial match (e.g., "ml" matches "machine-learning")

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only and idempotent, so the description adds value by disclosing return fields, sorting order, and the optional tag filter. No contradictions found.

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-loaded with the main action, and includes the necessary details without any fluff.

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 one optional parameter, no output schema, and good annotations, the description fully covers what is returned, the sorting behavior, and the filter option. It is complete for this simple listing 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?

The schema fully documents the tag parameter with a case-insensitive partial match description. The tool description merely repeats 'Optionally filter by tag' without adding new meaning, so baseline 3 applies given 100% schema coverage.

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 lists all saved items in the local YouTube knowledge library, a specific verb+resource. It also names the returned fields, distinguishing it from siblings like search_videos or get_video_info.

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 is for listing saved library items, not for searching external videos. However, it does not explicitly mention alternatives or when not to use it, which would make it a 5.

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

save_to_librarySave to YouTube Knowledge LibraryA
Idempotent

Save a summary or skill note to the local YouTube knowledge library. Overwrites existing content of the same type for the same video. Returns the saved file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for categorization and filtering (e.g., ["machine-learning", "tutorial"])
titleYesVideo title for library indexing
channelNoYouTube channel name for library indexing
contentYesContent to save: summary, notes, or extracted skill in markdown format
videoIdYesYouTube video ID (e.g., dQw4w9WgXcQ)
contentTypeNoType of content: "summary" for video summaries, "skill" for extracted techniques or knowledgesummary

TDQS

A4/5.0
Behavior4/5

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

The description discloses important behavioral beyond annotations: it overwrites existing content of the same type for the same video, and it returns the saved file path. This adds context not covered by the idempotentHint or destructiveHint annotations, which is valuable for the agent.

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-loaded with the primary purpose, and includes key behavioral facts without any fluff. Every sentence earns its place, making it highly concise and well-structured.

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 6-parameter schema and no output schema, the description adequately covers purpose, overwrite behavior, and return value. It does not explain the library concept or parameter relationships beyond that, but the schema fills in those details, leaving the description contextually complete for a straightforward save operation.

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 add significant parameter-specific meaning; 'summary or skill note' aligns with the contentType enum but does not elaborate on parameter formats or values 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 description clearly states the tool's function with a specific verb and resource: 'Save a summary or skill note to the local YouTube knowledge library.' It also distinguishes itself from sibling tools by focusing on writing to the library, whereas most siblings are read-oriented.

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 does not explicitly specify when to use this tool versus alternatives, but the context of sibling tools like list_library implies its role as the write counterpart. The overwrite note hints at usage constraints but lacks explicit exclusions or alternative tool references.

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

search_channelsSearch YouTube ChannelsA
Read-onlyIdempotent

Search YouTube for channels by keyword or phrase. Returns channel names, handles, subscriber counts, descriptions, and URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of channels to return (1-20, default: 5)
queryYesSearch query for YouTube channels (e.g., "web development", "machine learning")

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the returned data types (names, handles, subscriber counts) but no additional behavioral traits like pagination, rate limits, or result ordering, leaving room for more transparency.

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 short sentences, front-loaded with the action, and contains no filler or redundant info. Every word contributes to understanding the tool's purpose and output.

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 simple read-only search tool with a small parameter set and complete schema descriptions, the description is sufficient. It lists the return fields, compensating for the lack of an output schema, and provides enough context for an agent to select and invoke the 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?

Schema description coverage is 100%, with both 'query' and 'limit' fully described in the schema. The description adds little beyond the schema, only echoing 'keyword or phrase' which is already explicit in the schema. Baseline 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?

The description states the exact action ('Search YouTube for channels by keyword or phrase') and lists the return fields, making it clear this tool is for channel discovery, distinct from siblings like search_videos. It is specific and unambiguous.

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 implies usage for channel search but does not explicitly mention alternatives, when-not-to-use, or comparison with sibling tools such as search_videos. It provides context but lacks explicit exclusion or alternative guidance.

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

search_videosSearch YouTube VideosA
Read-onlyIdempotent

Search YouTube for videos by keyword or phrase. Returns video IDs, titles, durations, channels, view counts, and URLs. Results sorted by relevance.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (1-20, default: 5)
queryYesSearch query (e.g., "machine learning tutorial", "react hooks explained")

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate a read-only, idempotent, open-world operation. The description adds behavioral details beyond that: the specific output fields returned and the default relevance sort order. This gives the agent a clearer picture of what to expect, though it doesn't cover pagination or error handling.

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 three short sentences, each earning its place: the search action, the returned data fields, and the sort order. It is front-loaded with the primary purpose and contains no redundant or vague phrasing.

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 simplicity of the tool (two params, no output schema, read-only annotations), the description covers the key aspects: what it searches, what it returns, and how results are ordered. It doesn't explicitly discuss edge cases like empty results or API limitations, but the annotations and schema fill in the safety profile and parameter constraints. A small gap is the lack of alternative guidance, but that's more relevant to usage guidelines.

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 has 100% coverage with descriptions for both 'query' and 'limit', so the baseline is 3. The description mentions 'keyword or phrase' which aligns with the query parameter but doesn't add additional parameter-specific detail beyond the schema. It doesn't explain the effect of the limit parameter beyond the schema's own description.

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 action ('Search YouTube'), the resource ('videos'), and the method ('by keyword or phrase'). It also enumerates the returned fields (IDs, titles, durations, channels, view counts, URLs), making it distinct from sibling tools like search_channels.

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 provides clear context for when to use this tool: to find YouTube videos via keywords. It doesn't explicitly mention alternatives or exclusions, but the purpose is unambiguous, and sibling tool names (e.g., search_channels, get_video_info) imply the distinctions. The lack of explicit 'use this instead of...' prevents a 5.

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. 13 tool updatesv1.1.1
    • First observeddownload_video
    • First observedfetch_videos
    • First observedget_channel_info
    • First observedget_chapters
    • First observedget_comments
    • First observedget_playlist_info
    • First observedget_transcript
    • First observedget_video_info
    • First observedlist_formats
    • First observedlist_library
    • First observedsave_to_library
    • First observedsearch_channels
    • First observedsearch_videos

TDQS

A4.1/5.0

Scored across 13 tools

Disambiguation5/5

Each tool targets a distinct resource/action combination: searching vs fetching videos, retrieving metadata, transcripts, chapters, comments, channel info, playlist info, formats, downloading, and library operations. No two tools appear to do the same thing.

Naming Consistency4/5

The vast majority use a consistent verb_noun pattern (get_video_info, search_channels, list_formats). The only deviation is 'save_to_library' which uses a preposition, but it's still clear and readable.

Tool Count5/5

13 tools is well within the ideal 3-15 range and each tool serves a necessary function for the server's purpose of YouTube knowledge management—no redundancy or bloat.

Completeness4/5

The surface covers search, retrieval, metadata, transcripts, chapters, comments, channels, playlists, download, and library save/list. Minor gap: no explicit delete or update for library items, though save_to_library does overwrite.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers