youtube-kit
Provides tools for managing YouTube channels, including analytics (totals and breakdowns by day, video, country, device, etc.), video operations (upload, update metadata, set thumbnail, like/dislike, delete), comment moderation (list, reply, approve, hold, reject, ban), playlist management (create, update, add/remove/move items), channel info (about, activity, banners, watermarks, sections), search, and subscriptions.
youtube-kit
YouTube CLI (ytk) and MCP server, built for agents and humans. Let Claude Code, Codex, Cursor, Claude Desktop or ChatGPT work on your channel: analytics, transcripts, uploads, metadata, playlists and comment moderation. It handles several channels, and you can run the same commands in your own terminal.

Quick start
uv tool install youtube-kit
ytk auth login # one-time Google Cloud setup, then pick your channelYou need a Google account with a YouTube channel, and uv (brew install uv on macOS). The first ytk auth login takes about 5 minutes: it opens each Google Cloud page, says what to click and picks up the file you download.
ytk analytics --by video --since 90d --limit 5 # your top videos of the last 90 days
ytk comment list --status held # comments waiting for review
ytk caption transcript VIDEO | jq -r .text # what you say in one of your videos
ytk channel get @mkbhd | jq .stats # any public channel
Or ask your agent: "Which of my videos got the most views this month, and are any comments waiting for review?"
Related MCP server: yt-fetch
Use it from your agent
Skill: Claude Code, Codex, Cursor and other shell agents
A short skill teaches the agent the CLI. It loads only when a YouTube task comes up.
claude plugin install youtube-kit --marketplace eukosh/youtube-kit # Claude Code
codex plugin marketplace add eukosh/youtube-kit # Codex, then:
codex plugin add youtube-kit@youtube-kit
npx skills add eukosh/youtube-kit -g # Cursor and othersThe plugins follow ytk releases. Codex updates them at startup; Claude Code does once you turn on auto-update under /plugin → Marketplaces. With npx skills, run npx skills update.
MCP: Claude Desktop, ChatGPT and other MCP clients
ytk mcp serves the same operations as tools. In Claude Code:
claude mcp add youtube -- uvx youtube-kit mcpIn clients configured with JSON (Claude Desktop, Cursor and others):
{
"mcpServers": {
"youtube": { "command": "uvx", "args": ["youtube-kit", "mcp"] }
}
}In the ChatGPT desktop app: Settings → MCP servers → Add server → STDIO, with the command uvx youtube-kit mcp. Codex shares that setting (codex mcp add youtube -- uvx youtube-kit mcp).
The server uses your ytk auth login logins. If you also installed ytk with uv tool install, uvx runs that installed version: ytk upgrade updates both. Restart the MCP client afterwards. Not set up yet? The model can walk you through it with the setup_guide tool.
What it covers
Area | Operations |
Analytics | totals, or breakdowns by day, month, video, country, device, OS, traffic source and what's behind it (search terms, suggesting videos, sites), playback location, age, gender, subscribed status, content type (long-form, Shorts, live) or sharing service; audience retention of a video; filters by video, content type, country or traffic source |
Impressions | thumbnail impressions and click-through rate, in total, by day or by video |
Videos | get, categories, upload (resumable, with progress), update metadata, set thumbnail, wait for processing, like or dislike, check your rating, delete |
Captions | transcripts of your videos, from your captions or YouTube's automatic ones, optionally machine-translated; list tracks on any video; upload, replace, hide, delete |
Comments | list (published, held for review, likely spam), replies, post, reply, edit, delete, approve, hold, reject, ban the author |
Playlists | list, get, items, create, update, set image, add, remove, move, delete |
Channel | get, recent activity, your logged-in channels, about info (description, keywords, country, language, trailer), banner, watermark, home page sections |
Search | videos, channels and playlists, filtered by channel or date |
Subscriptions | list, subscribe, unsubscribe |
Not covered: localizations, live streaming and channel memberships. ytk --help lists every command, and the skill fits them on one page with jq recipes.
Channels and login
ytk auth login connects one channel. Run it again for each of your other channels, including brand channels: pick the one you want when Google asks.
ytk channel mine # your channels; one is the default
ytk auth switch @second # change the default
ytk video upload clip.mp4 --title Hi --my-channel @third # use another channel for one command
ytk auth logout @thirdCommands work on the default channel unless --my-channel names another, by UC… ID, @handle or exact title. MCP tools take my_channel the same way, so you can say "upload this to my gaming channel". YOUTUBE_CHANNEL sets the default for one shell or one MCP server.
Why your own Google Cloud client. YouTube's daily quota of 10,000 units belongs to a Cloud project. A client shipped inside ytk would split one quota among all its users. Yours is shared by your channels only.
Let an agent set it up. ytk auth guide (setup_guide over MCP) lists what's left, with links and the values to enter. With the gcloud CLI signed in, the agent can create the project and enable the APIs for you. The rest needs your browser. Already have the client JSON? Run ytk auth login --client-secrets FILE.

