Skip to main content
Glama

youtube-mcp

OAuth-authenticated YouTube MCP for channel owners. Edit video metadata, reply to and moderate comments, manage playlists, query channel analytics, and generate or set AI thumbnails via a ComfyUI bridge. Goes beyond the read-only Data API v3 wrappers that dominate this space.

youtube-mcp MCP server

GitHub Sponsors Ko-fi

The pitch

Most existing YouTube MCPs use an API key against Data API v3. Search videos, fetch public metadata, read-only. This one uses OAuth 2.0 (Authorization Code + PKCE) so it can actually write to your channel: update video titles, descriptions and tags, reply to comments, moderate spam, manage playlists. It also hits the separate YouTube Analytics API for channel stats, and generates a thumbnail via ComfyUI and pushes it to YouTube in a single MCP call.

Claude, use generate_and_set_thumbnail on video abc123:
  prompt: "cyberpunk hacker at keyboard, neon blue and pink, high contrast"

ComfyUI renders 1280×720, youtube-mcp fetches the bytes, and POSTs to thumbnails.set. Done.

Related MCP server: yt-fetch

Install

# npx, no install
npx @miller-joe/youtube-mcp --help

# Docker
docker run -p 9120:9120 \
  -e YOUTUBE_CLIENT_ID=... \
  -e YOUTUBE_CLIENT_SECRET=... \
  -e YOUTUBE_TOKEN_FILE=/token/token.json \
  -v $PWD/token:/token \
  ghcr.io/miller-joe/youtube-mcp:latest

Setup: Google Cloud one-time (~10 min)

  1. Google account plus YouTube channel. Use a personal account, not a workspace one you might lose.

  2. Google Cloud project at https://console.cloud.google.com. Call it whatever you want (e.g. youtube-mcp).

  3. Enable APIs:

    • YouTube Data API v3

    • YouTube Analytics API

  4. OAuth consent screen: External, App name, support email. In Scopes, add:

    • youtube.upload

    • youtube.force-ssl

    • yt-analytics.readonly

  5. Stay in Testing mode. Add yourself as a test user (required). As the project owner, your refresh token won't expire.

  6. Create OAuth Client ID: Application type = Desktop app. Download the JSON.

  7. Run the interactive auth flow:

    npx @miller-joe/youtube-mcp --auth --client-secret-file ./client_secret.json

    A browser opens, you log in to the Google account tied to your YouTube channel, and grant the requested scopes. On success, a refresh token is saved to ~/.config/youtube-mcp/token.json.

  8. Start the server:

    npx @miller-joe/youtube-mcp --client-secret-file ./client_secret.json

    Or provide the client credentials via env: YOUTUBE_CLIENT_SECRET_FILE, or YOUTUBE_CLIENT_ID + YOUTUBE_CLIENT_SECRET.

Connect an MCP client

claude mcp add --transport http youtube http://localhost:9120/mcp

Or point your MCP gateway at the Streamable HTTP endpoint.

Configuration

CLI flag

Env var

Default

Notes

--client-secret-file

YOUTUBE_CLIENT_SECRET_FILE

(none)

Path to Google OAuth JSON

--client-id

YOUTUBE_CLIENT_ID

(none)

Alternative to the secret file

--client-secret

YOUTUBE_CLIENT_SECRET

(none)

Alternative to the secret file

--token-file

YOUTUBE_TOKEN_FILE

~/.config/youtube-mcp/token.json

Refresh token storage

--host

MCP_HOST

0.0.0.0

Bind host (HTTP mode only)

--port

MCP_PORT

9120

Bind port (HTTP mode only)

--stdio

MCP_TRANSPORT=stdio

(unset)

Speak MCP over stdio instead of HTTP. Use when launched as a subprocess by a stdio-first MCP client (Claude Desktop, mcp-inspector).

--comfyui-url

COMFYUI_URL

(unset, bridge disabled)

ComfyUI HTTP URL for bridge tools

(no flag)

COMFYUI_DEFAULT_CKPT

sd_xl_base_1.0.safetensors

Default checkpoint for bridge tool

Transports

The server speaks streamable HTTP by default (great for Claude Code, MetaMCP, raw fetch). Pass --stdio (or set MCP_TRANSPORT=stdio) to switch into stdio mode, which is what stdio-first clients like Claude Desktop and the MCP Inspector expect:

