podcast-summarizer-mcp
Connect via OpenClaw to interact with the podcast summarizer agent from Discord.
Connect via OpenClaw to interact with the podcast summarizer agent from Telegram.
Connect via OpenClaw to interact with the podcast summarizer agent from WhatsApp.
Search and discover YouTube channels via natural language, track channels, and summarize videos without requiring transcripts or subtitles.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@podcast-summarizer-mcpSummarize the latest video from @lexfridman"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Podcast Summarizer MCP 📝
MCP that works with OpenClaw, Claude Desktop, Claude Code. Search & discover YouTube channels via natural language and summarize videos with no transcripts or subtitles required.
Quick start (5 minutes)
Python 3.10+ and a Gemini API key (free) from https://aistudio.google.com.
1. Install
pip install podcast-summarizer-mcpThis puts podcast-summarizer-mcp on your PATH. (Or use pipx install
/ uvx install if you prefer isolated tools.)
2. Configure ONE host
Pick whichever you use. Replace AIza... with your Gemini key.
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"podcast-summarizer": {
"command": "podcast-summarizer-mcp",
"env": { "GEMINI_API_KEY": "AIza..." }
}
}
}Quit Claude Desktop fully (⌘Q) and reopen. Click the 🔌 icon —
podcast-summarizer should be listed.
Claude Code
claude mcp add podcast-summarizer \
--env GEMINI_API_KEY=AIza... \
-- podcast-summarizer-mcp
claude mcp list # should show podcast-summarizerOpenClaw
Add to ~/.openclaw/openclaw.json under mcp.servers:
"podcast-summarizer": {
"command": "podcast-summarizer-mcp",
"env": { "GEMINI_API_KEY": "AIza..." }
}Restart OpenClaw (pkill -f openclaw-gateway; openclaw).
Installing from source instead?
git clone,cd, thenpython3 -m venv .venv && .venv/bin/pip install -e ., and use the absolute path$(pwd)/.venv/bin/podcast-summarizer-mcpfor thecommandfield above.
Related MCP server: YouTube Tools MCP Server
Example prompts
Discover:
Does Andrej Karpathy have a YouTube channel?
Find me a few investing podcasts.
Track:
Add Forward Guidance to my channels
Add @ForwardGuidanceBW
What channels am I tracking?
Remove Forward Guidance
Summarize:
Summarize this video: https://www.youtube.com/watch?v=MO9ZTZPUwXY
Summarize today's new videos from all my channels in parallel
I have a 20-video backlog — no rush, do it overnight to save cost
The agent picks analyze_video_start (parallel, full price) by default
and analyze_videos_batch_start (50% off, async) only when you say
"no rush" / "overnight".
📱 Use via Telegram, WhatsApp & More (OpenClaw)
Connect this MCP to Telegram, WhatsApp, Discord and 20+ messaging platforms via OpenClaw — a self-hosted AI gateway. Talk to your podcast research agent from your phone, anywhere.
Telegram → OpenClaw agent (Claude / Gemini / GPT) → podcast-summarizer-mcp → Gemini + YouTubeOpenClaw routes messages from your chat platform of choice to an AI agent. The agent talks to this MCP over standard stdio — no Python wrapper or shim required.
Setup
# 1. Install OpenClaw (Node 22+)
npm install -g openclaw
# 2. Add a Telegram bot token (interactive — paste BotFather token)
openclaw configure --section channels
# 3. Add this MCP + agent + model to ~/.openclaw/openclaw.json:
# (already covered in Quick Start — use the OpenClaw snippet)
openclaw config set agents.defaults.model "anthropic/claude-sonnet-4-5"
# 4. Start the gateway
openclaw gatewayTools
13 tools. The agent picks; you don't call them directly.
Tool | Purpose |
| Fuzzy channel search |
|
|
| Subs, description, recent titles |
| Add to registry |
| Remove from registry |
| List tracked channels |
| New videos since last poll |
| Metadata only (no Gemini cost) |
| Launch Gemini analysis (returns |
| Poll for the result |
| 50%-cheaper batch path (24h SLA) |
| Poll batch result |
| Per-channel last-seen video |
Registry state lives at ~/.podcast-summarizer-mcp/channels.json.
Configuration
Set in the host's env block. Only GEMINI_API_KEY is required.
Variable | Default |
| required |
|
|
|
|
|
|
|
|
| unset → built-in investment-podcast prompt |
VIDEO_ANALYSIS_PROMPT_PATH is re-read on every analysis call (no restart). Bundled examples in prompts/: investment-podcast.md, technical-talk.md, interview.md, news-briefing.md.
MIT License.
Available Tools
13 toolsadd_tracked_channelA
Add a channel to the registry. You MUST call this tool to add a channel — claiming "I've added X" without invoking it leaves the user's registry empty and the user has no way to know until they next ask "what am I tracking" and discover the missing channels.
Idempotent: re-adding the same channel_id updates name/handle/tags but preserves the original added_at timestamp. Tags are arbitrary strings — use them to group channels (e.g. ["macro"], ["semis", "podcast"]).
Args: channel_id: YouTube channel ID, must start with "UC". name: Display name (the user-friendly label). handle: Optional "@handle" (cosmetic, helps users identify the channel). tags: Optional list of grouping strings (default empty).
Returns:
{ added: true,
channel: {channel_id, name, handle, tags, added_at},
registry_total: ,
registry_now_contains: [name, name, ...], # alphabetical
user_facing_message: "Added X. Registry now has N channels: ..." }
Use user_facing_message verbatim when telling the user the result —
it carries the freshly-verified state and prevents misreporting.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| name | Yes | ||
| handle | No | ||
| tags | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses idempotency behavior, constraint that channel_id must start with 'UC', and the return structure including user_facing_message. Since no annotations are provided, the description carries full burden and does so thoroughly.
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 structured but somewhat lengthy; however, each sentence provides essential information. It could be slightly more concise but remains effective.
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 zero annotations and no output schema, the description covers behavioral details, parameter semantics, and return structure comprehensively. It even instructs the agent on how to present results.
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 0%, but the description details each parameter's purpose and constraints, such as channel_id format, handle being optional '@handle', and tags being arbitrary grouping strings. This adds significant value beyond 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?
Clearly states 'Add a channel to the registry' and emphasizes that the tool must be invoked, distinguishing it from sibling tools like list_tracked_channels and remove_tracked_channel.
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?
Explicitly tells the agent to call this tool when adding a channel and warns against claiming addition without invocation. However, it does not provide explicit when-not-to-use or alternatives beyond the sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_video_resultA
Poll for an analyze_video_start result. Blocks up to wait_seconds for a state change.
Default wait_seconds=10 keeps the blocking window well under the typical 60s MCP request timeout enforced by hosts. Smaller blocking window = guaranteed return well under 60s at the cost of more poll round-trips (cheap, ~1KB per poll).
Recommended pattern: call with wait_seconds=10 each poll. Cap total
polling at ~90 iterations (~15 min) — most podcasts finish within 3-5 min.
If a poll returns an MCP-transport error (not a status: "error"
payload), the underlying job is likely still alive on the server —
re-poll with the SAME job_id rather than starting over.
Args: job_id: The id returned by analyze_video_start wait_seconds: How many seconds to block waiting for completion (default 10, clamped to [0, 55] to stay safely under the MCP 60s request timeout)
Returns: { job_id, status, video_url, created_at, started_at, finished_at, result?, error?, attempts }
status="pending" or "running": still processing — poll again.
status="done": result holds the AnalysisResult dict (analysis, timestamps_valid, video_duration, vaneck_excluded, attempts, error=null).
status="error": error holds the message; result may hold a partial AnalysisResult.
status="not_found": job_id unknown (job purged after 6h TTL or wrong id).
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| wait_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses blocking behavior, clamping of wait_seconds to [0,55], all possible return statuses, and job TTL of 6 hours. No contradictions.
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?
Well-structured with paragraphs and bullet points, front-loaded core purpose. Slightly verbose due to recommended pattern details but every sentence adds value.
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 polling tool with 2 params and no output schema, description covers all needed context: return format, error handling, timeouts, polling limits, and job lifecycle. Very 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 coverage 0%, but description adds full meaning: job_id defined as id from analyze_video_start, wait_seconds explained with default and clamping range. Significantly adds beyond 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?
Clearly states it polls for an analyze_video_start result. Distinguishes from siblings (analyze_video_start, analyze_videos_batch_result) by focusing on polling behavior.
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?
Provides explicit recommended pattern: call with wait_seconds=10, cap polling at ~90 iterations, re-poll on transport errors. Rationale for default wait_seconds given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_videos_batch_resultA
Poll the Gemini Batch API once; if done, return per-video results.
Call repeatedly until status is SUCCEEDED / FAILED / CANCELLED / EXPIRED. Recommended cadence: every 30-60s.
Args: batch_job_name: Name returned by analyze_videos_batch_start
Returns: { status, batch_job_name, results? (on SUCCEEDED), error? (on terminal failure) }
results: { video_id: AnalysisResult }
| Name | Required | Description | Default |
|---|---|---|---|
| batch_job_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes possible statuses (SUCCEEDED, FAILED, CANCELLED, EXPIRED) and return structure including results and error. Without annotations, it provides sufficient behavioral context for a simple poll 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?
Concise yet comprehensive: one initial sentence for purpose, followed by usage instructions, parameter description, and return shape. No wasteful content.
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?
Covers all necessary aspects: polling behavior, argument source, return shape, terminal statuses, and error handling. For a tool with one parameter and no output schema, this is fully 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?
The description adds valuable context for 'batch_job_name' by specifying it is the name returned by 'analyze_videos_batch_start', which is not evident from the schema alone (coverage 0%).
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 it polls the Gemini Batch API once to check for results, and distinguishes itself from sibling tools like 'analyze_videos_batch_start' (which starts the batch) by specifying its polling nature and return of per-video results upon completion.
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?
Explicitly instructs to call repeatedly until a terminal status, with recommended cadence of 30-60s. It also references the start tool for the argument but does not explicitly state when not to use (e.g., before starting a batch).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_videos_batch_startA
Submit a batch of YouTube videos to Gemini Batch API for async analysis.
Use this ONLY when the user explicitly says "no rush", "overnight",
"do it later", or for scheduled cron digests. Batch is 50% cheaper
than analyze_video_start but the wall-clock SLA is up to 24 hours
(typically 15-60 min). For interactive requests — even multi-video
ones like "summarize today's new videos" — prefer analyze_video_start
fired N times in parallel (~5-10 min wall-clock for any N).
Args:
video_urls: List of full YouTube URLs (https://www.youtube.com/watch?v=...)
prompt: Optional override for the analysis prompt. If None, the
default ships with an investment-podcast persona — set
$VIDEO_ANALYSIS_PROMPT_PATH to change the host-wide default,
or pass prompt here for a per-batch override.
Returns: { batch_job_name, video_count, video_urls, status: "pending", skipped: [{video_url, reason}] }
| Name | Required | Description | Default |
|---|---|---|---|
| video_urls | Yes | ||
| prompt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and delivers: it reveals async nature, cost implications ('50% cheaper'), SLA ('up to 24 hours, typically 15-60 min'), and return structure. It fully discloses behavioral traits beyond the input schema.
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 well-structured with clear sections (use case, args, returns). It is concise but could be slightly trimmed (e.g., the detailed prompt override explanation is useful but slightly verbose). Still, it earns its keeping.
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 tool has 2 parameters, no output schema, and no annotations, the description is very complete. It covers purpose, usage, behavioral details, and return format. However, it lacks explicit error conditions or failure handling, which is minor.
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 0%, so the description must add meaning. It explains `video_urls` as 'List of full YouTube URLs (https://www.youtube.com/watch?v=...)' and `prompt` as optional override with default behavior and per-batch override mechanism. This adds significant semantic context.
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 'Submit a batch of YouTube videos to Gemini Batch API for async analysis.' It distinguishes from `analyze_video_start` by noting it is async and cheaper. The verb 'submit' and resource 'batch of YouTube videos' are specific, and the context signals show sibling tools with similar names, but the description effectively differentiates.
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?
Explicitly states 'Use this ONLY when the user explicitly says "no rush", "overnight", "do it later", or for scheduled cron digests.' It contrasts with `analyze_video_start` for interactive requests, providing clear when-to-use and when-not-to-use guidance. This is exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_video_startA
Launch Gemini video analysis as a background job. Returns in <1s with a job_id.
This is the default for both single-video and multi-video requests.
For multiple videos, fire this tool N times back-to-back (each call
returns in <1s with its own job_id) — the analyses run concurrently
in background threads, so wall-clock time is bounded by the slowest
single video (~3-10 min), NOT N × per-video time. Then poll
analyze_video_result(job_id) for each job_id.
Use analyze_videos_batch_start ONLY when the user explicitly says
"no rush", "overnight", or for scheduled / cron digests where minutes-
to-hours latency is acceptable in exchange for 50% cost savings.
Podcast-length videos take Gemini 3-15 min to analyze, which exceeds typical
MCP host request timeouts (Claude Desktop, Claude Code, OpenClaw all cap
individual tool calls at ~60s). This tool spawns a background thread and
returns immediately; poll analyze_video_result(job_id) to get the
finished analysis.
Does NOT update discovery state. Caller is responsible for calling discover_new_videos (which manages state) beforehand.
Args:
video_url: Full YouTube URL (https://www.youtube.com/watch?v=...)
max_retries: How many Gemini retries on empty/short output (default 3)
prompt: Optional override for the analysis prompt. If None, the
default ships with an investment-podcast persona — set
$VIDEO_ANALYSIS_PROMPT_PATH to change the host-wide default,
or pass prompt here for a one-off override (e.g. "summarize
this technical talk in 5 bullets").
Returns: { job_id, video_url, status: "pending" }
| Name | Required | Description | Default |
|---|---|---|---|
| video_url | Yes | ||
| max_retries | No | ||
| prompt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but the description fully discloses behavior: background job, returns immediately, does not update discovery state, and explains concurrency for multiple videos and timeouts.
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?
Well-structured with sections, but slightly verbose. Could be trimmed while retaining all necessary 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?
Given no output schema and moderate complexity, the description covers behavior, parameters, usage, and next steps (polling). It also explains the rationale for background processing due to timeouts.
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 0%, so the description must explain parameters. It does so thoroughly: video_url as required, max_retries default 3, prompt optional with explanation of default and environment variable override.
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 it launches Gemini video analysis as a background job, returning quickly with a job_id. It distinguishes from siblings like analyze_videos_batch_start and analyze_video_result, making the purpose clear.
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?
Explicitly says to use this for single or multi-video requests as the default, and to use analyze_videos_batch_start only when the user says 'no rush' or for scheduled tasks. Also mentions polling for results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_new_videosA
Discover new videos from YouTube channels since the last time this MCP saw them.
Two modes for selecting channels:
Pass
channel_idsexplicitly (legacy behavior).Omit
channel_idsand the MCP reads from its tracked-channel registry (managed by add_tracked_channel / remove_tracked_channel). Usetagto filter the registry — e.g. tag="macro" returns only channels tagged macro.
State is tracked per channel in a server-managed JSON file. On the FIRST call for a channel, the most recent video is returned (and state is seeded) so the caller has something to analyze without ingesting the entire backlog.
Filters applied:
Livestreams (duration == 0) are skipped
Videos shorter than min_duration_seconds are skipped (default 10 minutes)
Videos older than or equal to the last-seen video are skipped
Args: channel_ids: Optional list of YouTube channel IDs. If omitted, the registry is used. tag: Optional tag filter for registry-based mode (ignored if channel_ids given). max_per_channel: How many recent uploads to inspect per channel (default 5) min_duration_seconds: Minimum video length to include (default 600 = 10min)
Returns: DiscoverResult with new_videos (newest first), skipped, channels_processed, and first_run_channels (channels that had no prior state).
| Name | Required | Description | Default |
|---|---|---|---|
| channel_ids | No | ||
| tag | No | ||
| max_per_channel | No | ||
| min_duration_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, but description fully discloses state tracking, filters (skip livestreams, short videos, old videos), and first-run behavior. No contradictions.
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?
Well-organized with sections for modes, state, filters, args, and returns. Each sentence adds value; no redundancy. Front-loaded with core purpose.
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?
Complex tool with 4 params, state management, filtering, and two modes. Description covers all aspects: inputs, behavior, output fields. Sufficient without output schema.
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 0%, but description explains all 4 parameters: channel_ids, tag, max_per_channel, min_duration_seconds, including defaults and conditional behaviors.
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?
Clearly states the tool discovers new videos from YouTube channels since last seen, with two modes and filtering. Distinguishes from siblings like search_youtube_channels or get_video_info which serve different purposes.
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?
Explicitly explains two modes: explicit channel_ids vs registry-based, and tag filter. Also describes first-call behavior and mentions related tools for registry management.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_channel_metadataA
Fetch full metadata for a known channel_id.
Use after search_youtube_channels to enrich a candidate with subscriber count, description, and recent video titles before presenting to the user.
Args: channel_id: YouTube channel ID (must start with "UC").
Returns: { channel_id, name, handle, description, subscriber_count, channel_url, recent_video_titles }.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries the burden. It implies read-only operation ('fetch') and specifies the channel_id constraint. However, it omits error handling, rate limits, and authentication requirements. Behavior is partially disclosed but lacks depth.
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?
Two short paragraphs: first gives core purpose and usage, second details args/returns. Every sentence is necessary, no fluff. Front-loaded with the key action.
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 single-parameter read tool, it covers purpose, usage context, parameter constraint, and return fields. Lacks error/edge-case details, but given low complexity, it is reasonably 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 0% (no parameter descriptions), so the description's 'channel_id: YouTube channel ID (must start with UC)' adds needed format constraint. But the parameter is simple and essentially named; the addition is helpful but not extensive.
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 'fetch full metadata for a known channel_id' with clear verb and resource. It distinctly positions itself as an enrichment step after search_youtube_channels, differentiating from siblings that search or analyze videos.
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?
It provides explicit usage context: 'Use after search_youtube_channels to enrich a candidate... before presenting to the user.' This guides when to invoke, though it does not explicitly mention when not to use or alternatives beyond the sibling hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stateA
Read-only view of the discovery state file.
Returns the last-seen video_id, published_at, and analyzed_at for each channel that has been processed. Useful for answering "what's the latest video I've seen from channel X?" without re-hitting YouTube.
Args: channel_ids: If provided, return only these channels. Otherwise return all.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses read-only nature, return fields, and the fact that data is cached (avoiding API calls). This covers key behavioral traits.
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?
Two short paragraphs, each sentence earns its place. No fluff, front-loaded with purpose and key details.
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 one optional parameter and no output schema, the description adequately explains input semantics and output content. Could mention potential size of results, but not necessary for this single-param 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 sole parameter channel_ids is clearly explained: if provided, filter to those channels; otherwise return all. Schema only has type info, so description adds essential 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 'read-only view of the discovery state file' and specifies the returned fields (video_id, published_at, analyzed_at). It distinguishes from sibling tools like list_tracked_channels by focusing on state per channel.
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?
Explicitly mentions it is useful for answering 'what's the latest video I've seen from channel X?' without re-hitting YouTube, providing clear context. Does not explicitly mention when not to use, but the purpose is well-scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_infoA
Cheap metadata-only lookup for a single YouTube video (1 YouTube API unit).
Use this to inspect a video's title, duration, channel, and publish date without burning Gemini tokens.
Args: video_url: Full YouTube URL or just the video ID min_duration_seconds: Threshold for the excluded_from_analysis flag (default 600)
| Name | Required | Description | Default |
|---|---|---|---|
| video_url | Yes | ||
| min_duration_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It mentions the tool is 'cheap' (1 API unit) and metadata-only, implying read-only behavior. It does not mention error handling, rate limits, or what happens on failure, but for a simple lookup this is acceptable.
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 with an extra 'Args' section for clarity. No redundant words, every sentence adds value.
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 parameters and lack of output schema, the description covers what the tool returns, how to pass parameters, and the cost implication. It could mention the return format, but the purpose is clear enough.
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 0%, but the description adds meaning beyond the schema: video_url can be a full URL or just the video ID, and min_duration_seconds has a default of 600 and is a threshold for an 'excluded_from_analysis' flag. This helps the agent understand usage.
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 it is a 'cheap metadata-only lookup for a single YouTube video' and lists the specific fields returned (title, duration, channel, publish date). It distinguishes itself from sibling tools that perform analysis or batch operations.
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?
It explicitly tells when to use this tool: to inspect metadata without burning Gemini tokens. It also explains the purpose of min_duration_seconds as a threshold for a flag. However, it does not explicitly mention alternatives or when not to use it, though sibling tools provide context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tracked_channelsA
List all channels currently in the registry. Always call this tool when the user asks "what am I tracking" or similar — never answer from memory or prior conversation context, since the registry can be mutated by other clients between turns.
Args: tag: If provided, return only channels carrying this tag.
Returns:
{ channels: [{channel_id, name, handle, tags, added_at}, ...],
count, tag,
user_facing_message: "Tracking N channels: ..." or "No channels tracked." }
Use user_facing_message verbatim when reporting back.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return format and a key behavioral instruction (use user_facing_message verbatim). Does not explicitly state read-only, but it's implied for a listing tool. No annotations, so description carries the burden well.
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?
Front-loaded with purpose, strong usage guideline, then parameter and return details. Every sentence adds value; no waste.
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?
Despite no output schema, the description outlines the return structure (channels array with fields, count, tag, user_facing_message). Complete for a simple filtered list 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 has 0% coverage, but description explains the tag parameter: 'If provided, return only channels carrying this tag.' Fully compensates for missing schema descriptions.
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?
Clear verb+resource: 'List all channels currently in the registry.' Distinguishes from siblings by referencing the registry and providing a specific use case.
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?
Explicitly states when to call: 'Always call this tool when the user asks "what am I tracking"...' and instructs not to answer from memory, highlighting registry mutability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tracked_channelA
Remove a channel from the registry. You MUST call this tool to remove — claiming "I've removed X" without invoking it leaves the channel still tracked and produces silently wrong state.
No-op (returns removed=false) if the channel_id wasn't tracked. Does NOT clear the per-channel last-seen state, so re-adding later won't re-ingest the backlog.
Args: channel_id: YouTube channel ID.
Returns:
{ removed: true|false,
channel_id,
registry_total: ,
registry_now_contains: [name, name, ...],
user_facing_message: "Removed X. Registry now has N channels: ..." }
Use user_facing_message verbatim when reporting back to the user.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully bears the responsibility. It discloses no-op behavior, persistence of last-seen state, and details of the return value including the 'user_facing_message' field, which is essential for correct agent behavior.
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 well-structured with clear sections for Args and Returns, and the critical usage instruction is front-loaded. It is somewhat verbose but each part adds value, earning a high score.
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?
Despite the tool's simplicity, the description covers all relevant aspects: what the tool does, when it is a no-op, what happens to state, and the exact return format including the 'user_facing_message' for agent usage. No output schema exists, but the description compensates fully.
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 'channel_id' is described as 'YouTube channel ID', adding minimal context beyond the schema's type and title. Since schema description coverage is 0%, the description compensates only slightly; the parameter is straightforward, so a 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 tool removes a channel from the registry, using a specific verb and resource. It distinguishes itself from the sibling tool 'add_tracked_channel' which performs the opposite action.
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 explicitly warns that the tool must be called to avoid silently wrong state, and explains that it is a no-op if the channel was not tracked. It also clarifies that it does not clear last-seen state, guiding appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_youtube_channelA
Resolve a YouTube handle (@name) or channel URL to channel metadata.
Use this when the user gives an exact handle or URL — skips the search step. Returns None / error for video URLs, free-text strings, or channels that can't be loaded.
Args: handle_or_url: e.g. "@ForwardGuidance" or "https://www.youtube.com/@ForwardGuidance" or "https://www.youtube.com/channel/UCxxxxx".
Returns: { channel_id, name, handle, description, subscriber_count, channel_url, recent_video_titles } on success. { "error": "..." } on failure.
| Name | Required | Description | Default |
|---|---|---|---|
| handle_or_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes return value on success and failure, and mentions that it returns None/error for certain inputs. Missing details like rate limits or authentication, but reads well for a simple resolution tool.
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?
Well-structured with bullet points and examples, but slightly verbose. Could trim some repetition (e.g., 'Returns None / error' and then later 'Returns:' block). Still effective and front-loaded.
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?
Tool is simple with one parameter and no output schema, but description covers input constraints, return fields, and error format. Complete enough for an agent to use correctly without additional context.
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?
Despite 0% schema description coverage, the description provides multiple concrete examples and explains the expected format. This fully compensates for the sparse schema, making the parameter semantics crystal clear.
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?
Clearly states it resolves a YouTube handle or channel URL to metadata. Distinguishes from sibling tools like search_youtube_channels by noting it skips the search step. Explicitly lists what inputs it does not handle.
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?
Explicitly says 'Use this when the user gives an exact handle or URL — skips the search step.' Also warns about invalid inputs (video URLs, free-text strings). Provides clear context for when to use versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_youtube_channelsA
Search YouTube for channels matching a free-text query.
Use this when the user names a channel ("Forward Guidance", "All-In podcast") or describes one ("a good macro investing channel") and you need to identify candidate channels before adding to the registry.
No YouTube API key required — uses yt-dlp scraping under the hood.
Args: query: Free-text search term, e.g. "Forward Guidance" or "macro investing". max_results: How many distinct channels to return, ranked by relevance (default 5).
Returns: { "candidates": [ { "channel_id", "name", "channel_url", "hit_count", "confidence_score" }, ... ] } Empty list if nothing matches. Subscriber count + recent videos are NOT populated here — call get_channel_metadata(channel_id) for that.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that no YouTube API key is required, uses yt-dlp scraping, and specifies what data is not populated in the results.
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?
Well-structured, concise paragraphs with Args section; every sentence adds unique value without 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?
Includes return format with field names, empty list case, and references get_channel_metadata for missing data, compensating for lack of output schema.
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?
Adds meaningful context to both parameters: query with example values, max_results with description of ranking and default, despite schema having 0% 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?
Description clearly states 'Search YouTube for channels matching a free-text query' with specific examples of use cases, and distinguishes from sibling tools like get_channel_metadata.
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?
Explicitly says when to use (when user names or describes a channel before adding to registry) and what not to expect (subscriber count, recent videos) with pointer to sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose. The start/result polling pairs for single and batch analysis are well-differentiated by descriptions and usage guidance. Channel management, discovery, metadata lookup, and analysis tools are separate and non-overlapping.
All tools follow a consistent verb_noun snake_case pattern (e.g., add_tracked_channel, analyze_video_start, get_channel_metadata). There are no deviations or mixed conventions, making the tool set predictable.
With 13 tools, the set covers channel management, video discovery, analysis initiation and polling, metadata retrieval, and state inspection. The count feels well-scoped for the server's purpose—not too few, not overly many.
The tool set covers the main workflow: channel search/add, video discovery, analysis (both interactive and batch), and polling results. Minor gaps exist, such as no direct tool for listing past analysis results or deleting jobs, but these are acceptable given the focused domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Personal YouTube AI knowledge base powered by RAG. Query your subscribed YouTube channels.
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents. No signup.
Transcribe YouTube via Whisper. Summaries, chapters, semantic-search across your corpus.
Search YouTube and read video, channel and transcript data as JSON. No Google Cloud project.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables extraction of transcripts, keyword-based video search with metadata retrieval, and channel information discovery from YouTube videos through natural language interaction.34MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to search YouTube videos using the official YouTube Data API v3, extract full video transcripts in multiple languages, and store/retrieve video summaries using a local database.4MIT
- FlicenseBqualityDmaintenanceEnables AI-powered YouTube video analysis including transcript management, video summaries, chapter generation, keyword extraction, and playback control. Supports searching videos, retrieving channel/playlist information, and translating transcripts using Google Gemini AI.14
- AlicenseAqualityCmaintenanceAnalyzes YouTube videos using Google's Gemini API, allowing users to get summaries or ask questions about video content via direct URL input.5272MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kaiding-ucb/podcast-summarizer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server