The guided setup does this:
In the Google Cloud Console, create a project and enable YouTube Data API v3, YouTube Analytics API and YouTube Reporting API (for impressions and click-through rate).
In Google Auth Platform, click Get started (audience External). On Branding, fill in the home page (
https://github.com/eukosh/youtube-kit), the privacy policy link (https://github.com/eukosh/youtube-kit/blob/main/PRIVACY.md) and the authorized domaingithub.com; Google won't publish without them. Then on Audience click Publish app. While the app is in Testing, only listed test users can sign in and Google logs them out after 7 days.Under Clients, create a client of type Desktop app and download its JSON.
ytk auth login --client-secrets path/to/client_secret.json. Google warns that it hasn't verified the app: it's your own, so click Advanced, then Go to ytk (unsafe).
Public data (search, videos, channels, playlists, comments) also works with just an API key: create one in the same project and export YOUTUBE_API_KEY=..., or put it in the MCP server's env. Without a key, ytk reads public data through your login.
ytk remembers each channel's handle from when you logged in. After renaming a channel on YouTube, name it by its UC… ID or run ytk auth login for it again.
Credentials and config.toml live in the user config directory (~/Library/Application Support/youtube-kit/ on macOS, ~/.config/youtube-kit/ on Linux). ytk auth status prints the exact paths. These environment variables override them:
Variable | Purpose |
| API key for public data |
| Path to the OAuth client JSON |
| Directory of stored logins, one file per channel |
| Channel to work on by default (UC… ID, @handle or exact title), overriding |
| Path to |
| Set (even empty): no daily check for a newer release |
Built for agents
JSON out, exit codes for failures. Every command prints one JSON document on stdout. On failure, stdout stays empty, the last line of stderr is
{"error": {"type": "not_found", "message": "..."}}, and the exit code names the type: 2 bad input, 3 not found, 4 not authorized, 5 quota exceeded, 6 forbidden, 7 network, 8 confirmation required, 9 protected, 10 timeout, 1 anything else. The skill tells agents what to do about each. At a terminal you get colored JSON and plain-sentence errors.Forgiving inputs. Pass IDs or pasted YouTube URLs,
@handlesfor channels, and dates or spans like90d.Quota costs up front. Each command's
--helpand each MCP tool description states what it spends.One core. The CLI and the MCP server are thin layers over the same code, and a test fails if either misses an operation.
Guarded deletes. See below.
Update notices.
ytkchecks PyPI once a day in the background and tells you when a newer release is out: after the output at a terminal, as an{"update": ...}stderr line for agents, and in the MCP server's instructions at startup.ytk upgradeinstalls it. Turn the check off withcheck = falseunder[updates]inconfig.tomlorYTK_NO_UPDATE_CHECK=1; it's also off whenCIorNO_UPDATE_NOTIFIERis set.
Deleting
YouTube has no trash, and agents make mistakes. So deleting videos, playlists, comments and caption tracks is guarded:
Two steps. The first call deletes nothing. At a terminal you get a
[y/N]prompt. An agent gets exit 8 with a description of the target and must run the command again with--confirm <id>, so the approval always names the exact thing being deleted.Damage limit. A video with more than 100 views, or one that is public and was uploaded more than 7 days ago, can't be deleted here at all (exit 9). Delete those in YouTube Studio. The limits live in
config.toml(ytk auth statusshows where):[delete_protection] max_views = 100 max_public_age_days = 7Harness approval. Have your agent ask you before every delete. In Claude Code, add this to
.claude/settings.json:{"permissions": {"ask": ["Bash(ytk video delete:*)", "Bash(ytk playlist delete:*)", "Bash(ytk comment delete:*)", "Bash(ytk caption delete:*)"]}}Idempotent. Deleting something that is already gone succeeds with
"already_gone": true.
This stops mistakes, not a determined agent. Anything holding your OAuth token can call the API directly.
Quota
Google gives each Cloud project 10,000 units a day, resetting at midnight Pacific time. Reads cost 1 unit per request, most writes 50, and guarded deletes 52, or 102 for a caption track (they look up the target and check ownership first). search and uploads don't use those units: each gets its own 100 calls a day, one per page of 50 search results or per upload. ytk analytics and ytk impressions use the separate YouTube Analytics and Reporting API quotas.
Contributing
See CONTRIBUTING.md for the development setup and CHANGELOG.md for what changed. Report security issues privately, as SECURITY.md describes.
License
MIT. youtube-kit is not affiliated with or endorsed by Google or YouTube. YouTube is a trademark of Google LLC.
Available Tools
51 toolsadd_sectionAdd SectionA
Add a section to your channel's home page. A channel has at most 10.
Quota: 52 units.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | What the section shows. single-playlist needs one playlist, multiple-playlists several playlists and a title, multiple-channels channels and a title. | |
| title | No | Section title, for the multiple-playlists and multiple-channels kinds. | |
| channels | No | Channels to show: UC… IDs, @handles, or channel URLs. | |
| position | No | 0-based position on the home page. Added at the end when omitted. | |
| playlists | No | Playlist IDs or URLs to show. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| type | Yes | |
| title | No | |
| position | No | |
| channel_ids | No | |
| playlist_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds two useful behavioral facts not in annotations: a per-channel cap of 10 sections and an API quota cost of 52 units. It does not explain what happens when the cap is exceeded, but the added constraints are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short lines with zero filler. It front-loads the core action, then immediately states the section limit and quota cost. Every sentence earns its place.
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?
An output schema exists, so return values need not be explained, and annotations cover the mutation safety profile. The description is nearly complete, providing purpose, a hard cap, and quota cost, though it could note expected error behavior at the 10-section limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents every parameter, including the kind enum, title, channels, position, playlists, and my_channel. The description adds no parameter-level detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (add) and resource (section) plus scope (your channel's home page). It cleanly distinguishes this tool from siblings like update_section, delete_section, and list_sections without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no guidance on when to use this tool versus update_section or delete_section, nor any prerequisites beyond a hard limit. The maximum of 10 sections is a constraint, not usage direction. An agent must infer selection from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_video_to_playlistAdd Video To PlaylistA
Add a video to a playlist on the authorized user's channel.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | Video ID or URL. | |
| playlist | Yes | Playlist ID or URL. | |
| position | No | 0-based position in the playlist. Appends to the end when omitted. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| position | Yes | |
| video_id | Yes | |
| playlist_id | Yes | |
| playlist_item_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is structured. The description adds the quota cost of 50 units, which is real operational context not present in the annotations, though it omits duplicate-handling and auth-scope 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?
Two sentences, zero padding, with the core action front-loaded ahead of the quota note. Every clause carries information an agent can use.
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 an output schema present and annotations covering the mutation safety profile, the description only needs to orient the agent, which it does. The quota hint is a bonus; gaps around duplicate behavior and auth scope are minor for a simple append operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (video, playlist, position, my_channel) are already documented, including that position appends when omitted. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ("Add") and resource ("a video to a playlist") and scopes it to "the authorized user's channel." An agent can distinguish this from remove_from_playlist, move_in_playlist, and create_playlist from the wording alone, though it never names those siblings explicitly.
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?
There is no when-to-use or when-not-to-use guidance, and no alternatives are mentioned despite close siblings like move_in_playlist and remove_from_playlist. The agent must infer the appropriate context entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_commentsApprove CommentsADestructiveIdempotent
Publish comments on your videos that are held for review or marked as likely spam.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| comments | Yes | Comment IDs or links. 50 quota units per 50 comments. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| comment_ids | Yes | |
| authors_banned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety/mutation profile is covered. The description adds the quota cost (50 units), which is genuinely useful behavioral context, but says nothing about permissions, side effects, or how the held-queue state changes.
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 sentences, front-loaded with the action and scope, followed by the quota note. Every sentence earns its place and there is no filler.
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 an output schema present, return values need not be explained, and annotations carry the safety profile. The description covers purpose, scope, and quota, leaving only usage-vs-alternatives as a gap for this moderation action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (comments and my_channel) are already documented in the schema. The description adds no syntax or format detail beyond what the schema provides, making the baseline 3 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?
States a specific verb (publish/approve) and resource (comments) and scopes it to comments 'held for review or marked as likely spam,' which places it in the moderation workflow. It does not name the sibling it is contrasted against (reject_comments/hold_comments), so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the moderation-queue context ('held for review or marked as likely spam') but never states when to choose this over reject_comments or hold_comments, nor any prerequisites. Usage is inferable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_playlistCreate PlaylistA
Create a playlist on the authorized user's channel.
Left out, the language is copied from your most recent public upload, as video uploads do.
Quota: 57 units.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Playlist title. | |
| privacy | No | Privacy status. | private |
| language | No | Language of the title and description, e.g. en-US. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| description | No | Playlist description. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | Yes | |
| privacy | No | |
| language | No | Language of the title and description, e.g. en-US. |
| channel_id | No | |
| item_count | No | |
| description | No | |
| published_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write, open-world, non-idempotent and non-destructive, so the description rightly doesn't restate those. It adds genuinely new context: a concrete quota cost (57 units) and the fallback behavior for the language field when omitted — both are facts an agent cannot get from the structured data.
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 lines, front-loaded with the core action, then default behavior, then quota. The phrasing "Left out, the language is copied from your most recent public upload, as video uploads do" is slightly awkward and takes a second read, but nothing is padded.
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?
An output schema exists, so return values need no explanation, and all parameters are covered by the schema. Combined with annotations covering the safety profile and the description adding quota cost and the language fallback, an agent has what it needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented, which sets the baseline at 3. The description does add one useful nuance — that omitting language inherits the language of the most recent public upload — but it says nothing about privacy defaults, the my_channel selector, or description handling.
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?
States a specific verb and resource ("Create a playlist") plus the target scope ("on the authorized user's channel"). The verb alone separates it from the sibling update_playlist / delete_playlist, though no sibling is named explicitly.
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?
No when-to-use guidance, no prerequisites, no named alternatives. An agent must infer from the name that this is the creation path versus update_playlist, and there is no mention of what is required before calling (e.g. channel authorization state).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_captionDelete CaptionADestructiveIdempotent
Permanently delete a caption track from one of your videos.
Without confirm, nothing is deleted and the error describes the track.
Quota: 102 units.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the track, when the video has several in that language. | |
| video | Yes | Video ID or URL. | |
| confirm | No | The track's ID, passed only after the user has approved deleting this track. | |
| language | Yes | Language of the track, e.g. en or en-US. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | Yes | |
| already_gone | No | Nothing to delete: it didn't exist or was already deleted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint, idempotentHint and openWorldHint, so the safety profile is covered; the description adds the non-obvious dry-run/confirm gate and its failure mode, plus a concrete quota cost (102 units). It adds real behavioral context beyond the annotations without contradicting them.
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 lines, front-loaded with the destructive action and its target, followed by the confirm gate and a single cost figure. No filler and nothing that repeats the schema verbatim.
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 destructive mutation with full annotation coverage and an output schema, the description covers permanence, the confirm gate and quota cost. Only the post-delete state (e.g. whether the track disappears immediately from listings) is left unstated, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema only hints at: what happens when confirm is omitted and that the error payload describes the track, making the confirm parameter's role concrete rather than inferable.
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?
States a specific verb and resource plus scope ('Permanently delete a caption track from one of your videos'), which cleanly separates it from list_captions, upload_caption and update_caption in the sibling set. An agent can identify the operation without opening the schema.
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 documents the mandatory two-step flow: calling without confirm deletes nothing and returns an error describing the track, so the agent knows to preview first and then pass the ID. It does not name alternatives for replacing rather than removing a track (e.g. update_caption), so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_commentDelete CommentADestructiveIdempotent
Permanently delete one of your own comments or replies. Deleting a top-level comment deletes its replies.
Others' comments on your videos can't be deleted, only rejected, which hides them. Without confirm, nothing is deleted and the error describes the comment.
Quota: 52 units.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | Comment ID or link. | |
| confirm | No | The comment ID again, passed only after the user has approved deleting this comment. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | Yes | |
| already_gone | No | Nothing to delete: it didn't exist or was already deleted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds substantive context they don't carry: the cascade behavior (deleting a top-level comment deletes its replies), the two-step confirmation guard and its failure mode, and the 52-unit quota cost. These are precisely the details an agent needs before invoking an irreversible write.
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?
Four short sentences, front-loaded with the destructive action and its scope, then exclusions, then the safety gate, then quota. Every sentence carries distinct operational information with no repetition of the schema.
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?
An output schema exists and annotations cover the safety profile, so the description only needs to supply the irreversible-action semantics — cascade deletion, the confirm gate, quota, and the rejection alternative. All are present, leaving no meaningful gap for a destructive, three-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above baseline by explaining the consequence of the `confirm` parameter rather than just its format — omitting it is a safe no-op that returns an error describing the comment. It does not add anything about `my_channel` or the accepted ID/link formats for `comment`, which the schema already covers.
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?
States a specific verb and resource ('Permanently delete one of your own comments or replies') and immediately bounds the scope to the caller's own comments. The second sentence distinguishes it from the sibling reject_comments, which handles other people's comments on your videos. An agent can differentiate it from edit_comment, list_comments, and reject_comments without opening any schema.
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 names the alternative path: others' comments 'can't be deleted, only rejected, which hides them,' routing the agent to reject_comments. It also states the precondition for the call ('Without confirm, nothing is deleted') and what happens if it is omitted, so an agent knows exactly when this tool is and is not the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_playlistDelete PlaylistADestructiveIdempotent
Permanently delete one of your playlists. The videos in it are not affected.
Without confirm, nothing is deleted and the error describes the playlist.
Quota: 52 units.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | The playlist ID again, passed only after the user has approved deleting this playlist. | |
| playlist | Yes | Playlist ID or URL. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | Yes | |
| already_gone | No | Nothing to delete: it didn't exist or was already deleted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which already flag destructiveHint=true and idempotentHint=true) by spelling out permanence, that contained videos survive, the dry-run behavior when confirm is omitted, and a concrete quota cost of 52 units. This is exactly the operational context annotations cannot carry.
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 paragraphs, front-loaded with the destructive action and its blast radius, then the confirm rule, then quota. No redundant restatement of the name or schema.
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?
An output schema and full annotations exist, and the description still covers the destructive semantics, side-effect scope, confirm gate, and quota. Only minor gaps remain, such as ownership/permission requirements or behavior when the playlist is not yours.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description raises it by explaining the confirm protocol as a safety gate rather than just another field. It does not restate the playlist/my_channel formats, correctly leaving those to 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?
States a specific verb and resource ("Permanently delete one of your playlists") and immediately clarifies collateral scope ("The videos in it are not affected"). It does not explicitly name the nearby alternative remove_from_playlist, which shares the playlist domain, so an agent must infer the distinction from the verb alone.
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 documents the two-step gate: "Without confirm, nothing is deleted and the error describes the playlist," which tells the agent exactly how to preview before committing. It offers no guidance on when to choose this over remove_from_playlist or update_playlist, so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sectionDelete SectionADestructiveIdempotent
Delete a section from your channel's home page. Its playlists and videos are not affected.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| section | Yes | Section ID, as listed for your channel. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | Yes | |
| already_gone | No | Nothing to delete: it didn't exist or was already deleted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds valuable behavior beyond annotations by stating that playlists and videos are unaffected and by disclosing the 50-unit quota cost.
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 only two sentences, front-loads the core action, and includes the key non-effect and quota details without unnecessary filler.
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 rich annotations, 100% schema coverage, and an output schema, the description contains everything an agent needs: the action, scope, non-effects on related content, and quota cost. No critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters—section and my_channel—are fully documented in the input schema. The description does not add meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: deleting a section from the channel's home page. It also clarifies an important scope boundary—playlists and videos are not affected—but does not explicitly differentiate this from sibling tools such as update_section or add_section.
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 says what the tool does but provides no explicit guidance on when to use it versus alternatives like update_section, add_section, or delete_playlist. Usage is only implied by the verb 'delete' and the object 'section'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_videoDelete VideoADestructiveIdempotent
Permanently delete one of your videos.
Only recent, little-watched videos can be deleted here: by default at most 100 views and, if public, uploaded within the last 7 days (the limits are set in the toolkit's config file). Anything else must be deleted in YouTube Studio. Without confirm, nothing is deleted and the error describes the video.
Quota: 52 units.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | Video ID or URL. | |
| confirm | No | The video ID again, passed only after the user has approved deleting this video. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | Yes | |
| already_gone | No | Nothing to delete: it didn't exist or was already deleted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=true, but the description adds what those hints cannot: the exact deletion criteria and that they are configurable in the toolkit's config file, the dry-run behavior ('without confirm, nothing is deleted and the error describes the video'), and the 52-unit quota cost. This is substantive behavioral context beyond structured fields.
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?
Four compact paragraphs, each front-loaded with its most important fact: action, eligibility, safety gate, cost. No sentence is filler and the destructive nature is stated in the first line.
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 an output schema present, return values needn't be described. The description covers permanence, eligibility, the confirm precondition, the fallback path, and quota cost — everything needed to invoke this destructive tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by explaining the consequence of omitting confirm, which turns a simple field into a safety gate. It doesn't elaborate on the video ID/URL formats or channel selection, but those are already fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Permanently delete one of your videos') and immediately bounds the scope of what can be deleted here versus elsewhere. An agent can distinguish it from sibling delete tools (delete_comment, delete_playlist, delete_caption) without opening any schema.
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?
Gives explicit eligibility criteria (max ~100 views; public videos within 7 days), names the alternative for everything else ('must be deleted in YouTube Studio'), and states the confirm precondition. No inference is required to decide whether this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_commentEdit CommentBDestructiveIdempotent
Replace the text of one of your own comments or replies.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The new text. | |
| comment | Yes | Comment ID or link. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| text | Yes | |
| likes | No | |
| author | Yes | |
| status | No | Moderation status, where YouTube reports it. |
| video_id | No | |
| parent_id | No | Replies only: the comment replied to. |
| updated_at | No | |
| reply_count | No | Top-level comments only. |
| published_at | Yes | |
| author_channel_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the write-safety profile is covered. The description adds two genuinely useful traits beyond the annotations: the ownership requirement ('your own comments') and a quota cost of 50 units, which serves as a rate-limit/cost disclosure.
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 sentences, with the core action front-loaded and the quota constraint on its own line. No filler.
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?
An output schema exists, so return values need no explanation, and the annotations carry the safety profile. What an agent needs to invoke it (target comment, new text, ownership restriction, quota cost) is present; only the interaction with sibling comment tools is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains 'text' (new text), 'comment' (ID or link) and 'my_channel' (channel selector). The description only echoes 'text' and does not enrich the comment-ID or channel-selector semantics, which matches the baseline for fully-documented schemas.
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?
States a specific verb and resource ('Replace the text of ... comments or replies') with an ownership constraint ('your own'). It is clearly distinguishable from post_comment, reply_to_comment and delete_comment, though it does not name any sibling explicitly.
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?
There is no guidance on when to use this versus post_comment, reply_to_comment, or delete_comment, nor any prerequisite (e.g. comment must exist and be editable). Usage is only implied by the verb 'replace'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyticsGet AnalyticsARead-onlyIdempotent
YouTube Analytics for your channel: totals, or rows broken down by one dimension.
Data for the last two or three days is incomplete, so recent rows keep growing. Uses the separate YouTube Analytics API and its quota; enable it in the same Google Cloud project.
Quota: no YouTube Data API units.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Break the numbers down by this dimension; its column is named as given here. Omit for totals. By month, the range widens to whole months. By elapsed: the audience retention of exactly one video, a row per 1% of its length (0.01 to 1). By traffic-source-detail, which needs traffic_source: the search terms behind YT_SEARCH, the videos behind RELATED_VIDEO, the sites behind EXT_URL. | |
| sort | No | Metric or dimension to sort by; prefix with - for descending, e.g. -views. Defaults to chronological by day, month or elapsed, and to the first metric, descending, by anything else. | |
| limit | No | Maximum number of rows. Breaking down by video returns at most 200, 25 by default; by traffic-source-detail, at most 25. Other breakdowns return every row by default. | |
| since | No | First day, inclusive: 2026-01-01, or 90d / 4w before until. Defaults to 28 days before until. | |
| until | No | Last day, inclusive: 2026-01-31, or 7d / 1w ago. Defaults to today. | |
| videos | No | Only these videos (IDs or URLs). | |
| country | No | Only viewers in this country, e.g. US. Not by elapsed. | |
| metrics | No | Metric names from https://developers.google.com/youtube/analytics/metrics, e.g. views, estimatedMinutesWatched, subscribersGained. Defaults to views, watch time, average view duration, likes, comments, and subscribers gained and lost. By device, os, traffic-source, playback-location or subscribed, only watch metrics work (views, estimatedMinutesWatched, averageViewDuration, averageViewPercentage), and those are the default. By age or gender, only viewerPercentage works. By elapsed: audienceWatchRatio (share of viewers watching at that point, above 1 with rewatches) and relativeRetentionPerformance (0 to 1, against videos of similar length) by default, or startedWatching and stoppedWatching. By traffic-source-detail: views and estimatedMinutesWatched. By sharing-service: shares. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| content_type | No | Only long-form videos (videoOnDemand), shorts, or live streams (liveStream), as the content-type breakdown names them. Not by elapsed. | |
| traffic_source | No | The source to break down by traffic-source-detail, as the traffic-source breakdown names it, e.g. YT_SEARCH. Only with that breakdown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| since | Yes | |
| until | Yes | |
| columns | Yes | Dimension first (if any), then the metrics, in request order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the description adds real operational context: two-to-three-day data lag, a separate quota pool that consumes no Data API units, and an enablement prerequisite. That is exactly the kind of non-schema behavior an agent needs. It stops short of describing response shape or pagination, but an output schema exists.
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?
Four short, front-loaded lines: purpose first, then the data-lag caveat, then the API/quota note. Each sentence carries distinct information, though the quota sentence is slightly fragmented across two lines.
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 an 11-parameter analytics tool with a full output schema and complete annotation coverage, the description supplies the two things the schema cannot: the separate-API prerequisite and the freshness caveat. Nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter docs are unusually rich (dimension-specific metric constraints, limit caps, relative date formats), so the schema carries the load. The description adds nothing about parameters beyond mentioning 'one dimension' as the breakdown model.
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?
States a specific resource plus its two output shapes (totals vs. one-dimension breakdown), which is more precise than a generic 'get analytics'. It implicitly separates itself from Data API siblings by naming the separate YouTube Analytics API, but never names an actual sibling like get_impressions.
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?
Conveys the prerequisite (Analytics API must be enabled, quota is separate from Data API units) and warns about incomplete recent data, but gives no explicit guidance on when to choose this over get_impressions or list_activities. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_channelGet ChannelARead-onlyIdempotent
Channel metadata, statistics, and uploads playlist ID.
Quota: 1 unit.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | No | UC… channel ID, @handle, or channel URL. Omit for your own channel. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| stats | No | |
| title | Yes | |
| handle | No | |
| country | No | |
| description | Yes | |
| published_at | Yes | |
| uploads_playlist_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior, so the safety profile is covered. The description adds the non-obvious operational fact that a call costs 1 quota unit, which is exactly the kind of cost/rate-limit context that helps an agent budget calls. It stops short of describing pagination or response shape, but an output schema exists to carry that.
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 fragments with zero filler; the return-contents statement is front-loaded and the quota note follows. Nothing could be trimmed without losing 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?
For a zero-required-parameter read tool with full schema coverage, rich annotations, and an output schema, the description supplies what structured fields do not: the contents of the response and the quota cost. Only the absence of any routing guidance against overlapping siblings keeps it from being 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?
Schema description coverage is 100% and both parameters (channel, my_channel) are fully documented in the schema, including the 'Omit for your own channel' default. The description contributes nothing about parameter semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (channel) and enumerates what comes back: metadata, statistics, and the uploads playlist ID. That is specific enough for an agent to know what it retrieves, but it never names the verb or distinguishes itself from neighbors like list_my_channels or update_channel, so sibling differentiation is left to inference.
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?
There is no when-to-use guidance and no mention of alternatives, despite siblings such as list_my_channels (enumerating your channels) and get_analytics (channel metrics) overlapping in scope. The only routing clue is the schema's 'Omit for your own channel' default, which the description does not reinforce.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_impressionsGet ImpressionsAIdempotent
Thumbnail impressions and click-through rate for your channel, which YouTube Analytics doesn't offer.
They come from YouTube's daily bulk reports. The first call asks YouTube to start making them: the first ones arrive within two days and cover the 30 days before. YouTube keeps daily reports for 60 days, those first 30 days for 30. ctr is clicks per impression: 0.05 is 5%. Uses the YouTube Reporting API; enable it in the same Google Cloud project.
Quota: no YouTube Data API units.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Break the numbers down by day or by video. Omit for totals. | |
| limit | No | Maximum number of rows by video, most impressions first. 25 by default. | |
| since | No | First day, inclusive: 2026-01-01, or 90d / 4w before until. Defaults to 28 days before until. | |
| until | No | Last day, inclusive: 2026-01-31, or 7d / 1w ago. Defaults to today. | |
| videos | No | Only these videos (IDs or URLs). | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| rows | Yes | |
| since | Yes | |
| until | Yes | |
| columns | Yes | Dimension first (if any), then the metrics, in request order. |
| missing_days | Yes | Days YouTube has no report for: the last two, and any outside what it keeps. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the non-obvious side effect that the first call initiates report generation, the latency (up to two days), data retention windows, quota behavior (no Data API units), and a required API enablement step. This is exactly the context annotations cannot carry, and readOnlyHint=false is consistent with the described side effect.
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 the data it returns and the Analytics contrast, then the setup caveat. Dense but nearly every clause carries information; the retention sentence ('keeps daily reports for 60 days, those first 30 days for 30') is slightly awkward to parse.
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 setup, first-call latency, date-range bounds, quota, and metric units, and an output schema exists to describe return values. Nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented, but the description adds meaningful constraints beyond the schema: 60-day report retention and the 30-day limit on the initial window directly bound what `since`/`until` can return, and the ctr explanation (0.05 = 5%) clarifies the output unit.
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?
States a concrete resource (thumbnail impressions and click-through rate) and explicitly positions it against the closest sibling, get_analytics, by noting YouTube Analytics doesn't offer this data. An agent can distinguish it from get_analytics without opening either schema.
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?
Explains the key operational context: the first call triggers report generation, results take up to two days, and the YouTube Reporting API must be enabled. It implies selection versus get_analytics but never states an explicit 'use get_analytics instead when you want views/revenue' rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_ratingsGet My RatingsBRead-onlyIdempotent
Whether the authorized user liked or disliked each video.
Quota: 1 unit.
| Name | Required | Description | Default |
|---|---|---|---|
| videos | Yes | Video IDs or URLs. Fetched in batches of 50, 1 quota unit per batch. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuine value with the quota cost ('Quota: 1 unit') and the authorization scoping implied by 'authorized user', but says nothing about pagination or how batched video lookups behave.
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 lines, result semantics front-loaded, quota cost isolated on its own line. Nothing is padded and nothing important is buried.
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 an output schema present, return values need no explanation, and the schema and annotations carry parameters and safety. However, for an agent choosing among many sibling tools the description supplies no routing context (e.g. read ratings vs. set them with rate_video), leaving a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (videos, my_channel) are fully documented in the schema, including batching detail. The description adds no parameter-level information, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and result: the authorized user's like/dislike state for each video. It is clearly a read of ratings, distinguishable from the sibling rate_video (which sets a rating), though it never names that sibling explicitly.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as rate_video or get_videos. The only contextual cue is the quota note, which is cost information rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playlistsGet PlaylistsBRead-onlyIdempotent
Metadata of one or more playlists: title, description, privacy, and item count.
Quota: 1 unit.
| Name | Required | Description | Default |
|---|---|---|---|
| playlists | Yes | Playlist IDs or URLs with a list= parameter. Fetched in batches of 50, 1 quota unit per batch. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds a quota cost ('1 unit'), which is useful behavioral context, though batching/quota details are also present in the schema's parameter description.
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 sentences with the resource and returned fields front-loaded and quota cost placed last. No wasted words, though it could have spent one sentence on sibling differentiation.
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?
An output schema exists, so return values need not be explained, and quota is covered. However, for a read tool sitting beside 'list_playlists' and 'list_playlist_items', the lack of any routing guidance leaves a real completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (playlists, my_channel) are fully documented in the schema including batching and channel selection. The description adds nothing about parameters, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (fetch metadata of one or more playlists) and enumerates the returned fields (title, description, privacy, item count). It is clear what the tool does, but it does not distinguish itself from the sibling 'list_playlists', which an agent could easily confuse it with.
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 offers no when-to-use guidance and no exclusions. Critically, it never explains how this differs from 'list_playlists' or 'list_playlist_items', leaving the agent to guess which retrieval tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_processing_statusGet Processing StatusBRead-onlyIdempotent
Whether YouTube has finished processing one of your uploads.
Quota: 1 unit.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Keep checking every 10 seconds (1 quota unit each) until processing ends, reporting progress when YouTube gives it. If it hasn't ended within timeout, that's a timeout error, so a script can chain the next step on success. | |
| video | Yes | Video ID or URL. | |
| timeout | No | Seconds to wait at most. Callers that can't block for long should wait briefly and check again. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| video_id | Yes | |
| parts_total | No | |
| time_left_ms | No | |
| failure_reason | No | |
| parts_processed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds the quota cost, which is genuinely useful context an agent can't infer, but it omits that a polling call can consume repeated quota units and can end in a timeout error.
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 sentences, zero waste, purpose front-loaded ahead of the quota note. It is efficiently sized, though arguably clipped to the point of under-specification rather than true brevity.
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 a full output schema and 100% parameter coverage, the description needn't restate return values, so the burden is light. Still, it does not mention that this is an optional long-poll tool, and 'Quota: 1 unit' could mislead given that 'wait' spends one unit per 10-second check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents video, wait, timeout and my_channel thoroughly. The description adds no parameter-level meaning at all, leaving the baseline 3 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 names a specific resource and state check: whether YouTube finished processing an upload. An agent can tell what it does, but there is no explicit differentiation from neighboring read tools like get_videos, which can also surface processing state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance and names no alternatives. The polling-vs-single-check decision is only discoverable by reading the schema's 'wait' parameter, not from the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptGet TranscriptARead-onlyIdempotent
What is said in one of your videos, from its captions, including the ones YouTube generates.
YouTube lets only a video's owner download its captions. Of several tracks in a language, one YouTube is serving is preferred over one it failed to process, then a published one you wrote over YouTube's.
Quota: 252 units.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | Video ID or URL. | |
| format | No | text: paragraphs of about 30 seconds, each starting with its [m:ss] time. srt or vtt: the caption file itself. | text |
| language | No | Caption language, e.g. en or en-US. Omit for the language spoken in the video. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| translate_to | No | Machine-translate the captions into this language, e.g. de. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| text | Yes | |
| format | Yes | |
| language | Yes | |
| video_id | Yes | |
| caption_id | Yes | |
| translated_to | No | Language YouTube machine-translated the track into. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description adds ownership/authentication requirements, track-selection behavior, and a concrete quota cost of 252 units. These details materially help an agent predict whether the call will work and what it will cost.
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 short and front-loads the core purpose before adding ownership constraints, track preference, and quota. Every sentence contributes useful context, with no filler.
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 read-only transcript retrieval tool with full schema coverage and an output schema, the description covers the critical behavioral context: ownership restriction, caption track choice, and quota. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents video, format, language, my_channel, and translate_to. The description adds no parameter-level semantics beyond that structured documentation, so the baseline 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 that it returns what is said in one of the user's videos from captions, including YouTube-generated captions. The resource and content are specific, but it does not explicitly distinguish itself from sibling tools such as list_captions.
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 gives an important usage constraint: only a video's owner can download its captions, and it explains track preference. However, it does not explicitly say when to use this instead of list_captions, upload_caption, or update_caption.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_videosGet VideosARead-onlyIdempotent
Full metadata, statistics, and status for one or more videos.
Videos that don't exist or aren't visible to you are left out of the result; if none are found, that's a not-found error.
Quota: 1 unit.
| Name | Required | Description | Default |
|---|---|---|---|
| videos | Yes | Video IDs or URLs. Fetched in batches of 50, 1 quota unit per batch. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real value on top: missing/invisible videos are silently omitted, an all-missing batch yields a not-found error, and the call costs 1 quota unit.
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, front-loaded with the payload description, then edge-case behavior, then cost. Nothing is repeated from the schema and every sentence earns its place.
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?
An output schema exists so return structure needn't be explained, and annotations cover the safety profile. The description fills the remaining gaps (partial-result semantics, not-found behavior, quota) adequately for a read-only lookup tool; only explicit sibling routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, including batching and channel selection, so the description carries little additional param burden. It adds no syntax or format detail beyond the schema; a 3 baseline 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?
States a specific verb+resource ('full metadata, statistics, and status for one or more videos'), which is enough to separate it from get_analytics or list_video_categories. It never names a sibling, so an agent must still infer the boundary, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what comes back but never says when to reach for this tool instead of search, get_analytics, or get_processing_status. No prerequisites or selection criteria are given, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hold_commentsHold CommentsADestructiveIdempotent
Hide comments on your videos until you review them.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| comments | Yes | Comment IDs or links. 50 quota units per 50 comments. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| comment_ids | Yes | |
| authors_banned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=true and readOnly=false, so the safety profile is largely covered. The description adds genuinely new information the annotations cannot convey: a quota cost ('Quota: 50 units') and the fact that the hidden state persists until a review action occurs, which signals reversibility.
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 sentences, front-loaded with the action and followed by the cost constraint; nothing is wasted. Minor redundancy: the quota is stated at the top level and again inside the `comments` schema description, where the ambiguity of 'units' is resolved but the top-level line leaves the denominator unstated.
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?
An output schema exists, so return values need no explanation, and annotations carry the safety profile. What remains thin is the workflow boundary with reject_comments/approve_comments, but for a two-parameter moderation call the description plus structured fields are sufficient to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both `comments` (IDs/links, quota cost) and `my_channel` (channel selector) fully documented in the schema itself. The description adds no field-level semantics beyond the quota statement, so the baseline 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?
States a concrete verb+resource+scope: 'Hide comments on your videos.' The phrase 'until you review them' hints at the moderation lifecycle, but the description never names the sibling actions that complete the workflow (approve_comments, reject_comments), so the agent must infer the distinction between holding and permanently rejecting.
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?
'until you review them' implies a moderation workflow context, so usage is implied rather than stated. There is no explicit when-to-use, no when-not-to-use, and no routing to approve_comments/reject_comments as the follow-up or alternative actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_activitiesList ActivitiesBRead-onlyIdempotent
A channel's recent activity feed (uploads, playlist additions, and the like).
Quota: 1 unit per page of up to 50 results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of activities. | |
| since | No | Only activity at or after this date or datetime (2026-01-01), or this long ago (90d, 4w). | |
| channel | No | UC… channel ID, @handle, or channel URL. Omit for your own channel. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| page_token | No | Continue from a previous result's next_page_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total_results | No | Total reported by YouTube; only an estimate for search. |
| next_page_token | No | Pass as page_token to continue; null at the end. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds genuinely useful non-schema context – the quota cost of 1 unit per page of up to 50 results – but says nothing about what 'recent' means in time terms or any auth requirements, so it adds value without being rich.
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 sentences, zero filler. The purpose is front-loaded and the quota cost follows as a separate, self-contained fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with a full output schema (so return values need not be described) and 100% schema coverage, the description covers purpose and cost adequately. The only real gap is routing guidance versus siblings, which is not required for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (limit, since, channel, my_channel, page_token) are already documented in the schema, including formats and defaults. The description adds no parameter-level meaning beyond that, making the baseline 3 correct.
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?
States a specific resource ('a channel's recent activity feed') and parenthetically enumerates its contents (uploads, playlist additions), so an agent can distinguish it from list_comments or list_playlists. It is phrased as a noun rather than a verb+resource, and it never explicitly contrasts itself with the closest siblings (get_videos, search), so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance: it does not say when this feed is preferable to get_videos, list_playlists, or search, nor does it state prerequisites (auth, channel ownership). Usage is only implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_captionsList CaptionsARead-onlyIdempotent
A video's caption tracks: language, name, and whether YouTube generated them from the audio.
Works on any public video, though only the owner can download a transcript.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | Video ID or URL. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds real context beyond that: quota cost (50 units) and the ownership constraint on transcript download. It doesn't mention ordering or rate-limiting beyond quota, keeping it just short of a 5.
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: what is returned, the access scope, and the quota cost, with no filler. The informational content is front-loaded before the quota note.
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?
An output schema exists, so return values needn't be re-explained, and annotations cover the safety profile. The description covers access scope and quota, leaving only minor gaps like track ordering or whether an empty result is possible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with 'video' documented as 'Video ID or URL' and 'my_channel' fully explained, so the baseline is 3. The description adds no syntax or format guidance beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The definition names the resource (a video's caption tracks) and enumerates the returned fields (language, name, auto-generated flag), so an agent knows exactly what this call produces. It distinguishes itself implicitly from transcript download in the sibling list, but doesn't call out upload_caption/update_caption/delete_caption by name.
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 establishes scope ('works on any public video') and a permission nuance (only the owner can download a transcript), which implies you use this to enumerate tracks before fetching a transcript. There is no explicit when-to-use/when-not or named alternative such as get_transcript, so the routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commentsList CommentsARead-onlyIdempotent
Top-level comments on a video, or on all of your channel's videos.
Quota: 1 unit per page of up to 50 results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of comments. | |
| order | No | Newest first, or most relevant first. | time |
| video | No | Video ID or URL. Omit for every video on your channel. | |
| search | No | Only comments containing these words. | |
| status | No | Moderation status to list; spam is what YouTube flagged as likely spam. Anything but published is only visible on your own videos. YouTube can't list rejected comments. | published |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| page_token | No | Continue from a previous result's next_page_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total_results | No | Total reported by YouTube; only an estimate for search. |
| next_page_token | No | Pass as page_token to continue; null at the end. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description earns credit for adding genuine behavioral context the annotations lack: the quota cost (1 unit per page) and the 50-result page cap. It stops short of noting permission or auth requirements.
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 sentences, zero filler, with the scope statement front-loaded and the quota note second. Nothing could be removed without losing 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?
An output schema exists, so return values and next_page_token handling need not be explained here; quota and page size are covered. The remaining gap is that the interplay among all-optional parameters (video vs. my_channel vs. status) is left entirely to the 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 description coverage is 100%, so every parameter (video, status, order, search, page_token, my_channel, limit) is already documented in the schema. The description adds no syntax or default details beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (comments) and pins the scope: top-level comments only, either on one video or across the channel's videos. The 'top-level' qualifier implicitly separates it from the sibling list_replies without needing the schema.
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?
Usage is only implied via the scope statement; there is no explicit when-to-use or when-not guidance. It never routes the agent to list_replies for threaded replies or to the approve/hold/reject siblings for moderation, even though both are close neighbors in the tool set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_channelsList My ChannelsARead-onlyIdempotent
Channels the user is logged in to, and which one is the default.
Operations on the user's own channel work on the default unless told to use another. Reads stored logins only; makes no API calls.
Quota: no YouTube Data API units.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds real value beyond them: it reads stored local logins only, makes no API calls, and consumes no quota units — facts an agent cannot infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information: what is returned, how the default is used downstream, and the side-effect/quota profile. It is front-loaded with the core answer and contains no filler.
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 zero parameters and an output schema present, the description does not need to explain return values and correctly does not. It covers side effects and quota, leaving only minor gaps such as ordering or multi-account edge cases, which the output schema likely handles.
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 tool takes zero parameters, so the baseline is 4 and there is no parameter semantics for the description to compensate for. Nothing is missing on this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (the channels the user is logged into) and adds a distinguishing fact its siblings don't have: which one is the default. The verb is implied by the name/title rather than stated, and it does not explicitly contrast itself with get_channel, but an agent can tell what it returns without opening the schema.
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 explains what the default channel means for subsequent operations ('operations on the user's own channel work on the default unless told to use another'), which is useful cross-tool context. However, it never says when to call this tool versus alternatives such as get_channel, nor does it name any sibling, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_playlist_itemsList Playlist ItemsARead-onlyIdempotent
Videos in a playlist, in playlist order.
To list everything a channel has uploaded, pass the channel's uploads_playlist_id.
Quota: 1 unit per page of up to 50 results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of entries. | |
| playlist | Yes | Playlist ID or a URL with a list= parameter. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| page_token | No | Continue from a previous result's next_page_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total_results | No | Total reported by YouTube; only an estimate for search. |
| next_page_token | No | Pass as page_token to continue; null at the end. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open world). The description adds two traits the annotations cannot express: playlist ordering of results and the quota cost of 1 unit per page of up to 50 results, which is genuinely useful for cost planning. Auth/permission requirements are still unstated.
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 lines, each earning its place: what it returns, the key special-case usage, and the quota cost. The most important operational fact (quota) is present without preamble or repetition.
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 an output schema present, return values need no explanation, and the description covers ordering, pagination page size, quota, and the uploads_playlist_id trick. It omits any note on access constraints (private vs. public playlists, ownership) and on how limit interacts with page_token.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema by revealing that uploads_playlist_id is a valid value for the 'playlist' parameter and by disclosing the 50-per-page page size relevant to page_token/limit. It does not clarify limit vs. page_token interaction.
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 opening line names the resource and its ordering ('Videos in a playlist, in playlist order'), which distinguishes it from list_playlists/get_playlists that return playlist containers rather than their contents. It is a noun phrase rather than an explicit verb, and it never names a sibling, so it stops short of a 5.
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 gives a concrete usage recipe: pass the channel's uploads_playlist_id to enumerate everything a channel uploaded. That is real when-to-use context. It does not state exclusions or point to alternatives (e.g. get_videos or search for cross-playlist lookups), so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_playlistsList PlaylistsCRead-onlyIdempotent
A channel's playlists.
Quota: 1 unit per page of up to 50 results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of playlists. | |
| channel | No | UC… channel ID, @handle, or channel URL. Omit for your own channel, including private playlists. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| page_token | No | Continue from a previous result's next_page_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total_results | No | Total reported by YouTube; only an estimate for search. |
| next_page_token | No | Pass as page_token to continue; null at the end. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds genuinely new behavioral context: the quota cost is '1 unit per page of up to 50 results', which tells the agent about pagination granularity and cost before calling.
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 very short sentences, front-loaded with the resource scope and followed by the cost note; there is no filler and nothing to trim. It is efficient, though efficiency here partly reflects under-specification rather than tight writing.
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?
An output schema exists, so return values need not be explained, and the quota note is useful. However, for a tool sitting among get_playlists, list_playlist_items, and create/update/delete_playlist siblings, the description supplies no disambiguation, no ownership/private-playlist nuance beyond what the schema already states, and no indication of result scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, channel, my_channel, page_token) are already documented in the schema, including defaults and formats. The description adds nothing parameter-specific beyond an implied page size, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a bare noun phrase, 'A channel's playlists,' which essentially restates the tool name 'list_playlists' without a verb or stated action. It adds only a scope hint ('a channel's') and does nothing to distinguish this from siblings like get_playlists or list_playlist_items.
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?
No when-to-use guidance is given, and no alternatives are named. The presence of both list_playlists and get_playlists in the sibling set makes the absence of routing guidance a real gap, leaving the agent to infer selection from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_repliesList RepliesCRead-onlyIdempotent
Replies to a top-level comment.
Quota: 1 unit per page of up to 50 results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of replies. | |
| comment | Yes | Comment ID or link. A reply's ID or link lists its whole thread. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| page_token | No | Continue from a previous result's next_page_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total_results | No | Total reported by YouTube; only an estimate for search. |
| next_page_token | No | Pass as page_token to continue; null at the end. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered. The description does add the quota cost (1 unit per page of up to 50 results), which is genuinely useful and not in the structured fields. It stops there, offering no pagination or ordering context.
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?
Only two short fragments with zero padding, and the quota note is useful. However, the leading line lacks a clear action verb, so the front-loaded content is not the tool's actual behavior.
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?
An output schema exists so return values need not be described, and annotations plus a fully documented schema cover the mechanics. What remains missing is the core statement of what the tool returns (a paginated list of replies) and how it differs from list_comments, leaving the definition only minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of the four parameters (limit, comment, my_channel, page_token) documented, so the schema carries the semantics. The description adds no parameter meaning beyond that, which is the expected baseline when the schema does the heavy lifting.
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 phrase "Replies to a top-level comment" reads as a noun clause describing what a reply is, not a verb+resource statement of what the tool does. The tool name implies listing, but the description never uses a listing verb and gives no scope (top-level comment arg is the only hint). It also fails to distinguish itself from the sibling list_comments.
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?
There is no when-to-use guidance and no mention of alternatives such as list_comments for top-level comments or reply_to_comment for writing. The agent must infer that this is the read counterpart to reply_to_comment purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sectionsList SectionsBRead-onlyIdempotent
The sections on a channel's home page.
Quota: 1 unit.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | No | UC… channel ID, @handle, or channel URL. Omit for your own channel. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description's one added fact is the quota cost ('1 unit'), which is genuinely useful operational context not in the annotations. It says nothing further about auth requirements, scope of returned sections, or pagination, so with the lower bar set by annotations this lands at 3.
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?
It is short, front-loaded, and free of filler, and the quota note is clearly separated. However the lead sentence is a noun fragment rather than a complete statement of the action, so brevity here reads as under-specification rather than disciplined concision.
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?
Placeholder.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (channel, my_channel) are fully documented in the schema, including the 'omit for your own channel' defaults. The description adds no syntax or format detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The fragment 'The sections on a channel's home page' identifies the resource and scopes it (home-page sections rather than playlist sections), which is more than the name alone conveys. But it supplies no verb at all, so the agent must infer that this is a retrieval tool, and it never distinguishes itself from the add_section/update_section/delete_section siblings. Vague-but-identifiable purpose.
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?
No when-to-use statement, no prerequisites, and no mention of any alternative. The only guidance-like content is 'Quota: 1 unit', which is a cost note, not usage direction. Nothing tells the agent why it would call this instead of get_channel or get_playlists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subscriptionsList SubscriptionsARead-onlyIdempotent
Channels the authorized user is subscribed to.
Quota: 1 unit per page of up to 50 results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of subscriptions. | |
| order | No | Alphabetical, by relevance, or by activity (unread first). | alphabetical |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| page_token | No | Continue from a previous result's next_page_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total_results | No | Total reported by YouTube; only an estimate for search. |
| next_page_token | No | Pass as page_token to continue; null at the end. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context: the quota cost model (1 unit per page of up to 50 results), which is essential for an agent budgeting API calls and explains why results are paginated in 50-item pages despite a limit maximum of 500. It does not describe pagination termination or the shape of the response, which keeps it from a 5.
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 sentences, no filler, with the core purpose front-loaded and the quota note isolated as a second sentence. Every sentence earns its place and nothing is redundant with the title or schema.
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?
An output schema exists, so return-value documentation is correctly omitted, and the quota/paging note supplies the key operational fact the structured fields lack. For a simple zero-required-parameter read tool this is close to sufficient; only an explicit hint about using page_token to continue past the 50-result page boundary is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all four parameters (limit, order, my_channel, page_token) are documented in the schema, including defaults, enum values, and paging semantics, so the description need not repeat them. It adds only the implicit page-size unit (50 per page), which is tangential to parameter meaning. Baseline 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 identifies the resource precisely (channels the authorized user is subscribed to), which lets an agent separate it from read-only list siblings like list_playlists and from the mutation siblings subscribe/unsubscribe. It is a noun fragment rather than a verb phrase, but the name and title already supply the 'list' verb, so the pairing is unambiguous. It does not explicitly differentiate itself from other 'list' siblings, keeping it below a 5.
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?
There is no statement of when to use this tool, when not to, or what alternative exists. An agent must infer from the name alone that this reads the authorized user's own subscriptions rather than another channel's subscribers. No prerequisites or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_video_categoriesList Video CategoriesARead-onlyIdempotent
Video categories that can be assigned to uploads in a region, with the IDs to pass as category_id.
Quota: 1 unit.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ISO 3166-1 alpha-2 country code. | US |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered structurally. The description adds genuinely new operational context — the API quota cost of 1 unit — which an agent needs for budgeting calls and cannot infer from annotations. It doesn't cover rate limits or caching, but the quota disclosure is real added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose and the practical output, followed by the quota note. Nothing is redundant and nothing could be cut without losing 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?
An output schema exists, so return shape needn't be described, and the description covers purpose, the key output (category IDs), and quota cost. The only gap is any hint about ordering or whether the list is exhaustive per region, which is minor for a simple enumeration 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 description coverage is 100%, with both region (ISO 3166-1 alpha-2) and my_channel (UC ID, @handle, or title) fully documented in the schema. The description only echoes the region concept and adds no format or default details beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (video categories), the scope (assignable to uploads in a region), and the payoff (IDs to pass as category_id). An agent immediately understands what it gets back and why. It does not need sibling differentiation since no sibling lists categories, but it also doesn't explicitly state the 'list' verb or contrast with anything.
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?
Usage is implied rather than stated: the mention of 'IDs to pass as category_id' signals this feeds a later upload call, and 'in a region' hints at the region parameter's role. There is no explicit when-to-use, no prerequisites, and no exclusions, so it lands at implied guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_in_playlistMove In PlaylistADestructiveIdempotent
Move a video to another position in one of your playlists.
Quota: 51 units.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | Video ID or URL. Refused if the video appears in the playlist more than once. | |
| playlist | Yes | Playlist ID or URL. | |
| position | Yes | New 0-based position. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| position | Yes | |
| video_id | Yes | |
| playlist_id | Yes | |
| playlist_item_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full profile (mutation, idempotent, destructive, open-world), so the bar is lower. The description adds genuine operational context with the quota cost of 51 units, but says nothing about the reordering side effects or the duplicate-video refusal behavior that the annotations don't cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the operation is front-loaded and the quota note is a compact, useful addendum. Nothing is padded or restated.
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 an output schema present and annotations covering the safety profile, the description needn't explain return values. It is nearly complete for the call itself, though a brief note that reordering shifts surrounding items would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the duplicate-refusal note on 'video' and the 0-based indexing on 'position', so the schema carries the full parameter burden. The description adds no syntax or format detail beyond what the schema already provides, making baseline 3 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?
States a specific verb ('move') and resource ('video ... in one of your playlists') plus the modifier 'to another position', which precisely distinguishes it from siblings like add_video_to_playlist and remove_from_playlist. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no alternatives, and no prerequisites. It doesn't say to use add_video_to_playlist for insertion or explain the reorder-vs-add distinction; the only cue is the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_commentPost CommentB
Post a top-level comment on a video as the authorized user.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The comment. | |
| video | Yes | Video ID or URL. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| text | Yes | |
| likes | No | |
| author | Yes | |
| status | No | Moderation status, where YouTube reports it. |
| video_id | No | |
| parent_id | No | Replies only: the comment replied to. |
| updated_at | No | |
| reply_count | No | Top-level comments only. |
| published_at | Yes | |
| author_channel_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true), so the agent knows this is a non-idempotent write. The description adds real value with the '50 units' quota cost and the fact that the action is attributed to the authorized user. It does not say what happens on duplicate posts or failure, which is the main remaining gap.
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 lines: the action first, the quota second. No filler, no restatement of the title, and the one non-obvious fact (cost) is isolated so it is easy to scan.
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 an output schema present, return values need not be explained, and the full-coverage schema covers parameters. What an agent needs to invoke correctly is present; only the when-versus-reply_to_comment routing is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (text, video, my_channel) documented in the schema itself, so the baseline is 3. The description adds no format or constraint detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Post a ... comment on a video') and the 'top-level' qualifier implicitly separates it from reply_to_comment in the sibling list. It stops short of naming the sibling alternative, so the differentiation is inferable rather than explicit.
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?
There is no guidance on when to use this versus reply_to_comment or edit_comment, and no stated prerequisites beyond 'as the authorized user'. The only extra context is the quota, which is a cost note rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rate_videoRate VideoAIdempotent
Like or dislike a video as the authorized user, or clear the rating with none.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | Video ID or URL. | |
| rating | Yes | like, dislike, or none. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rating | Yes | |
| video_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true), so safety is covered. The description adds genuinely new context beyond the schema: an explicit quota cost ("50 units") and that the action is performed as the authorized user, both of which affect how an agent should budget and target the call.
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 sentences, front-loaded with the core action and followed by the quota constraint. No filler, hedging, or restated title text; every phrase earns its place.
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?
The tool is a simple three-parameter mutation, an output schema exists so return values need no explanation, and annotations cover the safety profile. Action, quota, and actor context are all present; only the absence of sibling routing (e.g., pointing to get_my_ratings for reads) leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented, which sets the baseline at 3. The description only restates the rating enum values, adding minor value by clarifying that "none" clears an existing rating rather than applying a neutral one.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (rate: like/dislike/clear) against a specific resource (a video) and clarifies the three rating outcomes, so an agent immediately knows the effect. It does not name or differentiate itself from any sibling such as get_my_ratings (the read counterpart), which keeps it just short of a 5.
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?
"as the authorized user" implies this operates on the caller's own account, and the rating values enumerate the intended actions, giving implied usage context. However, there is no explicit when-to-use/when-not guidance and no routing to alternatives like get_my_ratings for reading existing ratings, so it stays at the minimum-viable level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_commentsReject CommentsADestructiveIdempotent
Reject comments on your videos, hiding them from viewers. They can still be approved later.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| comments | Yes | Comment IDs or links. 50 quota units per 50 comments. | |
| ban_author | No | Also reject all future comments on your channel by each comment's author. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| comment_ids | Yes | |
| authors_banned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write, destructive, idempotent, and open-world hints. The description adds the concrete effect (hiding from viewers), reversibility, and a quota note, which goes beyond the structured annotations. The quota is also stated in the schema, and there is a minor inconsistency (description says '50 units', schema says '50 quota units per 50 comments'), but the added behavioral context is still valuable.
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 sentences, front-loaded with purpose and effect, with no wasted words. The quota note is short and necessary.
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 3-parameter mutation tool with full annotations and an output schema, the description covers what the tool does, its reversibility, and its cost. It does not explain return values (not needed due to output schema) but is otherwise complete; minor gaps like permission requirements are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add parameter-specific details beyond what the schema already provides (the quota note is repeated in the schema).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Reject) and resource (comments on your videos), and the phrase 'can still be approved later' differentiates it from permanent deletion tools like delete_comment. However, it does not explicitly name alternatives such as hold_comments or approve_comments, so it falls short of a 5.
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?
Implies usage by noting that rejected comments can be approved later, suggesting use when you want to hide but retain the option to restore. Yet there is no explicit when-to-use/when-not guidance or named alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_playlistRemove From PlaylistADestructiveIdempotent
Remove a video from one of your playlists, every time it appears. The video itself is not affected.
YouTube can't look up entries of a deleted video, so for a deleted or unknown video the whole playlist is read: 1 more unit per 50 entries.
Quota: 51 units.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | Video ID or URL. | |
| playlist | Yes | Playlist ID or URL. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| removed | Yes | How many occurrences were removed; 0 if the video wasn't in the playlist. |
| video_id | Yes | |
| playlist_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true), the description precisely scopes what is destroyed: entries, not the video. It also discloses quota cost (51 units) and the edge-case behavior and extra cost when the video is deleted/unknown, which the agent cannot get from annotations or 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?
Front-loaded with the action and its scope in the first sentence, then a clarification, then quota facts in a compact numbered form. Every sentence carries information an agent needs; nothing is wasted.
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?
An output schema exists, so return values need not be explained. The description covers the mutation scope, edge-case behavior for deleted videos, and quota costs, which is everything an agent needs to call this correctly and predictably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are documented in the schema itself, including the my_channel fallback to the default channel. The description adds no parameter-level syntax or constraints beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (remove a video from a playlist) and adds the key scope qualifier 'every time it appears,' which distinguishes it from add_video_to_playlist, move_in_playlist, and delete_video. The explicit 'video itself is not affected' prevents confusion with delete_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the operating context clear (playlist-entry removal, all occurrences, video unaffected), which implicitly separates it from playlist-mutating siblings. It does not explicitly name alternatives such as move_in_playlist or delete_playlist, so usage is clear but not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_watermarkRemove WatermarkADestructiveIdempotent
Remove the watermark from your videos. Succeeds when there is none.
Quota: 51 units.
| Name | Required | Description | Default |
|---|---|---|---|
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| active | Yes | |
| corner | No | |
| from_end | No | |
| channel_id | Yes | |
| start_seconds | No | |
| duration_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds real operational context beyond that: the quota cost of 51 units and confirmation of idempotent behavior ('succeeds when there is none'), which an agent needs for cost-aware planning.
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 sentences plus a quota line, with the action front-loaded and no filler. The 'Succeeds when there is none' fragment is slightly terse but earns its place by signaling idempotency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with rich annotations and an output schema, the description supplies everything an agent needs: purpose, idempotency, and quota cost. Return-value details are correctly delegated to the 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?
Only one parameter (my_channel) and schema description coverage is 100%, so the schema fully documents it. The description adds nothing about the channel selector, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove the watermark from your videos'), and is unambiguously distinct from the sibling set_watermark. An agent knows exactly what operation this performs without opening the schema.
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?
Usage is implied by the name and the note that it succeeds when no watermark exists, but there is no explicit 'use this when...' guidance or routing to set_watermark as the inverse operation. The cue about succeeding when none exists is helpful context but not full when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_commentReply To CommentB
Reply to a top-level comment as the authorized user.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The reply. | |
| comment | Yes | Comment ID or link. Replying to a reply adds to the same thread. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| text | Yes | |
| likes | No | |
| author | Yes | |
| status | No | Moderation status, where YouTube reports it. |
| video_id | No | |
| parent_id | No | Replies only: the comment replied to. |
| updated_at | No | |
| reply_count | No | Top-level comments only. |
| published_at | Yes | |
| author_channel_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description's one genuine addition beyond structured data is the quota cost ('50 units'), which is useful. It omits any warning that non-idempotent retries can post duplicate replies, and doesn't clarify what 'authorized user' requires.
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 sentences, zero filler, with the core action front-loaded and the quota note clearly separated. Nothing is padded.
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?
An output schema exists, so return values need no explanation, and the schema fully documents parameters. Still, for a non-idempotent mutation with openWorldHint=true, the description says nothing about permission requirements, threading side effects, or what the quota unit represents, leaving meaningful gaps for an agent deciding whether to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are documented in the schema, including channel selection and the thread behavior of the comment ID. The description adds nothing beyond that baseline and slightly muddies it by saying 'top-level comment' while the schema allows replying to a reply.
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?
States a specific verb and resource ('Reply to a top-level comment') plus the acting identity ('as the authorized user'), so the operation is unambiguous. It does not, however, distinguish itself from nearby siblings like post_comment, edit_comment, or list_replies, leaving the agent to infer the boundary.
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?
There is no explicit when-to-use statement, no comparison to post_comment (which presumably starts a new thread), and no stated preconditions such as owning the comment or having reply permission. The agent must infer the use case from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearchARead-onlyIdempotent
Search YouTube for videos, channels, or playlists.
Quota: 1 of the project's 100 daily search calls per page of up to 50 results.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | What to search for. | video |
| limit | No | Maximum number of results. | |
| order | No | Sort order. | relevance |
| query | Yes | Search terms. | |
| since | No | Only results published at or after this date or datetime (2026-01-01), or this long ago (90d, 4w). | |
| channel | No | Only results from this channel: UC… ID, @handle, or channel URL. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| page_token | No | Continue from a previous result's next_page_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total_results | No | Total reported by YouTube; only an estimate for search. |
| next_page_token | No | Pass as page_token to continue; null at the end. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds useful quota and pagination context: one of the project's 100 daily search calls per page of up to 50 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?
The definition is two sentences with no wasted text. Purpose is front-loaded and the quota constraint follows immediately.
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 an output schema, full parameter descriptions, and annotations, the description covers the essential operational caveat around quota and page size. It is complete enough for invocation, though it could say more about when search is preferable to sibling retrieval tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all eight parameters, including enums and defaults. The description adds no parameter-specific semantics beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: search YouTube for videos, channels, or playlists. It is clearly distinct from mutation-oriented siblings, but it does not explicitly differentiate itself from retrieval siblings like get_videos, get_channel, or list_playlists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use search versus alternatives such as get_videos or list_playlists. It describes what the tool does, but not the conditions or exclusions for selecting it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_channel_bannerSet Channel BannerADestructiveIdempotent
Upload and set your channel's banner. Use a 16:9 image of at least 2048x1152, at most 6 MB.
Quota: 101 units.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Path to a JPEG or PNG. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | No | |
| country | No | |
| keywords | No | |
| language | No | |
| banner_url | No | |
| channel_id | Yes | |
| description | No | |
| trailer_video_id | No | Shown to visitors who aren't subscribed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write, destructive, idempotent, and open-world profile, so the description does not need to restate them. It adds the 101-unit quota, a useful operational cost, but omits permission requirements, what happens to an existing banner, and other behavioral details beyond quota and image constraints.
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 sentences with zero filler. The purpose is front-loaded, followed by necessary input requirements and quota in a compact structure.
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 an output schema, full schema descriptions, and annotations covering safety, the description supplies the key missing input constraints and quota. It could mention replacement behavior or channel-selection alternatives, but those gaps are minor for a simple banner-setting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds meaningful constraints for the image parameter—16:9 aspect ratio, minimum 2048x1152, maximum 6 MB—that go beyond the schema's 'Path to a JPEG or PNG.' It does not add anything for my_channel, but the schema covers that fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Upload and set your channel's banner.' This clearly separates it from sibling mutators such as set_watermark and set_thumbnail, which operate on different channel assets.
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?
No when-to-use guidance or alternatives are provided. The description focuses on image requirements and quota, not on when to choose this over set_watermark, update_channel, or other banner-related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_playlist_thumbnailSet Playlist ThumbnailADestructiveIdempotent
Set the custom thumbnail of one of your playlists, replacing any current one.
Quota: 101 units.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Path to a square JPEG or PNG, at most 50 MB. | |
| playlist | Yes | Playlist ID or URL. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| width | No | |
| height | No | |
| image_id | Yes | |
| playlist_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveness, idempotency, and open-world behavior, but the description adds useful context by stating that the current thumbnail is replaced and disclosing a quota cost of 101 units. It does not describe authentication requirements or error behavior, but that is less critical given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with the core action front-loaded and the quota cost separated cleanly. Every sentence adds useful information without repetition.
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 an output schema and rich annotations present, the description supplies the key missing behavioral details: replacement of the existing thumbnail and quota cost. It is largely complete for a destructive mutation tool, though it could more explicitly route the agent away from related thumbnail tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the playlist, image path, and channel selector. The description does not add parameter-level meaning beyond what the structured schema provides, making the baseline score 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 states a specific verb and resource: setting a custom thumbnail for a playlist, and explicitly notes it replaces the current thumbnail. This clearly distinguishes it from siblings like set_thumbnail and set_channel_banner by naming the playlist resource.
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 gives clear context that this applies to one of the user's playlists and replaces an existing thumbnail, which is enough to infer when to use it. It does not explicitly name alternatives or exclusions, so it falls short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_thumbnailSet ThumbnailADestructiveIdempotent
Set a video's custom thumbnail. The channel must be verified.
Quota: 50 units.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Path to a JPEG or PNG, at most 50 MB. | |
| video | Yes | Video ID or URL. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| video_id | Yes | |
| thumbnail_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring destructiveHint=true and idempotentHint=true, the bar is lower, and the description still adds two substantive facts: a verification prerequisite (an auth/setup requirement not in any structured field) and a 'Quota: 50 units' cost disclosure. It doesn't cover whether an existing thumbnail is replaced or error behavior, so not a 5.
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 sentences: the action first, then prerequisite and quota on separate lines. Every clause carries information and nothing is buried.
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?
A rich output schema exists and annotations cover the mutation/idempotency profile, so the description needn't explain return values. Prerequisite and quota are supplied; only the overwrite/error semantics are left implicit, which is a minor gap for a 3-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?
Schema description coverage is 100% — the image format/size limit, video ID-or-URL, and channel selection are all documented in the schema. The description adds no parameter meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: setting a video's custom thumbnail. The resource ('video's') implicitly separates it from siblings like set_playlist_thumbnail and set_channel_banner, but the description never explicitly names those alternatives.
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 one real prerequisite — 'The channel must be verified' — which is actionable context an agent needs before calling. However, there is no guidance on when to use this over the sibling thumbnail/banner tools, nor on what happens to an existing thumbnail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_guideSetup GuideARead-onlyIdempotent
What is left before the user's channel can be used: a one-time Google Cloud setup, then a Google sign-in.
The steps happen in the user's browser, so walk them through one step at a time. Once ready, running the sign-in again connects another channel.
Quota: no YouTube Data API units.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Google Cloud project ID, once known. The links then open with that project selected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ready | Yes | At least one channel is logged in. |
| steps | Yes | What is left to do, in order. Empty when ready. |
| channels | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, but the description adds genuine context beyond them: the steps execute in the user's browser, they must be presented one at a time, and re-running sign-in connects an additional channel. The 'Quota: no YouTube Data API units' note is useful operational detail for an agent managing API budget.
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, front-loaded with the state the tool reports, and each sentence carries distinct information (purpose, interaction mode, follow-on behavior, quota). No filler.
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?
An output schema exists so return values need not be explained, and annotations already carry the safety profile. For a read-only onboarding/status tool with one fully documented optional parameter, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single optional 'project' parameter, so the schema fully documents its meaning and default. The description adds no syntax or format detail for it, which is the correct baseline when the schema does the work.
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 what the tool surfaces: what remains before the channel is usable (a one-time Google Cloud setup followed by a Google sign-in). The verb is somewhat implicit — it reads as a state report rather than naming the action — but the resource and content are clear and no sibling tool overlaps with setup/onboarding.
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 gives interaction guidance ('walk them through one step at a time') and hints at the follow-on case ('running the sign-in again connects another channel'), which implies when to use it. However, it never states explicitly when to invoke this versus other tools or what condition triggers it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_watermarkSet WatermarkADestructiveIdempotent
Set the watermark shown over all your videos, replacing any current one. Viewers click it to subscribe.
Quota: 51 units.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Path to a square JPEG or PNG, at least 150x150, at most 1 MB. | |
| start | No | Seconds from the start of the video when it appears, or from its end when counting from the end. | |
| corner | No | Where it appears. | bottom-right |
| duration | No | Seconds to show it. Until the end of the video when omitted. | |
| from_end | No | Count start back from the end of the video. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| active | Yes | |
| corner | No | |
| from_end | No | |
| channel_id | Yes | |
| start_seconds | No | |
| duration_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the destructive overwrite is partly covered structurally; the description reinforces it with 'replacing any current one' and adds genuinely new context: viewers click the watermark to subscribe, and the quota cost of 51 units.
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 sentences, front-loaded with the core action and effect, with the quota note cleanly separated. No wasted text, though it is quite terse given the six parameters involved.
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?
An output schema exists and annotations carry the safety profile, so the description need not explain returns. It covers purpose, overwrite behavior, and quota cost, leaving little an agent needs missing before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (image constraints, start, corner, duration, from_end, my_channel) are already fully documented in the schema. The description adds no parameter-level meaning, which is the expected baseline of 3 when the schema does the heavy lifting.
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?
States a specific verb+resource and adds scope: the watermark applies to ALL videos, and setting it replaces any current one. This implicitly separates it from remove_watermark, but the sibling is not named explicitly, so it falls short of a 5.
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 phrase 'replacing any current one' implies the use case (overwrite an existing watermark), but there is no explicit when-to-use guidance or reference to the alternative tool (remove_watermark). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribeSubscribeAIdempotent
Subscribe the authorized user to a channel. Already being subscribed is fine.
Quota: 51 units.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | UC… channel ID, @handle, or channel URL. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | No | |
| channel_id | Yes | |
| description | No | |
| subscribed_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds value beyond them by confirming idempotency in plain language and disclosing a quota cost of 51 units, which is useful operational context.
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 front-loaded, consisting of two short sentences plus a quota line. Every element earns its place: the core action, the idempotency reassurance, and the cost 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?
For a simple two-parameter mutation with rich annotations and an output schema, the description is nearly complete: it covers the action, idempotency, and quota. The only notable omission is explicit usage guidance relative to sibling tools, which keeps it from full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'channel' and 'my_channel' in detail. The description adds no parameter-specific meaning beyond what the schema provides, making the baseline score of 3 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 states a specific verb and resource: 'Subscribe the authorized user to a channel.' This clearly distinguishes the tool from the sibling 'unsubscribe' and from read-oriented tools like 'list_subscriptions' without needing to name them.
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?
There is no explicit guidance on when to use this tool versus alternatives such as 'unsubscribe' or 'list_subscriptions.' The statement 'Already being subscribed is fine' is behavioral context, not usage guidance, and no exclusions or preconditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unsubscribeUnsubscribeADestructiveIdempotent
Unsubscribe the authorized user from a channel. Not being subscribed is fine.
Quota: 51 units.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | UC… channel ID, @handle, or channel URL. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| channel_id | Yes | |
| was_subscribed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true; the description reinforces idempotency with 'Not being subscribed is fine' and adds genuinely new operational context: a quota cost of 51 units. It does not state auth/scope requirements or what happens to subscription history, keeping it below a 5.
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 sentences plus a quota line, with the action front-loaded and no filler. Every element carries information an agent needs.
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?
An output schema exists, so return values need not be described, and both parameters are schema-documented; the quota note rounds out the picture. What remains missing is authorization scope requirements and confirmation of what state changes on the channel, which for a destructive operation would be worth stating.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so 'channel' and 'my_channel' are fully documented in the schema itself. The description adds no syntax, format, or defaulting nuance beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Unsubscribe') and resource ('the authorized user from a channel'), which is unambiguous and inherently distinguished from the sibling 'subscribe'. It stops short of explicitly naming a sibling or scoping the effect, but an agent cannot confuse it with anything else in the list.
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 single-purpose nature makes usage obvious, and 'Not being subscribed is fine' signals it is safe to call even when unnecessary. However, there is no explicit statement of when to prefer this over managing subscriptions another way, nor prerequisites such as required scopes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_captionUpdate CaptionADestructiveIdempotent
Replace the file of a caption track on one of your videos, or show or hide the track.
Quota: 502 units.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Path to the new caption file, at most 100 MB. | |
| name | No | Name of the track, when the video has several in that language. | |
| draft | No | Whether the track is hidden from viewers. | |
| video | Yes | Video ID or URL. | |
| language | Yes | Language of the track, e.g. en or en-US. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | Yes | asr: made by YouTube's speech recognition. forced: shown when no track is chosen. |
| name | No | |
| draft | No | Not shown to viewers yet. |
| status | No | serving, syncing, or failed. |
| language | Yes | |
| video_id | Yes | |
| updated_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds a genuinely new trait, the quota cost of 502 units, which is not in any structured field. It also makes explicit that the tool has two distinct effects (file replacement vs. visibility toggle), though it does not say whether a replace is reversible or what happens to an existing track's name/draft state.
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 sentences: the operation and its two modes are front-loaded, and the quota note follows. Nothing is wasted and nothing is buried.
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?
Output schema and full parameter descriptions exist, and the description covers both operational modes plus cost, which is sufficient for correct invocation. It could state that at least one of file/draft must be supplied, but the remaining gap 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 100%, so every parameter including the 100 MB file limit and the my_channel targeting is already documented in the schema. The description's 'show or hide the track' loosely maps to the draft flag but adds no format or syntax detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Replace the file of a caption track') and adds the second mode ('show or hide the track'), which distinguishes it from upload_caption, delete_caption and list_captions. It stops short of naming those siblings, so an agent must infer that this operates on an existing track rather than creating one.
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?
Usage is only implied: 'replace the file' suggests an existing track, and the show/hide clause hints at the draft flag, but there is no explicit when-to-use versus upload_caption (add a new track) or delete_caption. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_channelUpdate ChannelADestructiveIdempotent
Change your channel's about info. Only the fields you pass change. The name can only be changed in Studio.
Quota: 51 units.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ISO 3166-1 alpha-2 country code. | |
| trailer | No | Video (ID or URL) shown to visitors who aren't subscribed. | |
| keywords | No | Channel keywords, replacing the current ones. An empty list removes them all. | |
| language | No | Language of the channel's title and description, e.g. en or de. If the channel has none, YouTube may pick one on any change; pass it to choose. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| description | No | Channel description. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | No | |
| country | No | |
| keywords | No | |
| language | No | |
| banner_url | No | |
| channel_id | Yes | |
| description | No | |
| trailer_video_id | No | Shown to visitors who aren't subscribed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds genuine context the annotations lack: a quota cost ('51 units') and confirmation that this is a partial-update operation. It does not explain what destruction means concretely (e.g. that keywords replace the existing set), which the schema carries instead.
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, front-loaded with the primary purpose, then the patch rule, then the exclusion. Every sentence carries distinct information; the quota note is set off and easy to scan.
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?
An output schema exists, so return values need not be described, and the schema fully documents all six optional parameters. Combined with annotations covering safety and the description covering quota and patch behavior, an agent has what it needs. The only gap is concrete disclosure of replacement semantics, which the schema partially covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all six parameters carry individual documentation, so the baseline is 3. The description's 'only the fields you pass change' adds a useful cross-parameter rule, but it adds no syntax or format detail 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?
States a specific verb and resource: 'Change your channel's about info.' It also carves out a hard scope limit ('The name can only be changed in Studio'), which separates it from sibling tools that manage other channel assets. It is clear, though it never explicitly names the sibling it complements (e.g. set_channel_banner, set_watermark).
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?
'Only the fields you pass change' establishes patch semantics, telling the agent that omitting a field is safe rather than destructive. The note that the name must be changed in Studio is an explicit when-not pointer to another surface. No guidance is offered on when to prefer this over the banner/watermark siblings, but the routing hints are useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_playlistUpdate PlaylistBDestructiveIdempotent
Change one of your playlists. Only the fields you pass change.
Quota: 51 units.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title. | |
| privacy | No | New privacy status. | |
| language | No | Language of the title and description, e.g. en-US. | |
| playlist | Yes | Playlist ID or URL. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| description | No | New description. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | Yes | |
| privacy | No | |
| language | No | Language of the title and description, e.g. en-US. |
| channel_id | No | |
| item_count | No | |
| description | No | |
| published_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true and readOnlyHint=false, so the safety profile is largely covered. The description adds two useful non-schema facts: partial-update semantics ('Only the fields you pass change') and a 51-unit quota cost. However it never explains the destruction the annotation warns about (overwriting title/description, or a privacy flip to public) or any permission requirement, so it stays at baseline-plus.
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 sentences, zero filler, with the core action and the partial-update guarantee front-loaded before the quota note. Every sentence earns its place.
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?
Output schema exists, so return values need not be explained, and annotations carry the safety profile. Still missing for a 6-param destructive mutation: ownership/auth expectations, the effect of each optional field being omitted, and consequences of changing privacy, so the description is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (title, privacy, language, playlist, my_channel, description) are already documented in the schema. The description adds no syntax, format, or constraint detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Change one of your playlists'), which is enough for an agent to know it mutates an existing playlist. It lacks any differentiation from siblings such as create_playlist, delete_playlist, or update_video, and 'change' is looser than 'update', so it does not reach 5.
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?
There is no when-to-use, when-not-to-use, or alternative-tool guidance at all. The only context given is the partial-update rule and a quota cost, neither of which tells an agent when this tool is the right choice over create_playlist or list_playlists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_sectionUpdate SectionADestructiveIdempotent
Change a section on your channel's home page. Only the fields you pass change.
Quota: 51 units.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title. | |
| section | Yes | Section ID, as listed for your channel. | |
| channels | No | Channels to show instead of the current ones (UC… IDs, @handles, or URLs). | |
| position | No | New 0-based position on the home page. | |
| playlists | No | Playlists to show instead of the current ones (IDs or URLs). | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| type | Yes | |
| title | No | |
| position | No | |
| channel_ids | No | |
| playlist_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds genuinely new context: PATCH-style partial-merge semantics ('Only the fields you pass change') and a concrete quota cost of 51 units, which the agent cannot get from structured fields.
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 sentences, front-loaded with the core action and immediately followed by the one non-obvious semantic rule plus the quota cost. No filler.
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?
An output schema exists, so return values need not be explained, and annotations plus the schema carry most of the load. Still, for a destructive mutation tool the description omits permission requirements and what 'change' does to fields not passed when replacing lists, leaving a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (section, title, channels, position, playlists, my_channel) are already documented in the schema, including accepted ID/handle/URL formats. The description adds no per-parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change a section on your channel's home page'), which cleanly separates it from sibling mutations add_section and delete_section. It does not explicitly name those siblings, so an agent must infer the boundary from the verb alone.
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?
No when-to-use guidance is given. The description never says to prefer add_section for creation or delete_section for removal, nor does it state any prerequisite such as the section already existing or the required auth scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_videoUpdate VideoADestructiveIdempotent
Change a video's metadata. Only the fields you pass change; the rest keep their values.
Quota: 51 units.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | New tags, replacing the current ones. An empty list removes all tags. YouTube may store them in a different order. | |
| title | No | New title. | |
| video | Yes | Video ID or URL. | |
| privacy | No | New privacy status. Making a scheduled video public or unlisted cancels the schedule. | |
| language | No | Language of the title and description, e.g. en-US. | |
| ai_content | No | Whether AI made realistic content: a real person saying or doing something they didn't, altered footage of a real event or place, a realistic scene that didn't happen, or music that's the video's focus. Not for scripts, captions, or obviously unreal content. Left out, the current answer stays. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| publish_at | No | Schedule publication at this date or datetime. The video must end up private. | |
| category_id | No | New category ID (see the video categories listing). | |
| description | No | New description. | |
| made_for_kids | No | Whether the video is made for kids (COPPA). | |
| audio_language | No | Language spoken in the video, e.g. en-US. | |
| paid_promotion | No | Whether the video includes paid promotion: a sponsorship, product placement, or endorsement. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| tags | No | In the order YouTube stores them, which may differ from yours. |
| stats | No | |
| title | No | |
| privacy | No | |
| duration | No | |
| language | No | Language of the title and description, e.g. en-US. |
| ai_content | No | Declared to contain realistic AI-made content, as set by this upload or update. YouTube doesn't report it when reading a video. |
| channel_id | No | |
| publish_at | No | |
| studio_url | No | Edit page in YouTube Studio; only for videos on channels you're logged in to. |
| category_id | No | |
| description | No | |
| published_at | No | |
| channel_title | No | |
| upload_status | No | uploaded, processed, failed, rejected, or deleted. |
| audio_language | No | Language spoken in the video, e.g. en-US. |
| paid_promotion | No | Declared to include paid promotion. |
| duration_seconds | No | |
| rejection_reason | No | Why YouTube rejected the video, e.g. copyright, duplicate, length, termsOfService. YouTube reports no reason for a video kept private because its API project isn't verified. |
| upload_failure_reason | No | Why a failed upload failed, e.g. codec, conversion, emptyFile, invalidFile, tooSmall. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine context beyond that: partial-update semantics and a quota cost of 51 units. It stops short of disclosing the practical consequences of the destructive hint (e.g., unpublishing a public video, cancelling a scheduled publish) or any ownership/permission requirements, which the schema only hints at for the schedule case.
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 sentences and a quota line, all front-loaded with the core behavior first. Nothing is redundant or padded, and the partial-update rule is stated before the quota note.
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?
An output schema exists, so return values need no explanation, and the schema thoroughly documents all 13 parameters. For a 13-parameter destructive mutation on an open-world system, though, the description omits prerequisites (must own the video), what happens on invalid combinations (e.g., publish_at with a non-private outcome), and what error surfaces look like. Adequate but thin for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 13 parameters, with per-field detail including enum-ish values, nullability and side effects, so the schema carries the burden. The description's "only the fields you pass change" adds cross-parameter semantics the schema can't express, but nothing else about individual parameters is contributed. Baseline 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?
"Change a video's metadata" gives a specific verb and resource, which cleanly separates it from update_channel, update_playlist, upload_video and delete_video in the sibling list. It does not explicitly name an alternative, but the resource scope leaves little ambiguity. Slight imprecision: privacy and publish_at are more than "metadata," so the stated scope under-describes the tool.
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?
"Only the fields you pass change; the rest keep their values" is real guidance on how to call it (partial update semantics) and usefully implies you don't need to resend everything. However, there is no when-to-use vs. when-not guidance: no mention that thumbnails go to set_thumbnail, playlist placement to move_in_playlist, or that deletion is delete_video. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_captionUpload CaptionB
Add a caption track to one of your videos from a caption file, such as SRT or VTT.
Quota: 400 units.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Path to the caption file, at most 100 MB. | |
| name | No | Track name viewers see next to the language. Two tracks in one language need different names. | |
| draft | No | Upload it hidden from viewers. | |
| video | Yes | Video ID or URL. | |
| language | Yes | Language of the captions, e.g. en or en-US. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | Yes | asr: made by YouTube's speech recognition. forced: shown when no track is chosen. |
| name | No | |
| draft | No | Not shown to viewers yet. |
| status | No | serving, syncing, or failed. |
| language | Yes | |
| video_id | Yes | |
| updated_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false and openWorld=true, so the safety profile is covered. The description adds genuinely useful context in the quota cost (400 units) and the 100 MB/file format constraint, but omits behavioral questions the annotations don't answer, e.g. what happens if a track already exists for that language.
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 lines: the operation first, the quota cost second. No redundancy with the title and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need not be explained, and the schema fully documents the six parameters. Annotations carry the mutation profile. The only real gap is the absence of any statement about duplicate/language-collision behavior or required permissions when adding a track.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (file, name, draft, video, language, my_channel) is already documented in the schema. The description adds only the SRT/VTT hint for the file format; it says nothing about the draft or name parameters that the schema does not already cover. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a caption track to one of your videos') plus the accepted source formats (SRT/VTT), so the operation is unmistakable. It does not contrast itself with the sibling update_caption or list_captions, so the agent gets no explicit disambiguation.
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?
No when-to-use or when-not-to-use guidance and no mention of the closest sibling, update_caption, which an agent could easily confuse with this tool. The description only implies the context (you have a caption file for a video) without stating it or naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_videoUpload VideoA
Upload a video file from disk (resumable, reports progress).
Category and languages left out are copied from your most recent public upload (among your last 150), so the video matches the rest of your channel; with none, the category is 22 (People & Blogs). YouTube keeps processing the video after this returns, and its duration and statistics appear only once that ends. Checking whether processing has finished tells you when, or why it failed.
Quota: 1 of the project's 100 daily upload calls, plus up to 7 units.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Path to the local video file. | |
| tags | No | Keyword tags. YouTube may store them in a different order. | |
| title | Yes | Video title. | |
| privacy | No | Privacy status. Must be private when publish_at is set. | private |
| language | No | Language of the title and description, e.g. en-US. | |
| ai_content | No | Whether AI made realistic content: a real person saying or doing something they didn't, altered footage of a real event or place, a realistic scene that didn't happen, or music that's the video's focus. Not for scripts, captions, or obviously unreal content. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| publish_at | No | Schedule publication at this date or datetime; YouTube makes the video public then. | |
| category_id | No | Category ID (see the video categories listing). | |
| description | No | Video description. | |
| made_for_kids | No | Whether the video is made for kids (COPPA). | |
| audio_language | No | Language spoken in the video, e.g. en-US. | |
| paid_promotion | No | Whether the video includes paid promotion: a sponsorship, product placement, or endorsement. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| tags | No | In the order YouTube stores them, which may differ from yours. |
| stats | No | |
| title | No | |
| privacy | No | |
| duration | No | |
| language | No | Language of the title and description, e.g. en-US. |
| ai_content | No | Declared to contain realistic AI-made content, as set by this upload or update. YouTube doesn't report it when reading a video. |
| channel_id | No | |
| publish_at | No | |
| studio_url | No | Edit page in YouTube Studio; only for videos on channels you're logged in to. |
| category_id | No | |
| description | No | |
| published_at | No | |
| channel_title | No | |
| upload_status | No | uploaded, processed, failed, rejected, or deleted. |
| audio_language | No | Language spoken in the video, e.g. en-US. |
| paid_promotion | No | Declared to include paid promotion. |
| duration_seconds | No | |
| rejection_reason | No | Why YouTube rejected the video, e.g. copyright, duplicate, length, termsOfService. YouTube reports no reason for a video kept private because its API project isn't verified. |
| upload_failure_reason | No | Why a failed upload failed, e.g. codec, conversion, emptyFile, invalidFile, tooSmall. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: uploads are resumable and report progress, category/language default inheritance with the 'none → 22' fallback, the call returns before YouTube finishes processing, and the hard quota cost (1 of 100 daily upload calls, plus up to 7 units). The async-after-return caveat is exactly the kind of trait an agent cannot infer from destructiveHint/idempotentHint alone.
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-loads the core action and its two traits in the first sentence, then spends the remaining sentences on default inheritance, async completion, and quota — every sentence supplies non-redundant information. No filler or restatement of the tool title.
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 13-parameter mutation tool with an output schema present, the description covers the gaps that matter: defaulting behavior, asynchronous processing, failure diagnosis path, and quota cost. Return-value detail is correctly left to the 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 100%, so parameters are already documented; the description goes further by explaining the semantic default behavior for the nullable category_id and language fields, which the schema does not state. It does not add meaning for the remaining booleans (ai_content, paid_promotion) since those already carry rich schema text.
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?
States a specific verb and resource ('Upload a video file from disk') plus distinguishing traits (resumable, reports progress), which separates it from update_video and set_thumbnail in the sibling list. An agent can identify this as the create-a-video operation without opening the schema.
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?
Gives clear context for when defaults apply (category/languages inherited from the last public upload, fallback to 22) and points to a follow-up step: 'Checking whether processing has finished tells you when, or why it failed.' It never explicitly excludes cases (e.g. use update_video for an already-uploaded video) and never names get_processing_status, so routing is implied rather than stated.
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.
14 tool updates
v0.7.1- Added
delete_caption - Changed
delete_comment1 field changed- changed
Output schema / properties / kind / enumPrevious value: -[ - "video", - "playlist", - "comment", - "section" -]New value: +[ + "video", + "playlist", + "comment", + "section", + "caption" +]
- Changed
delete_playlist1 field changed- changed
Output schema / properties / kind / enumPrevious value: -[ - "video", - "playlist", - "comment", - "section" -]New value: +[ + "video", + "playlist", + "comment", + "section", + "caption" +]
- Changed
delete_section1 field changed- changed
Output schema / properties / kind / enumPrevious value: -[ - "video", - "playlist", - "comment", - "section" -]New value: +[ + "video", + "playlist", + "comment", + "section", + "caption" +]
- Changed
delete_video1 field changed- changed
Output schema / properties / kind / enumPrevious value: -[ - "video", - "playlist", - "comment", - "section" -]New value: +[ + "video", + "playlist", + "comment", + "section", + "caption" +]
- Changed
get_analytics8 fields changed- changed
Input schema / properties / by / anyOfPrevious value: -[ - { - "enum": [ - "day", - "month", - "video", - "country", - "device", - "os", - "traffic-source", - "playback-location", - "age", - "gender", - "subscribed" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "day", + "month", + "video", + "country", + "device", + "os", + "traffic-source", + "traffic-source-detail", + "playback-location", + "age", + "gender", + "subscribed", + "content-type", + "sharing-service", + "elapsed" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / by / descriptionPrevious value: -"Break the numbers down by this dimension; its column is named as given here. Omit for totals.\nBy month, the range widens to whole months."New value: +"Break the numbers down by this dimension; its column is named as given here. Omit for totals.\nBy month, the range widens to whole months. By elapsed: the audience retention of exactly one\nvideo, a row per 1% of its length (0.01 to 1). By traffic-source-detail, which needs\ntraffic_source: the search terms behind YT_SEARCH, the videos behind RELATED_VIDEO, the sites\nbehind EXT_URL." - added
Input schema / properties / content_typeAdded value: +{ + "anyOf": [ + { + "enum": [ + "videoOnDemand", + "shorts", + "liveStream" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Only long-form videos (videoOnDemand), shorts, or live streams (liveStream), as the\ncontent-type breakdown names them. Not by elapsed." +} - added
Input schema / properties / countryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Only viewers in this country, e.g. US. Not by elapsed." +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of rows. Breaking down by video returns at most 200, 25 by default;\nother breakdowns return every row by default."New value: +"Maximum number of rows. Breaking down by video returns at most 200, 25 by default; by\ntraffic-source-detail, at most 25. Other breakdowns return every row by default." - changed
Input schema / properties / metrics / descriptionPrevious value: -"Metric names from https://developers.google.com/youtube/analytics/metrics, e.g. views,\nestimatedMinutesWatched, subscribersGained. Defaults to views, watch time, average view\nduration, likes, comments, and subscribers gained and lost. By device, os, traffic-source,\nplayback-location or subscribed, only watch metrics work (views, estimatedMinutesWatched,\naverageViewDuration, averageViewPercentage), and those are the default. By age or gender,\nonly viewerPercentage works."New value: +"Metric names from https://developers.google.com/youtube/analytics/metrics, e.g. views,\nestimatedMinutesWatched, subscribersGained. Defaults to views, watch time, average view\nduration, likes, comments, and subscribers gained and lost. By device, os, traffic-source,\nplayback-location or subscribed, only watch metrics work (views, estimatedMinutesWatched,\naverageViewDuration, averageViewPercentage), and those are the default. By age or gender,\nonly viewerPercentage works. By elapsed: audienceWatchRatio (share of viewers watching at that\npoint, above 1 with rewatches) and relativeRetentionPerformance (0 to 1, against videos of\nsimilar length) by default, or startedWatching and stoppedWatching. By traffic-source-detail:\nviews and estimatedMinutesWatched. By sharing-service: shares." - changed
Input schema / properties / sort / descriptionPrevious value: -"Metric or dimension to sort by; prefix with - for descending, e.g. -views. Defaults to\nchronological by day or month, and to the first metric, descending, by anything else."New value: +"Metric or dimension to sort by; prefix with - for descending, e.g. -views. Defaults to\nchronological by day, month or elapsed, and to the first metric, descending, by anything else." - added
Input schema / properties / traffic_sourceAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The source to break down by traffic-source-detail, as the traffic-source breakdown names\nit, e.g. YT_SEARCH. Only with that breakdown." +}
- Added
get_impressions - Added
get_transcript - Added
list_captions - Changed
search1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of results. Each page of up to 50 costs 100 quota units."New value: +"Maximum number of results."
- Changed
set_playlist_thumbnail1 field changed- changed
Input schema / properties / image / descriptionPrevious value: -"Path to a square JPEG or PNG, at most 2 MB."New value: +"Path to a square JPEG or PNG, at most 50 MB."
- Changed
set_thumbnail1 field changed- changed
Input schema / properties / image / descriptionPrevious value: -"Path to a JPEG or PNG, at most 2 MB."New value: +"Path to a JPEG or PNG, at most 50 MB."
- Added
update_caption - Added
upload_caption
45 tool updates
v0.1.0- First observed
add_section - First observed
add_video_to_playlist - First observed
approve_comments - First observed
create_playlist - First observed
delete_comment - First observed
delete_playlist - First observed
delete_section - First observed
delete_video - First observed
edit_comment - First observed
get_analytics - First observed
get_channel - First observed
get_my_ratings - First observed
get_playlists - First observed
get_processing_status - First observed
get_videos - First observed
hold_comments - First observed
list_activities - First observed
list_comments - First observed
list_my_channels - First observed
list_playlist_items - First observed
list_playlists - First observed
list_replies - First observed
list_sections - First observed
list_subscriptions - First observed
list_video_categories - First observed
move_in_playlist - First observed
post_comment - First observed
rate_video - First observed
reject_comments - First observed
remove_from_playlist - First observed
remove_watermark - First observed
reply_to_comment - First observed
search - First observed
set_channel_banner - First observed
set_playlist_thumbnail - First observed
set_thumbnail - First observed
set_watermark - First observed
setup_guide - First observed
subscribe - First observed
unsubscribe - First observed
update_channel - First observed
update_playlist - First observed
update_section - First observed
update_video - First observed
upload_video
TDQS
Scored across 51 tools
Tool purposes are largely distinct, and descriptions clarify tricky pairs such as list_playlists vs get_playlists, comment moderation vs deletion, and analytics vs impressions. With 51 tools, some near-neighbors remain that an agent could misselect, but there are no true duplicates.
Almost all names use a snake_case verb_noun pattern like get_videos, create_playlist, and delete_comment. A few are verb-only or noun phrases such as search, subscribe, and setup_guide, which are minor deviations rather than a mixed convention.
51 tools is far beyond a well-scoped MCP surface, even for YouTube's broad domain. Most tools are individually justified, but the overall count will heavily burden tool selection and context.
The surface covers CRUD for videos, playlists, comments, captions, channel sections, subscriptions, ratings, uploads, analytics, and impressions. There are no obvious lifecycle dead ends for the stated YouTube management purpose.
Maintenance
Related MCP Connectors
YouTube MCP — wraps the YouTube Data API v3 (BYO API key)
YouTube transcripts, search, channel browsing, and playlists for AI agents via MCP.
YouTube discovery, transcripts, library search, and monitors with API keys or OAuth.
YouTube search, whole channels, video stats, comments and full transcripts with timestamps.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA fully functional MCP server and CLI for YouTube to automate YouTube operation.707Apache 2.0
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables interaction with the YouTube Data API, allowing users to search videos, get video and channel details, analyze trends, and fetch video transcripts.-
- FlicenseNot gradedqualityDmaintenanceProvides YouTube video search, comment analysis, AI-powered text tools, and content generation via MCP protocol and REST API.19 npm7-
- FlicenseBqualityDmaintenanceMCP server for YouTube Data API v3 enabling video search, channel lookup, trending content, comments, and playlist management.11-