// claude_desktop_config.json
{
  "mcpServers": {
    "youtube": {
      "command": "npx",
      "args": ["-y", "@miller-joe/youtube-mcp", "--stdio"],
      "env": {
        "YOUTUBE_CLIENT_SECRET_FILE": "/path/to/client_secret.json",
        "YOUTUBE_TOKEN_FILE": "/path/to/token.json"
      }
    }
  }
}

Stdio mode skips the OAuth-token preflight check — the server boots even without a stored token and surfaces auth errors at tool-call time. Run youtube-mcp --auth --client-secret-file <path> once in HTTP mode to seed the refresh token before pointing Claude Desktop at it.

Tools

Videos

  • list_my_videos: paginated list of the authenticated channel's uploads.

  • get_video: full detail for one video.

  • update_video_metadata: title, description, tags, category, privacy.

  • delete_video: permanently delete a video. Requires confirm_video_title to match the current title exactly, as a guard against deleting the wrong video.

Captions

  • list_captions: list caption tracks on a video (language, name, status, draft flag).

  • upload_caption: upload an SRT or WebVTT caption track to a video.

  • delete_caption: delete a caption track.

Shorts

  • list_my_shorts: find Shorts in recent uploads (filters by duration ≤60s).

  • get_shorts_analytics: YouTube Analytics query restricted to Shorts (creatorContentType==SHORTS).

Playlists

  • create_playlist: create a playlist (default private).

  • add_to_playlist: add a video to an existing playlist.

Comments

  • list_comments: top-level comment threads on a video.

  • reply_to_comment: reply to a top-level comment.

  • moderate_comment: hold, approve, or reject a comment.

Analytics

  • query_channel_analytics: date-ranged metrics with optional dimensions and filters.

Bridge (when COMFYUI_URL is configured)

  • generate_and_set_thumbnail: generate a thumbnail via ComfyUI and set it on a video in one call.

Quota notes

YouTube Data API free tier = 10,000 units/day. Key operation costs:

  • videos.list, commentThreads.list: 1 unit each.

  • videos.update, comments.insert, thumbnails.set: 50 units each.

  • videos.insert (upload): 1,600 units, so about 6 uploads per day on the free tier.

Most creator-ops workflows stay well under the free cap.

Architecture

┌────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  MCP client    │────▶│  youtube-mcp     │────▶│  YouTube APIs   │
│  (Claude etc.) │◀────│  (this server)   │◀────│  (Data/Analytics)│
└────────────────┘     └────────┬─────────┘     └─────────────────┘
                                │
                                │ (bridge tools only)
                                ▼
                       ┌──────────────────┐
                       │  ComfyUI         │
                       │  (txt2img)       │
                       └──────────────────┘

OAuth refresh tokens are cached locally and refreshed just-in-time before expiry. The bridge tool downloads image bytes from ComfyUI internally, so ComfyUI does not need to be publicly reachable.

Development

git clone https://github.com/miller-joe/youtube-mcp
cd youtube-mcp
npm install
npm run dev
npm run build
npm test

Requires Node 20+.

Roadmap

Shipped:

  • Videos: list, get, update metadata, delete with title-match confirm guard.

  • Captions: upload, list, delete.

  • Shorts: list_my_shorts (duration filter) and get_shorts_analytics (creatorContentType==SHORTS).

  • Playlists: create, add-to.

  • Comments: list, reply, moderate.

  • Analytics: channel analytics query.

  • ComfyUI thumbnail bridge: generate_and_set_thumbnail.

Planned:

  • Video upload (video_upload) with resumable-upload support.

  • Reporting API for bulk historical data exports.

License

MIT © Joe Miller

Support

If this saves you time, consider supporting development:

GitHub Sponsors Ko-fi

Available Tools

15 tools
add_to_playlistB

Add a video to an existing playlist. Both playlist_id and video_id are YouTube IDs (not URLs).

ParametersJSON Schema
NameRequiredDescriptionDefault
playlist_idYesYouTube playlist ID
video_idYesYouTube video ID to add

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description minimally discloses that IDs are not URLs but does not mention whether adding a duplicate is safe, if the operation is idempotent, or any error conditions. A mutation tool should provide more behavioral context.

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

