YouTube Knowledge MCP
YouTube Knowledge MCP
一个模型上下文协议(MCP)服务器,让 AI 助手能够从 YouTube 视频中搜索、分析和提取知识。适用于 Claude Desktop、Claude Code、Claude.ai、Cursor 以及任何兼容 MCP 的客户端。
支持 本地(stdio)和 远程(Streamable HTTP)两种传输方式。
![]()
功能
查找与阅读
按关键词搜索视频和频道
从播放列表或频道获取视频
视频、频道和播放列表元数据、章节及热门评论
带时间戳的转录文本,可按时间范围或章节切片,并设有上限,以免三个小时的视频淹没你的上下文
在转录文本中搜索,并返回可在精确时刻打开视频的
?t=链接批量工具:一次获取多个视频的转录文本,或生成整个播放列表的摘要
提取以用于剪辑
剪辑时间范围,无需下载整个视频,可按时间戳或章节名称精确剪切或按关键帧剪切
音频片段,支持 mp3、m4a、wav、flac 或 opus 格式
帧捕获,可在任意时间戳截取,无需下载文件
字幕导出,支持 SRT、WebVTT 或纯文本,适用于 Premiere、Resolve 或 CapCut
完整下载,提供画质预设
保留你学到的内容(本地模式)
保存摘要和技能笔记到本地库
回读这些内容,并通过全文排序搜索全部内容
添加标签、重新标记和删除
为频道构建一个大脑(本地模式)
通读整个频道,构建一个可搜索的带时间戳段落语料库,支持任何字幕语言,可恢复且可安全中断——第二次运行会从上次停止处继续,并获取新上传的视频
询问创作者关于任何话题说过什么,覆盖每个视频,并返回相关时刻本身,附带的链接可在该处打开视频
衡量频道:多少内容可读、其上传节奏、说话速率,以及跨视频重复的短语
在语料库旁保留一份书面档案,并附上可引用的段落作为依据
为持续运行而构建
WebVTT 由 W3C 参考实现解析,而非手写匹配器
类型明确、可操作的用户提示——例如显示“no captions in en, try: fr, es, de”,而不是满屏的 yt-dlp stderr
每次调用 yt-dlp 都有超时、指数退避重试和并发限制
check_health诊断 yt-dlp 和 ffmpeg 是否缺失或版本过旧每个工具都提供结构化输出,此外还有 MCP 资源、提示和补全
Related MCP server: YouTube Translate MCP
前提条件
Node.js 22+
yt-dlp — 每个工具都需要。
brew install yt-dlp(macOS)或pip install -U yt-dlpffmpeg — 下载、片段提取和帧捕获需要。其他功能无需它也能运行。
运行 check_health 工具以确认两者均已安装且为最新版本。yt-dlp 版本过旧是大多数无法解释的失败的最常见原因,因为 YouTube 变动频繁;yt-dlp -U 可修复其中的大多数问题。
安装
通过 npm(推荐)
npm install -g youtube-knowledge-mcp通过 npx(无需安装)
直接使用 npx 进行配置(参见配置部分)。
从源码安装
git clone https://github.com/teobouancheau/youtube-knowledge-mcp.git
cd youtube-knowledge-mcp
npm install
npm run build配置
本地(stdio)——Claude Desktop、Claude Code、Cursor
使用 npx 快速开始
{
"mcpServers": {
"youtube-knowledge": {
"command": "npx",
"args": ["-y", "youtube-knowledge-mcp"]
}
}
}使用全局安装
npm install -g youtube-knowledge-mcp{
"mcpServers": {
"youtube-knowledge": {
"command": "youtube-knowledge-mcp"
}
}
}配置文件位置
客户端 | 路径 |
Claude Desktop (macOS) |
|
Claude Desktop (Windows) |
|
Claude Desktop (Linux) |
|
Claude Code | 项目中的 |
Cursor | 项目中的 |
更新配置后,请重启你的客户端。
远程(HTTP)——Claude.ai、Claude Mobile、自定义连接器
服务器通过 Claude 的官方连接器支持 Streamable HTTP 传输,用于远程访问。
每个远程设置都是你自己的部署。 按照设计,不存在可让连接器指向的共享实例:每次调用都会调用 yt-dlp,因此,如果一台主机为他人流量提供服务,YouTube 会对该主机进行速率限制,影响所有人。下面的按钮可将此仓库部署到你自己的 Render 账户中,大约两分钟,无需克隆任何内容。
自托管
npm run build
npm run start:http服务器监听 PORT(默认 3000)。可通过设置 PORT 环境变量来更改。
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该令牌会被打印出来,因为没有任何其他方式会打印它:服务器只会记录需要令牌,而从不记录其值。请将其作为 Authorization: Bearer $TOKEN 发送。
该镜像设置 PORT=10000 并将其暴露;你可以将其发布到任何喜欢的主机端口。构建在镜像内部完成,因此无需先在本地执行 npm run build。
部署到 Render
该按钮会在此仓库中打开 Render 的 Blueprint 流程,针对 render.yaml,它会构建 Docker 镜像、将健康检查指向 /health,并为你生成 MCP_AUTH_TOKEN。无需 fork、无需克隆、无需填写设置——该服务属于你,位于你的账户中。
点击按钮并确认。Render 会构建镜像并部署它。
打开服务的 环境 选项卡,复制生成的
MCP_AUTH_TOKEN。HTTP 传输会拒绝没有该令牌的每个请求,因此 URL 泄露也不会导致服务器开放。将
https://<your-service>.onrender.com/mcp添加为自定义连接器,并使用Authorization: Bearer <token>。
服务创建后值得做的一件事:将 MCP_ALLOWED_HOSTS 设置为你服务的主机名(<your-service>.onrender.com)。它无法从 Blueprint 中填写,因为主机名直到服务创建后才存在,并且它会拒绝以任何其他名称到达的请求。
你的实例不会跟随此仓库。Blueprint 设置了 autoDeployTrigger: off,因为自动部署会在此处推送的代码在未经你事先阅读的情况下于你的账户中、在你的令牌下运行。要获取更新版本,请使用服务上的 手动部署。
免费计划会在无活动后休眠,因此暂停后的第一次调用需要等待冷启动。任何付费计划都可消除这种情况。
通过 Claude.ai 连接
转到 设置 > 连接器
点击 添加自定义连接器
输入你的服务器 URL(例如
https://your-app.onrender.com/mcp)如果设置了
MCP_AUTH_TOKEN,请添加Authorization: Bearer <token>请求头点击 添加
MCP 工具
共 33 个工具。其中 14 个只读工具可在两种传输方式下工作;19 个会接触文件系统的工具仅在本地(stdio)模式下注册,因此远程部署无法访问主机的磁盘。
每个工具都返回人类可读的文本和类型化的结构化输出,并将失败报告为可操作的消息——[NO_CAPTIONS] No "en" captions are available for this video. Call get_transcript again with one of: fr, es, de.
发现 — 远程 + 本地
工具 | 关键参数 | 返回结果 |
|
| 匹配的视频,包含时长、频道和观看次数 |
|
| 匹配的频道,包含订阅者数量 |
|
| 播放列表或频道中的视频 |
|
| 标题、频道、时长、观看次数、点赞数、描述、标签 |
|
| 名称、用户名(handle)、订阅者数量、描述 |
|
| 标题、频道、视频数量、最后更新时间 |
|
| 章节标题,包含开始/结束时间和深度链接 |
|
| 按热度排序的顶级评论 |
|
| 可用格式,按视频+音频、仅视频、仅音频分组 |
| — | yt-dlp 和 ffmpeg 状态、版本及过时警告 |
转录文本 — 远程 + 本地
工具 | 关键参数 | 返回结果 |
|
| 转录文本,格式为纯文本、带时间戳的行或字幕提示 |
|
| 匹配结果,含时间戳和 |
|
| 多个视频的转录文本;每个视频的失败会单独报告 |
|
| 每个视频的元数据、章节和转录统计 |
format: "timestamped" 会为每行添加 [MM:SS] 前缀——当你需要引用或链接到某个时刻时,请使用它。maxChars 与 offset 结合使用,可以分段读取长转录文本,而不是一次性返回超过 100,000 个令牌。
提取以用于剪辑 — 仅本地
工具 | 关键参数 | 返回结果 |
|
| 剪辑视频的路径 |
|
| 音频文件的路径 |
|
| 每个范围对应一个文件 |
|
| PNG 或 JPG 静帧的路径 |
|
| 字幕文件的路径 |
|
| 下载视频的路径 |
片段使用 --download-sections 剪切,因此只获取覆盖窗口的字节范围,而不是整个文件。preciseCuts(默认 true)会精确剪切到请求的时间点;将其设为 false 可获得更快的关键帧对齐剪切。所有这些都需要 ffmpeg。
知识库 — 仅本地
工具 | 关键参数 | 返回 |
|
| 已保存笔记的路径 |
|
| 已保存的项目,最新的在前 |
|
| 已保存的 Markdown 及其元数据 |
|
| 带摘录的排序匹配 |
|
| 更新后的标签 |
|
| 已删除的内容 |
| — | 重新索引的笔记数量 |
频道大脑 — 仅本地
工具 | 关键参数 | 返回 |
|
| 读取的内容、排除的内容以及统计信息 |
|
| 带有时间戳和 |
| — | 本地构建的全部大脑 |
|
| 覆盖范围、统计信息和重复短语 |
|
| 已保存配置文件的路径 |
|
| 已删除的内容 |
build_brain 是唯一需要访问网络的工具。其余工具都从磁盘上已有的内容解析频道,因此它们可以离线工作,且调用不消耗任何资源。
一个大脑只包含一种字幕语言;传入 language 可读取另一种语言,并为每种语言分别构建大脑。
since 和 minDurationSeconds 描述的是大脑本身,而不仅仅是传入它们的调用。它们每次都会被重新应用,因此缩小范围会丢弃被排除视频的片段,扩大范围则会重新读取这些片段——这就是为什么 build_brain 被标注为破坏性操作。一个视频是否符合条件取决于已经记录的日期和长度,所以在有新的内容需要获取之前,改变主意不会消耗任何请求。这些值来自每个视频自身的元数据,绝不来自猜测:一个扁平的频道列表根本不包含发布日期。
build_brain 还会进行修复。如果片段文件丢失或被截断,它无法再解释的视频会在下一次调用时被重新读取,而不是像已处理过一样被永久跳过。
提示词
你的客户端可以直接调用的可复用工作流:summarize_video、extract_skill、compare_videos、research_topic、channel_deep_dive、clip_from_quote(找短语,然后剪出该短语周围的片段),以及——仅本地——review_library、create_brain(构建频道的语料库,然后据此撰写其配置文件)和 ask_creator(严格基于某个大脑回答问题,并附带引用)。
资源
youtube://transcript/{videoId}— 带时间戳的字幕文本,首次读取时获取并缓存youtube://library/{videoId}/{summary|skill}— 已保存的笔记(仅本地,且可枚举)youtube://brain/{channelId}/{manifest|profile}— 频道大脑所覆盖的内容,或从中写入的配置文件(仅本地,且可枚举)
错误代码
失败会以结果内部的形式报告,以便模型能够读取并从中恢复;每个失败都带有代码前缀,并附有下一步操作。
代码 | 含义 |
| 无法访问该视频 |
| yt-dlp 报告该视频需要登录账号 |
| 没有所请求语言的字幕;消息会列出存在的字幕语言 |
| 尚未开始的直播,或录制仍在处理中的直播 |
| 临时性错误;自动退避重试后才上报 |
| 工具链问题;消息会说明修复方法 |
| 参数错误,在任何网络调用之前就会被捕获 |
| 客户端取消了请求 |
环境变量
全部可选。
变量 | 默认值 | 用途 |
| 未设置 | 在 HTTP 传输上要求此 bearer token。如果服务器暴露在 localhost 之外,请设置此项。 |
| 未设置 | 以逗号分隔的 Host 白名单;启用 DNS 重新绑定保护 |
| 未设置 | 以逗号分隔的 Origin 白名单 |
|
| 绑定接口 |
|
| HTTP 端口。Docker 镜像设置为 |
|
| 每个窗口、每个客户端的请求数 |
|
| 速率限制窗口 |
|
| 空闲时间超过此值的 HTTP 会话将被关闭 |
|
| 超过此数量后拒绝新会话 |
|
| 并发的 yt-dlp 进程数 |
| 30 天 | 字幕缓存生命周期 |
知识库存储
内容存储在 ~/.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默认情况下,字幕缓存 30 天;向任何字幕工具传递 refresh: true 可绕过缓存,或设置 YOUTUBE_MCP_TRANSCRIPT_TTL_MS。
所有写入文件的工具都将其输出限制在主目录内,如果 outputDir 指向其他位置,则会被拒绝。
使用示例
找到某个瞬间并引用它
"Find where this video talks about rate limiting and give me the timestamp:
https://youtube.com/watch?v=..."search_transcript 返回每个匹配项,并附带一个链接,可在该秒打开视频,从而可以对说法进行核实,而不是盲目信任。
找到某个瞬间并剪辑它
"Find where she says 'the real bottleneck was the database' and cut me a
30-second clip around it"search_transcript 定位瞬间,extract_clip 进行剪辑。只下载覆盖该剪辑的字节范围。
读取长视频的某个片段
"Summarize just the 'Benchmarks' chapter of this 3-hour podcast"get_chapters 找到片段,然后使用带 chapter: "Benchmarks" 的 get_transcript 只读取该部分,而不是全部内容。
低成本概览播放列表
"What does this 40-video course cover, and which three videos should I watch?"digest_playlist 一次调用即可返回每个视频的元数据和章节。
为剪辑准备素材
"Pull these four moments as separate clips and export the subtitles as SRT"extract_clips 一次调用即可全部剪辑这四个;export_subtitles 会写出编辑器可以导入的文件。
构建并查询知识库
"Summarize this video and save it to my library tagged 'databases'"
"What have I saved about connection pooling?"save_to_library 保存它;search_library 使用全文排序搜索所有已保存的内容。
为创作者构建大脑
"Build a brain for @Fireship, then tell me everything they've said about Rust"build_brain 将频道读取为带时间戳的片段——中断它并再次调用即可继续。ask_brain 然后根据实际所说的内容进行回答,返回这些瞬间本身,以便每项声明都可以对照视频进行核实。一个月后再次运行 build_brain,它只会读取新的上传内容。
测试
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage report, with thresholds enforced测试套件直接覆盖纯逻辑,通过 MCP 客户端在内存传输上驱动真实服务器,对真实临时文件系统上的知识库进行测试,并对工具清单进行快照,从而对公共接口的任何更改都会以可审查的差异形式呈现。
开发
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 + testCI 在 Node 22 和 24 上对每次推送和拉取请求运行相同的检查,然后以真实的 MCP 客户端启动构建后的服务器以验证清单。
贡献
欢迎贡献——有关项目结构、编码标准以及如何添加工具,请参阅 CONTRIBUTING.md。
安全
除非设置 MCP_AUTH_TOKEN,否则 HTTP 传输未经过身份验证。在将其暴露到 localhost 之外以及报告漏洞之前,请参阅 SECURITY.md。
许可证
MIT 许可证 - 详见 LICENSE。
致谢
Available Tools
13 toolsdownload_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.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | YouTube video ID (e.g., dQw4w9WgXcQ) or full URL | |
| quality | No | Quality preset with smart fallback. "best" selects highest available. Specific resolutions fall back to next best if unavailable. "audio" extracts audio only. Default: best | |
| formatId | No | Specific format code from list_formats (e.g., "22", "137+140" for combined). Overrides quality when provided. | |
| outputDir | No | Output directory path. Default: ~/.youtube-knowledge/downloads/ |
TDQS
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.
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.
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.
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.
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.
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 VideosARead-onlyIdempotent
List videos from a YouTube playlist or channel. Returns video IDs, titles, durations, upload dates, and URLs. Sorted by playlist or channel order.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube playlist URL, channel URL, or channel handle (e.g., https://www.youtube.com/@channel) | |
| limit | No | Maximum number of videos to return (1-100, default: 20) |
TDQS
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.
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.
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.
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.
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.
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 InfoARead-onlyIdempotent
Get metadata for a YouTube channel. Returns channel name, handle, subscriber count, description, and channel URL.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | YouTube channel URL, handle (e.g., @Fireship), or channel name |
TDQS
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.
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.
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.
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.
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.
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 ChaptersARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | YouTube video ID (e.g., dQw4w9WgXcQ) or full URL |
TDQS
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.
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.
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.
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.
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.
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 CommentsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of top-level comments to return (1-50, default: 20) | |
| video | Yes | YouTube video ID (e.g., dQw4w9WgXcQ) or full URL |
TDQS
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.
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.
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.
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.
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.
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 InfoARead-onlyIdempotent
Get metadata for a YouTube playlist. Returns title, channel, video count, last updated date, and description.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube playlist URL (e.g., https://www.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb) |
TDQS
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.
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.
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.
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.
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.
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 TranscriptARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | YouTube video ID (e.g., dQw4w9WgXcQ) or full URL | |
| language | No | Preferred caption language as ISO 639-1 code (e.g., en, fr, es, de). Falls back to available language if unavailable. Default: en | en |
TDQS
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.
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.
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.
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.
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.
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 InfoARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | YouTube video ID (e.g., dQw4w9WgXcQ) or full URL |
TDQS
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.
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.
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.
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.
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.
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 FormatsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | YouTube video ID (e.g., dQw4w9WgXcQ) or full URL |
TDQS
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.
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.
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.
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.
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.
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 LibraryARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter results by tag. Case-insensitive partial match (e.g., "ml" matches "machine-learning") |
TDQS
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.
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.
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.
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.
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.
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 LibraryAIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags for categorization and filtering (e.g., ["machine-learning", "tutorial"]) | |
| title | Yes | Video title for library indexing | |
| channel | No | YouTube channel name for library indexing | |
| content | Yes | Content to save: summary, notes, or extracted skill in markdown format | |
| videoId | Yes | YouTube video ID (e.g., dQw4w9WgXcQ) | |
| contentType | No | Type of content: "summary" for video summaries, "skill" for extracted techniques or knowledge | summary |
TDQS
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.
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.
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.
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.
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.
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 ChannelsARead-onlyIdempotent
Search YouTube for channels by keyword or phrase. Returns channel names, handles, subscriber counts, descriptions, and URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of channels to return (1-20, default: 5) | |
| query | Yes | Search query for YouTube channels (e.g., "web development", "machine learning") |
TDQS
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.
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.
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.
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.
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.
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 VideosARead-onlyIdempotent
Search YouTube for videos by keyword or phrase. Returns video IDs, titles, durations, channels, view counts, and URLs. Results sorted by relevance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (1-20, default: 5) | |
| query | Yes | Search query (e.g., "machine learning tutorial", "react hooks explained") |
TDQS
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.
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.
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.
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.
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.
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.
13 tool updates
v1.1.1- First observed
download_video - First observed
fetch_videos - First observed
get_channel_info - First observed
get_chapters - First observed
get_comments - First observed
get_playlist_info - First observed
get_transcript - First observed
get_video_info - First observed
list_formats - First observed
list_library - First observed
save_to_library - First observed
search_channels - First observed
search_videos
TDQS
Scored across 13 tools
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.
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.
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.
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
Related MCP Connectors
YouTube transcripts, search, channel browsing, and playlists for AI agents via MCP.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
An MCP server that gives any LLM or agent clean YouTube transcripts on demand: a single video, a whole channel, or a playlist, plus AI cleanup of auto-generated captions. API-key auth, credit-based, same backend as the public v1 API. Get a free API key with 25 free credits at youtubetranscriptdownload.com/account.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI assistants to extract transcripts from YouTube videos, allowing AI to analyze and work with video content directly.126 npm4MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables access to YouTube video content through transcripts, translations, summaries, and subtitle generation in various languages.55MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that analyzes YouTube videos, enabling users to extract transcripts, generate summaries, and query video content using Gemini AI.13MIT
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables searching YouTube videos, retrieving and storing transcripts, and performing semantic search over video content without using the official YouTube API.39MIT