YouTube Knowledge MCP
YouTube Knowledge MCP
AI 어시스턴트가 YouTube 동영상을 검색, 분석, 지식 추출할 수 있게 해주는 Model Context Protocol(MCP) 서버입니다. Claude Desktop, Claude Code, Claude.ai, Cursor 및 모든 MCP 호환 클라이언트에서 작동합니다.
로컬(stdio) 및 원격(Streamable HTTP) 전송 방식을 모두 지원합니다.
![]()
기능
검색 및 읽기
검색 — 키워드로 동영상과 채널 검색
가져오기 — 재생 목록 또는 채널에서 동영상 가져오기
동영상, 채널, 재생 목록 메타데이터, 챕터, 인기 댓글
타임스탬프가 포함된 트랜스크립트 — 시간 범위나 챕터로 잘라내며, 3시간짜리 동영상이 컨텍스트를 넘치게 하지 않도록 상한이 있습니다.
트랜스크립트 내부 검색 — 동영상을 해당 지점에서 열어주는
?t=링크를 반환일괄 도구: 여러 동영상의 트랜스크립트를 한 번에 가져오거나 전체 재생 목록 요약 생성
편집용 추출
시간 범위 클립 — 전체 동영상을 다운로드하지 않고 타임스탬프나 챕터 이름으로 정밀하게 또는 키프레임 기준으로 잘라냅니다
오디오 클립 — mp3, m4a, wav, flac 또는 opus 형식
프레임 캡처 — 파일을 다운로드하지 않고 특정 타임스탬프에서 캡처
자막 내보내기 — Premiere, Resolve 또는 CapCut용 SRT, WebVTT 또는 일반 텍스트
전체 다운로드 — 화질 프리셋 지원
배운 내용 보관(로컬 모드)
저장 — 요약과 스킬 노트를 로컬 라이브러리에 저장
다시 읽기 — 저장된 항목을 다시 읽고 전체 텍스트 순위로 모든 항목 검색
태그 추가, 태그 변경, 삭제
채널 브레인 구축(로컬 모드)
전체 채널 읽기 — 타임스탬프가 있는 구절로 이루어진 검색 가능한 코퍼스로 변환. 어떤 캡션 언어로든 가능하며, 재개 가능하고 중단해도 안전합니다. 두 번째 실행은 중단된 지점에서 이어서 새 업로드를 수집합니다.
크리에이터가 말한 내용 묻기 — 모든 동영상을 통틀어 특정 주제에 대해 물어보면 해당 장면 자체를 링크와 함께 반환받습니다.
채널 측정: 읽을 수 있는 양, 업로드 주기, 말하는 속도, 여러 동영상에서 반복되는 표현
서면 프로필 유지 — 인용할 수 있는 구절에 근거해 코퍼스 옆에 프로필을 유지
계속 작동하도록 설계
WebVTT를 수제 매처가 아닌 W3C 표준 구현으로 파싱
유형화된 실행 가능한 오류 — yt-dlp stderr의 벽 대신 "no captions in en, try: fr, es, de"
모든 yt-dlp 호출에 타임아웃, 백오프 재시도, 동시성 제한 적용
check_health는 누락되었거나 오래된 yt-dlp와 ffmpeg를 진단모든 도구에 구조화된 출력 제공, MCP 리소스, 프롬프트, completions 지원
Related MCP server: YouTube Translate MCP
사전 요구 사항
Node.js 22+
yt-dlp — 모든 도구에 필요합니다.
brew install yt-dlp(macOS) 또는pip install -U yt-dlpffmpeg — 다운로드, 클립 추출, 프레임 캡처에 필요합니다. 그 외에는 ffmpeg 없이도 작동합니다.
둘 다 설치되어 있고 최신인지 확인하려면 check_health 도구를 실행하세요. YouTube가 자주 변경되므로 오래된 yt-dlp가 설명할 수 없는 실패의 가장 흔한 원인입니다. yt-dlp -U로 대부분 해결됩니다.
설치
npm으로 설치(권장)
npm install -g youtube-knowledge-mcpnpx로 설치(설치 불필요)
npx로 직접 구성하세요(Configuration 섹션 참조).
소스에서 설치
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, Custom Connectors
서버는 Claude의 공식 커넥터를 통한 원격 액세스를 위해 Streamable HTTP 전송을 지원합니다.
모든 원격 구성은 사용자의 자체 배포입니다. 설계상 커넥터를 가리킬 공유 인스턴스가 없습니다. 모든 호출이 yt-dlp를 셸로 실행하므로, 다른 사람들의 트래픽을 처리하는 단일 호스트는 YouTube가 모두에게 속도 제한을 걸게 됩니다. 아래 버튼을 누르면 클론 없이 약 2분 만에 이 저장소가 사용자의 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.yaml을 대상으로 Render의 Blueprint 흐름을 열며, Docker 이미지를 빌드하고 상태 확인을 /health로 지정하며 MCP_AUTH_TOKEN을 생성합니다. 포크도, 클론도, 입력할 설정도 없습니다. 서비스는 계정에 있는, 사용자 소유입니다.
버튼을 클릭하고 확인하세요. Render가 이미지를 빌드하고 배포합니다.
서비스의 Environment 탭을 열고 생성된
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로 설정합니다. 자동 배포하면 사용자가 먼저 읽어보지 않은 여기 푸시된 코드가 사용자의 계정에서, 사용자의 토큰으로 실행되기 때문입니다. 최신 버전을 적용하려면 서비스에서 Manual Deploy를 사용하세요.
무료 플랜은 비활성 상태 후 절전 모드로 전환되므로, 중단 후 첫 호출은 콜드 스타트를 기다립니다. 유료 플랜을 사용하면 그런 대기가 없습니다.
Claude.ai로 연결
Settings > Connectors로 이동
Add custom connector 클릭
서버 URL 입력(예:
https://your-app.onrender.com/mcp)MCP_AUTH_TOKEN을 설정한 경우Authorization: Bearer <token>헤더를 추가Add 클릭
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.
검색 — 원격 + 로컬
도구 | 주요 매개변수 | 반환값 |
|
| 일치하는 동영상, 길이, 채널, 조회수 |
|
| 구독자 수가 포함된 일치하는 채널 |
|
| 재생 목록 또는 채널의 동영상 |
|
| 제목, 채널, 길이, 조회수, 좋아요, 설명, 태그 |
|
| 이름, 핸들, 구독자 수, 설명 |
|
| 제목, 채널, 동영상 수, 마지막 업데이트 |
|
| 시작/종료 시간과 딥 링크가 포함된 챕터 제목 |
|
| 인기순 상위 댓글 |
|
| video+audio, video-only, audio-only로 그룹화된 사용 가능한 형식 |
| — | yt-dlp 및 ffmpeg 상태, 버전, 오래됨 경고 |
트랜스크립트 — 원격 + 로컬
도구 | 주요 매개변수 | 반환값 |
|
| 일반 텍스트, 타임스탬프 줄 또는 큐 형식의 트랜스크립트 |
|
| 타임스탬프와 |
|
| 여러 동영상의 트랜스크립트; 실패는 동영상별로 보고 |
|
| 동영상별 메타데이터, 챕터, 트랜스크립트 통계 |
format: "timestamped"로 설정하면 각 줄 앞에 [MM:SS]가 붙습니다. 특정 순간을 인용하거나 링크로 연결해야 할 때 사용하세요. offset과 함께 maxChars를 사용하면 긴 트랜스크립트를 한 번에 100,000개 이상의 토큰으로 반환하는 대신 여러 조각으로 읽습니다.
편집용 추출 — 로컬 전용
도구 | 주요 매개변수 | 반환값 |
|
| 잘라낸 동영상 경로 |
|
| 오디오 파일 경로 |
|
| 범위마다 파일 하나 |
|
| PNG 또는 JPG 스틸 이미지 경로 |
|
| 자막 파일 경로 |
|
| 다운로드된 동영상 경로 |
클립은 --download-sections로 잘라내므로 전체 파일이 아닌 해당 구간을 포함하는 바이트 범위만 가져옵니다. preciseCuts(기본값 true)는 요청된 시간에 정확히 잘라냅니다. 더 빠른 키프레임 정렬 컷을 원하면 false로 설정하세요. 이 모든 기능에는 ffmpeg가 필요합니다.
지식 라이브러리 — 로컬 전용
도구 | 주요 매개변수 | 반환값 |
|
| 저장된 노트의 경로 |
|
| 저장된 항목, 최신순 |
|
| 저장된 마크다운과 메타데이터 |
|
| 발췌문이 포함된 관련도 순위 결과 |
|
| 업데이트된 태그 |
|
| 삭제된 항목 |
| — | 다시 색인된 노트 수 |
채널 브레인 — 로컬 전용
도구 | 주요 매개변수 | 반환값 |
|
| 읽은 내용, 제외된 내용, 통계 |
|
| 타임스탬프와 |
| — | 로컬에 구축된 모든 브레인 |
|
| 적용 범위, 통계 및 반복되는 문구 |
|
| 저장된 프로필의 경로 |
|
| 제거된 항목 |
build_brain은 네트워크에 접근하는 유일한 도구입니다. 나머지는 이미 디스크에 있는 내용에서 채널을 확인하므로 오프라인에서도 작동하며 호출 비용이 들지 않습니다.
브레인은 하나의 자막 언어를 보관합니다. 다른 언어를 읽으려면 language를 전달하고, 언어별로 별도의 브레인을 구축하세요.
since와 minDurationSeconds는 전달한 호출뿐만 아니라 브레인 자체를 설명합니다. 이 값들은 매번 다시 적용되므로, 범위를 좁히면 제외된 동영상의 구절이 삭제되고 넓히면 다시 읽어옵니다. 그래서 build_brain은 파괴적(destructive)으로 표시되어 있습니다. 동영상이 자격을 갖추는지는 이미 기록된 날짜와 길이로 결정되므로, 마음을 바꿔도 새로 가져올 것이 생기기 전까지는 요청 비용이 들지 않습니다. 이러한 값들은 추측이 아닌 각 동영상의 자체 메타데이터에서 비롯됩니다. 평면적인 채널 목록에는 게시 날짜가 전혀 포함되지 않기 때문입니다.
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 토큰을 요구합니다. 서버를 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 클라이언트로 실제 서버를 구동하며, 실제 임시 파일 시스템에서 라이브러리를 실행하고, 도구 매니페스트를 스냅샷하여 공개 표면의 변경 사항이 검토 가능한 diff로 나타나게 합니다.
개발
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