Conciseness5/5

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

Two sentences, no filler. Front-loaded with the core action and key constraint. Every word earns its place.

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

Completeness2/5

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

Despite simplicity, the description omits important context for a mutation tool: no mention of success/failure indicators, duplicate handling, or permission requirements. Leaves an AI agent underinformed for safe invocation.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds value by clarifying that both parameters are YouTube IDs and not URLs, which disambiguates potential misinterpretation. This is a meaningful addition beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Add a video to an existing playlist') and the resource, distinguishing it from siblings like create_playlist. The clarification that IDs are YouTube IDs (not URLs) further sharpens purpose.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, prerequisites (e.g., playlist existence), or edge cases (e.g., duplicate video). The description is purely operational without directional help.

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

create_playlistB

Create a new playlist on the authenticated channel. Default privacy is 'private'.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
descriptionNo
privacy_statusNoprivate

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Only mentions default privacy but omits other behaviors like authentication, side effects, 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.

Conciseness4/5

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

Two concise sentences with front-loaded purpose. No redundant info, though could include more detail without bloating.

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

Completeness3/5

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

Covers main purpose and key default, but lacks details about return value or success response. Adequate for a simple creation tool.

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

Parameters2/5

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

Input schema has 0% coverage; description hints at privacy_status via default but does not explain title or description parameters. Inadequate for a 3-param tool.

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

Purpose5/5

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

The description clearly states the verb 'create', resource 'playlist', and context 'on authenticated channel'. It also notes the default privacy setting, distinguishing it from siblings like add_to_playlist.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., adding to existing playlist). Lacks when-not or scenario exclusions.

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

delete_captionA

Delete a caption track by ID. Use list_captions to find the track ID first.

ParametersJSON Schema
NameRequiredDescriptionDefault
caption_idYesCaption track ID to delete.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states it deletes a caption track, indicating a destructive operation, but it does not mention authorization, rate limits, error behavior (e.g., if ID does not exist), or whether the deletion is irreversible.

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

Conciseness5/5

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

Two concise sentences with no redundant information. The purpose is front-loaded, and the usage guidance follows naturally. Every word earns its place.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema, no nested objects), the description covers the essential purpose and prerequisite. However, it could be more complete by noting any irreversible nature or confirmation behavior, but overall it is adequate for an agent to use correctly.

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

Parameters3/5

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

The input schema desccription for caption_id is 'Caption track ID to delete.', which already conveys the parameter's purpose. The tool description adds no additional semantics beyond what the schema provides. Since schema description coverage is 100%, baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'delete' and resource 'caption track', clearly stating the action and how to identify the track (by ID). It also distinguishes from siblings by referencing list_captions to find the ID.

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

Usage Guidelines4/5

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

The description explicitly advises using list_captions first to obtain the track ID, providing a necessary prerequisite. It does not elaborate on when not to use the tool, but for a delete operation, this is reasonable.

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

delete_videoA

Permanently delete a video. Requires confirm_video_title to match the video's current title exactly — guards against deleting the wrong video by ID. Deletion is irreversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_idYesVideo ID to delete.
confirm_video_titleYesExact current title of the video. Must match what YouTube returns to proceed — prevents accidental deletion of the wrong video.

TDQS

A4.3/5.0
Behavior4/5

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

Discloses irreversible deletion and the confirmation guard, which is key behavioral context. Without annotations, this provides necessary transparency, though permissions or side effects are omitted.

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

Conciseness5/5

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

Two sentences, front-loaded with core purpose, no wasted words.

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

Completeness5/5

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

Given simple tool with 2 fully-described parameters and no output schema, the description covers all essential aspects: purpose, safety guard, and irreversibility.

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

Parameters4/5

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

Adds meaning beyond schema by explaining why confirm_video_title is needed (prevents accidental deletion) and that deletion is irreversible. Schema descriptions are clear, but description enriches understanding.

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

Purpose5/5

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

Description clearly states 'Permanently delete a video', using specific verb and resource. Distinguishes from siblings like 'delete_caption' which deletes a different resource.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. While the safety guard implies careful usage, alternative tools or conditions are not mentioned.

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

get_shorts_analyticsA

Query YouTube Analytics restricted to Shorts for the authenticated channel. Applies filters=creatorContentType==SHORTS on top of the usual start_date/end_date/metrics/dimensions knobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesYYYY-MM-DD start date (inclusive).
end_dateYesYYYY-MM-DD end date (inclusive).
metricsNoComma-separated YouTube Analytics metrics.views,estimatedMinutesWatched,averageViewDuration,subscribersGained
dimensionsNoOptional dimensions, e.g. 'day' for a time series.
sortNo
max_resultsNo

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions authentication ('for the authenticated channel') and the filter, but does not disclose behavioral traits like pagination, rate limits, or return format.

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

Conciseness4/5

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

Two sentences, front-loaded with main purpose. Efficiently communicates the core functionality without excessive verbosity.

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

Completeness3/5

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

Given no annotations and no output schema, the description provides adequate context for a query tool but lacks details about return values and behavioral aspects that could be expected from sibling tools.

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

Parameters3/5

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

Schema description coverage is 67%, so baseline is 3. The description adds that the tool applies a Shorts filter on top of usual knobs, but does not elaborate on parameters like sort or max_results beyond the schema.

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

Purpose5/5

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

The description clearly states it queries YouTube Analytics restricted to Shorts for the authenticated channel, using a specific filter. It distinguishes itself from sibling tools like query_channel_analytics, which likely covers all content.

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

Usage Guidelines4/5

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

The description implies usage for Shorts analytics by mentioning the filter, and the sibling set includes query_channel_analytics for general analytics. However, it does not explicitly state when not to use or provide alternatives.

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

get_videoA

Fetch full details for one video by ID — snippet, status, statistics, duration.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_idYesYouTube video ID (the part after v= in the URL)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavior. It indicates a read operation by 'Fetch full details', but does not explicitly state it is read-only, idempotent, or what happens on failure (e.g., missing video). The listing of returned fields adds some transparency.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the action and what is returned, with no extraneous words. It is appropriately sized for the tool's simplicity.

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

Completeness4/5

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

Given the simple single-parameter schema and no output schema, the description adequately covers the tool's purpose and output. It could mention error behavior or prerequisites (e.g., video must exist), but overall it provides enough context for this straightforward tool.

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

Parameters4/5

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

With 100% schema description coverage, the baseline is 3. The description adds practical guidance: 'the part after v= in the URL', which helps the agent correctly format the video_id parameter, going beyond the schema's own description.

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

Purpose5/5

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

The description clearly states 'Fetch full details for one video by ID', specifying the resource (video) and action (fetch), and lists the exact details returned (snippet, status, statistics, duration). This distinguishes it from sibling tools like delete_video or update_video_metadata.

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

Usage Guidelines3/5

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

The description implies usage when needing full details for a single video but provides no explicit guidance on when to use this tool versus alternatives (e.g., list_my_videos for multiple videos) or conditions where it should not be used.

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

list_captionsA

List caption tracks on a video with their language, name, status, and whether they are drafts.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_idYesVideo ID to list captions for.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided; description only states what is listed without mentioning behavioral traits like pagination, read-only nature, or rate limits.

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

Conciseness5/5

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

Single sentence that is clear and to the point, with no unnecessary information.

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

Completeness4/5

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

Lists fields returned, which compensates partially for missing output schema; but does not mention output format or pagination.

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

Parameters3/5

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

Schema coverage is 100% and description adds no additional meaning beyond the schema's description of video_id.

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

Purpose5/5

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

Description clearly states it lists caption tracks on a video and specifies fields returned (language, name, status, draft status). Distinguishes from sibling tools like delete_caption and upload_caption.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives, but context of siblings (e.g., delete_caption) implies it is used for viewing before other actions.

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

list_commentsB

List top-level comment threads on a video (newest first). Returns comment IDs, authors, text, and like counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_idYesVideo ID to list comments from
max_resultsNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as authentication requirements, rate limits, or side effects. It only states ordering and return fields, leaving gaps in transparency for an agent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no extraneous information. It efficiently conveys the core purpose and return value.

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

Completeness3/5

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

While the description mentions return fields, it lacks context on pagination, authentication, rate limits, or whether replies are included. For a simple listing tool, it is adequate but has notable gaps.

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

Parameters2/5

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

Schema coverage is 50% (only video_id has a description). The description adds no additional parameter semantics beyond the schema, leaving max_results undefined in meaning and constraints.

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

Purpose5/5

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

The description clearly states the verb ('List'), resource ('top-level comment threads on a video'), ordering ('newest first'), and return fields ('comment IDs, authors, text, and like counts'). It distinguishes from sibling tools like moderate_comment and reply_to_comment.

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

Usage Guidelines3/5

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

The description implies usage for listing comments, but does not provide explicit guidance on when to use this tool versus alternatives (e.g., for replies, nested comments). No conditions or exclusions are mentioned.

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

list_my_shortsA

List your recent Shorts — scans the most recent uploads and filters to videos ≤60s. Useful when the Data API doesn't expose a direct Shorts filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_candidatesNoHow many of the most recent uploads to scan. Shorts are detected by duration ≤ 60s after fetching.

TDQS

A3.6/5.0
Behavior3/5

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

The description explains the scanning and filtering behavior, but does not disclose return format, performance implications, or authentication requirements.

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

Conciseness5/5

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

The description is a single concise sentence with no wasted words, efficiently conveying the tool's function.

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

Completeness2/5

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

The description lacks information about the return value (fields, structure), pagination, or ordering, which is important given no output schema.

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

Parameters3/5

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

The parameter is fully described in the schema; the description adds context about why it scans recent uploads, but adds minimal extra meaning.

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

Purpose5/5

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

The description clearly states the tool lists recent Shorts by scanning uploads and filtering by duration ≤60s, distinguishing it from siblings like list_my_videos.

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

Usage Guidelines3/5

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

The description mentions it is useful when the Data API lacks a direct Shorts filter, but does not specify when not to use it or suggest alternatives.

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

list_my_videosA

List videos on the authenticated channel (newest first via the uploads playlist). Returns video IDs, titles, view counts, and privacy status.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNo
page_tokenNo

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It transparently states the operation is a read-only list ('list videos'), specifies ordering, and lists return fields. It does not mention pagination behavior or rate limits, but for a straightforward list tool, this is adequate and does not mislead.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the main purpose and includes key details (ordering, return fields). Every part earns its place; no unnecessary words.

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

Completeness3/5

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

Given no output schema, the description does explain return values. However, it omits pagination behavior (how to use page_token) and does not differentiate from sibling tools. It is adequate for a simple list but could be more complete with pagination details.

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

Parameters1/5

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

The schema has 2 parameters with 0% description coverage, meaning no parameter descriptions exist in the schema. The description adds no explanation for 'max_results' or 'page_token', failing to compensate for the schema gap. The only info is that the list is paginated (implied by page_token) but not stated explicitly.

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

Purpose5/5

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

The description clearly states the verb 'list', the resource 'videos on the authenticated channel', and specifies ordering ('newest first via the uploads playlist'). It also enumerates the returned fields (IDs, titles, view counts, privacy status). This differentiates it from sibling tools like 'list_my_shorts' (shorts) and 'get_video' (single video).

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

Usage Guidelines3/5

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

The description implies usage for listing own videos but provides no explicit guidance on when to use this tool versus alternatives (e.g., 'list_my_shorts' for shorts or 'get_video' for details). No when-not-to-use or prerequisites are mentioned. The context is implied but not clarified.

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

moderate_commentA

Change the moderation status of a comment: heldForReview (hide pending approval), published (approve), or rejected (delete).

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYes
moderation_statusYesheldForReview hides until approved, published approves, rejected deletes.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the effects of each status (hides, approves, deletes) but does not mention required permissions, reversibility, or side effects. This is adequate but not comprehensive.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the tool's purpose and the three possible statuses. It is front-loaded with the action and resource, with no extraneous words.

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

Completeness4/5

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

For a simple mutation tool with 2 parameters and no output schema, the description covers the core functionality. It explains the purpose, the status options, and their effects. It could mention success/error behavior or authentication needs, but it is fairly complete given the tool's simplicity.

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

Parameters4/5

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

The description adds meaning to the 'moderation_status' parameter by explaining the result of each enum value, which goes beyond the schema's brief enum description. However, it does not clarify 'comment_id', which is a simple identifier and may be self-explanatory.

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

Purpose5/5

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

The description clearly states 'Change the moderation status of a comment' with explicit enumeration of the three possible statuses and their effects. It distinguishes the tool from sibling tools like list_comments or reply_to_comment by focusing solely on moderation actions.

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

Usage Guidelines3/5

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

The description implies usage for moderating a comment but provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The purpose is clear from context, but the description lacks explicit when/when-not instructions.

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

query_channel_analyticsA

Query YouTube Analytics for the authenticated channel. Returns tabular data — useful for views/watch-time/retention/traffic-source reports. Date-ranged and optionally grouped by dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesYYYY-MM-DD (inclusive)
end_dateYesYYYY-MM-DD (inclusive)
metricsNoComma-separated metric names (see YouTube Analytics API). Defaults cover the most common creator-dashboard stats.views,estimatedMinutesWatched,averageViewDuration,subscribersGained
dimensionsNoComma-separated dimensions, e.g. 'day', 'video', 'country'. Omit for channel totals.
filtersNoFilter expression, e.g. 'video==VIDEO_ID' to scope to one video, or 'country==US'.
sortNoSort spec, e.g. '-views' for descending by views
max_resultsNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns tabular data and supports date-range and optional grouping, but does not mention authentication requirements, rate limits, error handling, or pagination behavior. The description provides some transparency but is incomplete.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the primary purpose, and contains no unnecessary words. Every sentence adds value, 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.

Completeness3/5

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

Given the tool has 7 parameters and no output schema, the description is brief. It does not explain the return format beyond 'tabular data', lacks details on error handling or edge cases, and does not cover how to interpret results. This leaves gaps for an agent using the tool in complex scenarios.

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

Parameters3/5

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

Schema description coverage is high (86%), so the schema already documents parameters well. The description adds minimal value beyond the schema, only referencing date-range and optional grouping. It does not provide additional semantic meaning for parameters like 'filters' or 'sort'.

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

Purpose5/5

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

The description clearly states it queries YouTube Analytics for the authenticated channel, specifying it returns tabular data for common metrics like views and watch-time. The verb 'Query' and resource 'YouTube Analytics for the authenticated channel' are specific, and it distinguishes from siblings like 'get_shorts_analytics' by being for general channel analytics.

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

Usage Guidelines3/5

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

The description mentions the tool is useful for certain reports but does not explicitly say when to use it versus alternatives like 'get_shorts_analytics'. There is no guidance on when not to use it or exclusions, leaving the agent to infer usage context.

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

reply_to_commentB

Reply to a top-level comment. Requires youtube.force-ssl scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_idYesComment ID to reply to (top-level comment.id from list_comments)
textYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided; description only notes scope requirement. Does not disclose mutation behavior, idempotency, error responses, or return value.

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

Conciseness5/5

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

Two compact sentences conveying purpose and requirement with no extraneous content.

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

Completeness2/5

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

No output schema and minimal description; missing details on expected return, error handling, or post-conditions for a write operation.

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

Parameters2/5

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

Schema covers parent_id with clear description, but text param lacks description. Tool description adds no parameter information beyond schema, not compensating for the 50% coverage gap.

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

Purpose5/5

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

Clearly states verb 'reply' and resource 'top-level comment', with scope requirement. Distinguishes from sibling tools like list_comments or moderate_comment.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as moderate_comment or add_to_playlist. Only mentions required OAuth scope.

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

update_video_metadataA

Update a video's metadata — title, description, tags, category, or privacy. Only provide fields you want changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_idYes
titleNo
descriptionNo
tagsNo
category_idNoYouTube category ID as a string (e.g. '22' = People & Blogs, '27' = Education, '28' = Science & Tech)
privacy_statusNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It describes the update operation but does not disclose side effects, auth requirements, rate limits, or whether changes are irreversible. The partial update hint is helpful but not exhaustive.

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

Conciseness5/5

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

Two sentences, no redundancy. The purpose is front-loaded, and the partial update instruction is concise.

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

Completeness4/5

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

For a 6-parameter tool with no output schema, the description covers the essential update semantics. It implies that only provided fields are changed, which is critical. Could mention that omitted fields remain unchanged, but it's already clear from 'Only provide fields you want changed.'

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

Parameters4/5

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

Schema coverage is low (17% – only category_id has a description). The description compensates by listing the fields and emphasizing partial updates, adding meaning beyond the schema's property names and types. However, it does not explain formatting for tags or category_id further.

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

Purpose5/5

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

The description clearly states it updates video metadata, listing specific fields (title, description, tags, category, privacy). This distinguishes it from sibling tools like delete_video or get_video.

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

Usage Guidelines4/5

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

The description explicitly says 'Only provide fields you want changed,' indicating a partial update pattern. It does not explicitly state when to use vs. alternatives, but the context is clear.

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

upload_captionA

Upload a caption track (SRT or WebVTT) to a video. Creates a new track — use a distinct name per language/track, or is_draft=true while iterating.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_idYesVideo ID the caption belongs to.
languageYesBCP-47 language code, e.g. 'en', 'en-US', 'es', 'ja'. Must match a language the video supports.
nameNoCaption track name shown in the player's caption menu. Empty string for the default track.
caption_textYesCaption content as a string (SRT or WebVTT format). Source this from a file or the model's output.
formatNoContent type of caption_text: 'srt' (SubRip, application/x-subrip) or 'vtt' (WebVTT, text/vtt).srt
is_draftNoDraft captions aren't visible to viewers. Useful while reviewing auto-translations.

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'creates a new track' implying mutation, but lacks details on idempotency, conflict behavior (e.g., does it overwrite or fail if track with same name+language exists?), authentication needs, or rate limits. This is a significant gap for a creation tool.

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

Conciseness5/5

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

Two clear, front-loaded sentences with no redundant information. The first sentence states the primary purpose, and the second adds practical usage tips. Every word earns its place.

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

Completeness4/5

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

Given the presence of siblings for deletion and listing, the description is fairly complete for a creation tool. It covers formats and draft usage. However, it lacks details on error handling, file size limits, or post-creation behavior, leaving some gaps for a comprehensive understanding.

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

Parameters3/5

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

Schema coverage is 100%, so all parameters have descriptions. The description adds value beyond the schema by providing usage context for `name` and `is_draft`, but for other parameters, it repeats schema info. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it uploads a caption track (SRT or WebVTT) to a video, specifying that it creates a new track. This distinguishes it from siblings like list_captions (listing) and delete_caption (deletion), providing specific verb and resource.

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

Usage Guidelines4/5

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

The description gives actionable guidance: use a distinct `name` per language/track, or `is_draft=true` while iterating. However, it does not explicitly state when not to use it (e.g., for updates, consider deleting first, referencing the sibling delete_caption), so some exclusions are missing.

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

Tool Schema Changelog

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

  1. 15 tool updatesv0.1.0
    • First observedadd_to_playlist
    • First observedcreate_playlist
    • First observeddelete_caption
    • First observeddelete_video
    • First observedget_shorts_analytics
    • First observedget_video
    • First observedlist_captions
    • First observedlist_comments
    • First observedlist_my_shorts
    • First observedlist_my_videos
    • First observedmoderate_comment
    • First observedquery_channel_analytics
    • First observedreply_to_comment
    • First observedupdate_video_metadata
    • First observedupload_caption

TDQS

A3.8/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct resource and action. Analytics tools are clearly differentiated (general vs Shorts-specific), and video list vs Shorts list is scoped by content type. Comments, captions, and playlists each have their own dedicated tools with no overlap.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (list_, get_, create_, update_, delete_, upload_, reply_to_, add_to_, moderate_, query_). There are no mixed conventions or cryptic abbreviations, making the naming predictable and easy to reason about.

Tool Count5/5

15 tools cover a broad YouTube management surface without feeling bloated. The set is well-scoped for the server's purpose—video, playlist, caption, comment, and analytics operations—and each tool has a clear role within that scope.

Completeness3/5

The coverage has significant gaps, especially for playlists: there is no way to list, retrieve, delete, or remove items from playlists, creating dead ends after creation. Caption updates are also absent (only create and delete), although video CRUD and comment moderation are well covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers