CreatorOS
Provides read-only analytics for a user's YouTube channel, including channel health checks, video performance and retention deep dives, traffic sources, subscriber metrics, fair video comparisons, rising/declining videos, publishing-time recommendations, and audience questions from comments.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CreatorOSrun a channel health check and tell me my biggest bottleneck"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Documentation Wiki
The complete project wiki is available in docs/wiki, including setup, user guidance, MCP reference, architecture, security, troubleshooting, roadmap and contribution standards.
CreatorOS – YouTube Creator Intelligence for Claude
Related MCP server: YouTube MCP Server
Description
CreatorOS connects Claude to your own YouTube channel and turns your analytics into clear, evidence-based answers: how the channel is doing, what is holding each video back, what to replicate, when to publish, and what your audience is asking.
It is a read-only local extension for Claude Desktop. It never uploads, edits, deletes or comments, and your data never passes through any CreatorOS server — only between your computer, Google and Claude.
Every answer is labelled so you know what is fact and what is a suggestion:
Label | Meaning |
| Read directly from YouTube |
| Arithmetic on measured data (ratios, % change, medians) |
| Pattern inference from your history, with a confidence level |
| A suggested action to test — not a proven cause |
Features
Channel health check – compares every video with your own same-format baseline (Shorts vs Shorts, long-form vs long-form) and names the real bottleneck: click, discovery, retention or subscriber conversion, then gives one prioritized recommendation.
Private analytics – views, watch time, average view %, subscribers gained/lost, traffic sources, countries, subscriber vs non-subscriber viewing, period-over-period change.
Video deep dive – audience-retention curve with the biggest drop-off, discovery sources, YouTube search terms.
Fair comparisons – each video measured over its own first N days after publishing.
Rising & declining videos – momentum versus the previous period.
Best time to publish – estimated from how your past uploads performed, with confidence and sample sizes.
Audience voice – the questions viewers ask in your comments.
Library search – find your videos by topic without using YouTube quota.
History – snapshots and past recommendations saved locally so you can check advice against results.
Multi-channel – connect several channels and switch the default.
Installation
CreatorOS runs on your computer, so it works in Claude Cowork (desktop app) and Claude Code. It does not run in claude.ai web chat (local servers are not loaded there).
Prerequisites for the plugin: Python 3.10+ on your PATH, and the uv Python runner (one-time, 1 minute). CreatorOS runs with the exact package versions pinned in uv.lock.
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh
Option 0 — Claude plugin (Cowork and Claude Code)
From the Claude directory (once listed): Customize → Browse plugins, search CreatorOS, click Add.
Cowork, before listing: on GitHub click Code → Download ZIP, then in Claude Customize → Plugins → Add → Upload plugin and choose the ZIP.
Claude Code:
claude --plugin-dir ./youtube-claude-mcp(from a clone of this repo).
The plugin adds the CreatorOS server and a youtube-channel-review skill that teaches Claude which tool to use for each question. Then complete Configuration.
Option A — Claude Desktop extension
Download the
.mcpbfile from the latest release.Double-click it (or drag it into Claude Desktop, or Settings → Extensions → Install Extension).
Review the permissions and click Install.
Complete Configuration below.
Claude Desktop installs the Python runtime and dependencies automatically. Once listed in the Anthropic Directory: Settings → Extensions → Browse, search CreatorOS, click Install.
Option B — Manual install (developers)
Requires Python 3.10+.
Windows (Command Prompt):
cd "%USERPROFILE%\Documents"
git clone https://github.com/matteys001/youtube-claude-mcp.git
cd youtube-claude-mcp
python -m venv .venv
.venv\Scripts\python -m pip install --upgrade pip
.venv\Scripts\pip install -e .macOS (Terminal):
cd ~/Documents && git clone https://github.com/matteys001/youtube-claude-mcp.git
cd youtube-claude-mcp && python3 -m venv .venv
.venv/bin/pip install --upgrade pip && .venv/bin/pip install -e .If Documents is synced by OneDrive on Windows, the path is
%USERPROFILE%\OneDrive\Documents\youtube-claude-mcp.
Then add to Claude Desktop (Settings → Developer → Edit Config), keeping any existing servers:
{
"mcpServers": {
"creatoros": {
"command": "C:\\Users\\YOUR-NAME\\Documents\\youtube-claude-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "creatoros.server"]
}
}
}macOS: "command": "/Users/YOUR-NAME/Documents/youtube-claude-mcp/.venv/bin/python". Fully quit and reopen Claude.
Configuration
CreatorOS uses Google's official APIs. One-time setup (about 15 minutes):
1. Google OAuth client (required)
Open https://console.cloud.google.com → project dropdown → New Project →
CreatorOS→ Create → select it.Search and Enable: YouTube Data API v3 and YouTube Analytics API.
Google Auth Platform → Get started: app name
CreatorOS, your email → External → contact email → agree → Create.Audience → Test users → Add users → the Gmail that owns your channel → Save.
Clients → Create client → Desktop app → Create → Download JSON.
Give CreatorOS the client:
Plugin (Claude Code and Cowork): save the downloaded JSON as
client_secret.jsonin the.creatorosfolder of your user directory (Windows:mkdir "%USERPROFILE%\.creatoros"thenmove "%USERPROFILE%\Downloads\client_secret_*.json" "%USERPROFILE%\.creatoros\client_secret.json").Extension: Settings → Extensions → CreatorOS → Configure → Google OAuth client file → select the JSON.
Manual install: save it as
client_secret.jsonin the.creatorosfolder of your user directory (Windows:move "%USERPROFILE%\Downloads\client_secret_*.json" "%USERPROFILE%\.creatoros\client_secret.json"aftermkdir "%USERPROFILE%\.creatoros").
While the Google app is in Testing mode, Google asks you to sign in again every 7 days. CreatorOS tells you when.
2. YouTube API key (optional — comments only)
YouTube only allows comment reading through OAuth with a write-capable permission, which CreatorOS deliberately does not request.
APIs & Services → Credentials → + Create credentials → API key, name
CreatorOS Comments.API restrictions: select YouTube Data API v3. Application restrictions: None. Create, copy the key.
Plugin / manual install: save it in
.creatoros\api_key.txt. Extension: Configure → YouTube Data API key. Manual: save it in.creatoros\api_key.txt.
3. Connect your channel
Ask Claude: "Connect my YouTube channel with CreatorOS." A Google sign-in tab opens → choose the account/channel →
if shown, "Google hasn't verified this app" → Continue → tick both permissions → Continue.
(Manual install alternative: run .venv\Scripts\creatoros-connect.)
Examples
Example 1: Channel health check
User prompt: "Use CreatorOS to run a full health check on my YouTube channel for the last 28 days. Tell me the main bottleneck, the evidence, and three things to do this week."
Expected behavior:
Calls
youtube_analyze_channel_performance(syncs videos, pulls this and the previous 28 days).Returns views, watch time, retention and net subscribers with % change; top traffic sources and countries.
Classifies each recent video's bottleneck against your own same-format median, and names a main bottleneck only if it affects ≥30% of recent videos.
Gives 3 concrete actions, videos to replicate, a confidence level and the limitations (e.g. ~48h data lag).
Example 2: Compare videos fairly
User prompt: "Compare my two most-viewed videos over their first 28 days after publishing."
Expected behavior:
Calls
youtube_list_videos(sort: most viewed), thenyoutube_compare_videoswithfirst_days=28.Shows views, average % viewed, subscribers per 1,000 views and likes per 1,000 views for each video in equal windows.
Names the leader per metric and warns if formats differ (Short vs long-form) or a window is partial.
Example 3: Video deep dive
User prompt: "Analyze my most recent video: where do viewers drop off, how did people find it, and what search terms brought them?"
Expected behavior:
Calls
youtube_get_video_analyticsfor the video's lifetime.Returns a 20-point retention curve with the biggest drop-off (time in seconds), traffic sources and YouTube search terms.
States clearly when YouTube has no data for a report (e.g. too few views for search terms).
Example 4: Best time to publish
User prompt: "When should I publish my next Short? My audience is mostly in India."
Expected behavior:
Calls
youtube_recommend_publishing_timewithtimezone_name="Asia/Kolkata",format="short".Returns weekday and 3-hour time-block rankings with sample sizes, the best slot and confidence, your current habit, untested days and how to validate.
If no slot has 3+ comparable videos, says so instead of guessing.
Example 5: What the audience is asking
User prompt: "Read the comments on my most-commented video. What questions are viewers asking?"
Expected behavior:
Calls
youtube_list_videosthenyoutube_get_comments.Lists the most-liked comments and viewer questions, with the share of comments that are questions.
If no API key is configured, returns a
[configuration]message explaining how to add one.
More prompts: "Which videos are rising or declining?", "Search my videos about AI", "Run my weekly creator review".
Tools
All tools are annotated for the Anthropic Directory: readOnlyHint (12 tools) or destructiveHint (3 tools that write only local files).
Tool | Annotation | What it does |
| destructive (local) | Google sign-in; saves an encrypted token |
| read-only | Connected channels and default |
| destructive (local) | Choose the default channel |
| destructive (local) | Revoke Google access + delete token; requires |
| read-only | Profile, stats, format mix, upload cadence |
| read-only | Videos with filters, sorting, pagination |
| read-only | Search your own library (no quota) |
| read-only | Full metadata + stored stat history |
| read-only | Comments, viewer questions, most-liked |
| read-only | Private analytics vs previous period |
| read-only | Retention curve, drop-off, traffic, search terms |
| read-only | Equal-window comparison |
| read-only | Full health check + one recommendation |
| read-only | Best day/time with confidence |
| read-only | Past recommendations and baselines |
Prompts: channel_health_assessment, weekly_creator_review, video_performance_analysis.
Resources: creatoros://channels, creatoros://channels/{id}/videos, creatoros://channels/{id}/recommendations.
Privacy Policy
CreatorOS runs locally and has no servers or telemetry. Full policy: PRIVACY.md.
Data collection
Accessed (read-only, with your Google consent): channel info, video metadata and public counts, private YouTube Analytics for your own channel, and public comments (only with an API key).
Use: only to answer your questions in Claude. Never for ads, profiling or training.
Storage: on your computer in
.creatoros— encrypted Google tokens, a local SQLite history, and logs without secrets.Sharing: with Google (to fetch the data) and with Claude (tool results you request). Not with the publisher or anyone else.
Retention: until you delete it. Disconnect with
youtube_disconnect_channelor https://myaccount.google.com/permissions; delete the.creatorosfolder to erase everything.
CreatorOS's use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
Support
Issues and feature requests: https://github.com/matteys001/youtube-claude-mcp/issues
Email: sumit@matteys.com
Logs for bug reports:
.creatoros/logs/server.logandtool_calls.jsonl(they contain no tokens or keys).
Troubleshooting
Every error starts with a category and a fix:
Message starts with | Meaning | Fix |
| OAuth client not set | Configuration → step 1.6 |
| APIs not enabled | Enable both YouTube APIs |
| Comments need a key | Configuration → step 2 |
| Sign-in expired (7-day testing limit) or revoked | Ask Claude to connect again |
| Wrong Google account / Brand Account | Reconnect and pick the channel owner |
| Daily Google quota used | Wait until midnight US Pacific time |
| YouTube has no data for that request | Longer period or another video |
| Temporary Google or network error (auto-retried 3×) | Try again shortly |
Windows: | Documents is in OneDrive | Use the OneDrive path |
Compatibility
Claude Desktop ≥ 0.10 on Windows, macOS and Linux · Python ≥ 3.10 (managed automatically for the extension). Live-tested on Windows 11 with a real channel; see Verification.
Architecture
flowchart LR
C[Claude Desktop] -- stdio MCP --> S[server.py<br/>15 tools · 3 resources · 3 prompts<br/>error guard + audit log]
S --> I[intelligence.py<br/>bottlenecks · momentum · publishing cohorts]
S --> A[auth.py<br/>OAuth 2.0 + encrypted vault]
S --> Y[youtube_client.py<br/>Data API v3]
S --> N[analytics_client.py<br/>Analytics API v2]
S --> D[(store.py<br/>SQLite snapshots)]
A --> G[Google OAuth]
Y --> YT[YouTube Data API]
N --> YA[YouTube Analytics API]Layer | Module | Responsibility |
MCP interface |
| Tools, resources, prompts, uniform errors, audit log |
Intelligence |
| Pure, unit-tested analytics engine |
YouTube Data |
| Channel, uploads, videos, comments (quota-aware) |
YouTube Analytics |
| Private metrics, optional reports degrade gracefully |
Auth |
| OAuth (PKCE), encrypted multi-channel vault, revoke |
Persistence |
| Append-only snapshots with provenance |
Errors |
| Category + fix for every failure |
Detailed design: docs/ARCHITECTURE.md (feasibility matrix, scopes, methods, roadmap) · docs/SOLUTION_AND_TECHNICAL_ARCHITECTURE.md (solution & technical diagrams) · docs/SUBMISSION.md (directory checklist).
How the intelligence works
Bottleneck diagnosis — each video vs the median of the same format on your channel:
Pattern | Bottleneck |
impressions ≥ 0.8× and CTR < 0.8× (when YouTube provides CTR) | Click |
views < 0.6× and retention ≥ 1.0× | Discovery |
views < 0.6× and retention < 0.85× | Discovery + consumption |
views ≥ 0.8× and retention < 0.8× | Consumption |
views ≥ 0.8× and subscribers/1k views < 0.6× | Conversion |
views ≥ 1.5× and retention ≥ 0.95× | Winning |
Publishing time — each video's views ÷ the median of its 10 nearest same-format uploads by date (controls for growth and age), grouped by weekday and 3-hour block in the audience timezone; a slot needs ≥ 3 videos. YouTube Studio's "when your viewers are on YouTube" chart is not available through the public API, so this is an outcome-based estimate.
Known limitations
Shorts are detected by duration (≤ 180 s) because the Data API has no Shorts flag.
Impressions/CTR are requested but YouTube rejects them for some report types; the click stage is then skipped and stated.
Analytics lag ~48 hours. Per-video analytics cover the top 200 videos per window.
Competitor research, content ideas, calendar and publishing are later phases (see roadmap).
Roadmap
Phase | Scope | Status |
1 | OAuth, library, analytics, diagnosis, publishing time, comments | Released (0.3.0, plugin + extension) |
2 | Reporting API history, weekly/monthly reports, native Shorts detection | Next |
3 | Transcripts, topic classification, semantic search | Planned |
4 | Market & competitor research, SEO, title/thumbnail review, ideation | Planned |
5 | Content calendar, approved uploads/scheduling, comment replies | Planned |
6 | Hosted remote MCP server (works in claude.ai chat, submit as MCP connector), web app, RBAC | Planned |
Verification status
Check | Result |
25 offline tests (engine, errors, vault, annotations, stdout safety, stubbed end-to-end) | Pass |
MCPB manifest validation + pack + launch via | Pass |
| Pass — nothing to report |
Live run on Windows 11 with a real channel (v0.1.1) | 12/15 pass, 2 later-phase, 1 verified offline; the one failure (transient Google 500) fixed in 0.1.2 with retries |
macOS clean-machine run | Pending |
Development
pip install -e ".[dev]" && pytest -q # offline tests
python scripts/acceptance_test.py # live acceptance tests on your channel
npm i -g @anthropic-ai/mcpb && mcpb pack . creatoros-youtube.mcpb # build the extensionProject structure:
youtube-claude-mcp/
├── .claude-plugin/plugin.json # Claude plugin manifest (directory listing)
├── .mcp.json # Plugin's local MCP server definition (python launch.py)
├── launch.py # Starts the server with uv using pinned versions (uv.lock)
├── uv.lock # Exact dependency versions
├── skills/youtube-channel-review/SKILL.md # Workflow skill for Claude
├── manifest.json # Claude Desktop extension manifest (MCPB 0.4, uv runtime)
├── main.py # Extension entry point
├── icon.png # 512×512 icon
├── assets/ # repository banner
├── creatoros/ # Server package (see Architecture)
├── scripts/acceptance_test.py
├── tests/test_creatoros.py
├── docs/ # ARCHITECTURE, SOLUTION_AND_TECHNICAL_ARCHITECTURE, SUBMISSION
├── PRIVACY.md · CHANGELOG.md · LICENSE
└── pyproject.tomlLicense
MIT © 2026 Sumit Mattey
Available Tools
15 toolsyoutube_analyze_channel_performanceAnalyze channel & recommendARead-onlyIdempotent
End-to-end health check: syncs videos, pulls analytics for this and the previous period, diagnoses each video's bottleneck (click / discovery / retention / conversion) against the channel's own same-format baseline, finds rising and declining videos, and returns ONE prioritized, evidence-backed recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Analysis window in days (compared with the previous window) | |
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive), yet the description adds real behavioral detail beyond them: it discloses an internal video sync step, a current-vs-previous period comparison, a same-format baseline against the channel's own history, and that output is exactly one recommendation. The undisclosed cost here is that this is a multi-step, potentially slow operation, which the description does not warn about; 'syncs videos' also sits in mild tension with readOnlyHint, though a cache refresh is plausibly non-mutating and idempotent.
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?
A single dense sentence, but it is front-loaded with the tool's identity and each clause (sync, period comparison, per-video diagnosis, rising/declining detection, single recommendation) adds distinct information. It borders on being a run-on list, though no clause is pure 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, the description needn't explain return structure, and it still usefully signals that output is one prioritized recommendation rather than a report dump. What is missing for a genuinely heavy orchestration tool is a note on runtime/cost or side effects of the sync step, which would help an agent decide whether to call it or a cheaper sibling first.
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 in the schema, including the default channel fallback and the 14-180 day bound. The description only echoes the comparison-window semantics for `days` ('this and the previous period') and says nothing about channel_id behavior, so it adds little beyond structured fields – 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 chain and resource: 'End-to-end health check: syncs videos, pulls analytics... diagnoses each video's bottleneck... returns ONE prioritized recommendation.' This is clearly distinguishable from siblings like youtube_get_channel_analytics (raw metrics) and youtube_get_channel_overview (summary), since the description emphasizes diagnosis plus a single actionable recommendation.
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 'End-to-end health check' plus the bottleneck taxonomy gives strong implied context for when to reach for this tool over the narrower analytics siblings. However, it never states when NOT to use it (e.g., for a quick metric pull prefer youtube_get_channel_analytics) nor that it is a heavier multi-step operation, leaving the agent to infer the trade-off.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_compare_videosCompare videos fairlyBRead-onlyIdempotent
Compare videos on equal footing: each video is measured over its own first N days after publishing.
| Name | Required | Description | Default |
|---|---|---|---|
| video_ids | Yes | 2-5 video IDs from this channel | |
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. | |
| first_days | No | Compare each video's first N days after publishing |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds one genuinely useful behavioral detail beyond that: comparisons are aligned by age since publishing rather than by calendar window, so short-lived videos are not penalized. It stops short of disclosing result shape, limits (max 5 IDs, single channel), or what happens when a video is newer than first_days.
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?
One sentence, front-loaded with the resource and the fairness/normalization rule, with zero filler. Nothing in it is redundant with the annotations 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 values need not be explained. However, for a comparison tool spanning 2-5 videos across multiple possible channels, the definition never says what dimensions are compared or that all IDs must belong to one channel, leaving the agent to infer scope from 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 the schema already documents all three parameters, including first_days and the UC... channel ID format. The description reinforces the meaning of first_days ('its own first N days') but adds nothing for video_ids or channel_id; baseline 3 applies 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 description names a specific verb and resource (compare videos) and states the core mechanic: each video is measured over its own first N days after publishing. It does not say which metrics are compared or how it differs from the neighboring youtube_get_video_analytics, so sibling differentiation is left to the name 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?
There is no explicit statement of when to use this tool versus youtube_get_video_analytics or youtube_get_channel_analytics, and no prerequisites or exclusions. Usage is only inferable from the word 'Compare' and the phrase 'on equal footing', which suggests normalizing across videos of different ages but never says so directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_connect_channelConnect a YouTube channelADestructive
Connect a YouTube channel via Google sign-in (OAuth 2.0, read-only permissions).
Opens Google's consent screen in a browser on the computer running this server. The user signs in and picks the channel (or Brand Account). Tokens are encrypted locally and never returned here. Call again to connect additional channels.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the behaviors an agent could not otherwise infer: that a browser on the server host opens a Google consent screen, that a human must sign in and choose the channel or Brand Account, and that tokens are encrypted at rest and never returned. This makes clear the call is interactive and requires a user present, which matters greatly for a non-idempotent, open-world tool. Note the "read-only permissions" line refers to the granted Google scopes, not to tool behavior, so it does not genuinely contradict destructiveHint=true — though the pairing could briefly confuse a reader.
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 auth method, then the mechanics, then the repeat-use note; each sentence adds something. Slightly long for a no-parameter tool, but no sentence is 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 an interactive OAuth flow, the description covers the essentials: browser requirement, human interaction, token handling, and repeat use; an output schema exists so return values need not be described. It omits failure/cancellation behavior and any indication of whether an already-connected channel is duplicated or skipped, which is the main remaining 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?
With zero parameters, there is nothing for the schema to describe, and the description usefully explains that channel selection happens inside the browser consent screen rather than through arguments. That is a meaningful clarification, though it does not say what happens if no channel is chosen or if the account is already connected.
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 ("Connect a YouTube channel") plus the mechanism (Google sign-in / OAuth 2.0), which cleanly separates it from sibling connect-adjacent tools like youtube_list_channels and youtube_disconnect_channel. It also clarifies that repeat calls add more channels rather than replacing the connection.
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?
"Call again to connect additional channels" gives explicit guidance on repeated invocation, and the browser/consent flow makes the context of use clear. It never names a sibling alternative (e.g., use youtube_list_channels to see what is already connected, or youtube_disconnect_channel to undo), so the routing guidance stops short of explicit alternatives or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_disconnect_channelDisconnect a channelADestructiveIdempotent
Revoke CreatorOS's Google access for a channel and delete its local token. Requires explicit confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true. Ask the user to confirm before setting it. | |
| channel_id | Yes | Channel ID to disconnect |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds real value by naming exactly what is destroyed: the Google OAuth grant is revoked and the local token is deleted, and it warns that explicit confirmation is mandatory. It leaves minor gaps, such as whether revocation affects other channels sharing the same Google account.
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 tightly constructed sentences with the destructive effect front-loaded and the confirmation constraint second. Every phrase earns its place and nothing is redundant padding.
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 annotations cover idempotency and destructive behavior. The description states both effects of the operation and the confirmation gate, which is sufficient for correct invocation. It could go further on partial-failure behavior or shared-account side effects for a destructive, open-world 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 coverage is 100% and the confirm parameter already carries the instruction 'Must be true. Ask the user to confirm before setting it,' which is the key semantic. The description's 'Requires explicit confirmation' reinforces that gate but adds no new information about channel_id or the confirm flow, so the schema is doing 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 description gives a specific verb pair and resource: 'Revoke CreatorOS's Google access for a channel and delete its local token.' This clearly identifies it as the inverse of youtube_connect_channel and distinguishes it from read-only siblings like youtube_list_channels. It does not explicitly name the sibling it complements, 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?
Usage is implied by the inverse relationship to connect_channel and by the stated confirmation requirement, but the description never explicitly says when to prefer this over alternatives or what preconditions exist (e.g., channel must currently be connected). 'Requires explicit confirmation' is an invocation instruction rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_get_channel_analyticsChannel analyticsBRead-onlyIdempotent
Private channel analytics: totals vs previous period, daily trend, traffic sources, countries, subscriber split.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window length in days (compared with the previous window of the same length) | |
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered by structured fields. The description adds one piece of real context beyond that — 'Private', signalling the data is scoped to the caller's own authenticated channel — plus a low-cost summary of what the payload contains. It says nothing about rate limits, quota cost, or empty-data behavior, so it is value-adding but not 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?
A single front-loaded sentence fragment that wastes no words, with the distinguishing qualifier ('Private') placed first and the payload contents listed after. It is efficient, though the colon-list format is clipped enough that it reads as a label rather than an instruction.
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 explanation is not required, and annotations cover the safety profile; with only two well-documented parameters the definition is close to sufficient. The remaining gap is selection guidance against four sibling analytics/overview tools, which the description does not address at all.
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 'days' parameter already documents the window and that it compares against a previous window of equal length, and 'channel_id' documents the UC... format and the omit-to-use-default behavior. The description adds no syntax, defaults, or edge cases on top of 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 (channel analytics) and enumerates the concrete outputs: period-over-period totals, daily trend, traffic sources, countries, and subscriber split. That is specific enough for an agent to know what data it yields, but it never distinguishes this tool from likely-overlapping siblings such as youtube_get_channel_overview or youtube_analyze_channel_performance.
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 at all: no statement about when this beats youtube_get_channel_overview, youtube_get_video_analytics, or youtube_analyze_channel_performance, and no prerequisites such as needing a connected channel. The only hint is the word 'Private', which implies an authenticated/owned channel but does not route the agent between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_get_channel_overviewChannel overviewCRead-onlyIdempotent
Channel profile, public stats, library composition (Shorts vs long-form) and upload cadence.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no statement about the time window of stats, whether data is cached or live, or any rate/quota behavior expected of an external YouTube API read. With an output schema present it needn't describe returns, but it still leaves the agent without behavioral context beyond 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?
It is a single compact fragment with zero filler, but it is under-specified rather than concise: the missing verb and scope statement would cost only a few words and would materially improve selection. Brevity here comes at the expense of clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter, an output schema and full annotations, structural coverage is good, but the description omits the one thing structure cannot convey: how an 'overview' differs from the three analytics/performance siblings in this toolset. For a read tool sitting in a crowded analytics family, that differentiation gap is a real deficiency.
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% and the sole parameter channel_id already documents the UC... format and the omit-for-default behavior, so the description is not required to compensate. It adds no meaning beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a bare noun phrase ('Channel profile, public stats, library composition... upload cadence') with no verb and no stated scope such as whose channel is read. The listed content gives a reasonable sense of what data comes back, but it never distinguishes this 'overview' from sibling tools like youtube_get_channel_analytics or youtube_analyze_channel_performance, which plausibly return overlapping metrics.
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 at all: no mention of when to pick this over youtube_get_channel_analytics, youtube_analyze_channel_performance, or youtube_list_channels. The only usage hint in the whole definition lives in the schema ('Omit to use the default connected channel'), not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_get_commentsVideo commentsBRead-onlyIdempotent
Top-level comments on a video, with quick derived signals (questions, most-liked) for audience analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | 'relevance' (top) or 'time' (newest) | relevance |
| video_id | Yes | YouTube video ID | |
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. | |
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description does add real scope information beyond annotations: only top-level comments are returned (replies excluded) and extra computed fields (questions, most-liked) are attached. It says nothing about pagination, the 100/300 result cap, or quota 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?
A single well-formed sentence with the most important qualifier ('top-level') front-loaded and no filler. It is efficient, though arguably under-specified rather than tight.
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. However, for a tool with four parameters and a default result order that materially changes what an agent sees, the description offers no guidance on ordering, limits, or channel scoping, leaving gaps the schema does not fill.
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 75%: order, video_id and channel_id carry descriptions, while max_results only has bounds and a default. The description adds no parameter meaning at all, so it neither compensates for the coverage gap nor clarifies enum/default behavior. Baseline 3 is appropriate given the schema does most of 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?
Names the resource precisely (top-level comments on a video) and scopes it to non-reply comments, plus flags derived signals (questions, most-liked). The retrieval verb is only implied by the tool name rather than stated, and no sibling tool is named, but the resource is unmistakable.
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 only usage hint is the trailing phrase 'for audience analysis', which implies intent but never states when to call this versus other video/analytics tools or any prerequisites (e.g. needing a video_id from youtube_list_videos). No exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_get_recommendation_historyPast recommendationsBRead-onlyIdempotent
Recommendations CreatorOS made earlier (with their baselines) so you can check them against what happened next.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare that the tool is read-only, idempotent, non-destructive, and open-world, so the safety profile is covered. The description adds useful context that the results are historical records paired with baselines. It does not disclose ordering, whether the history is bounded, or how 'limit' truncates the list, which are behaviors an agent would want to know.
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 a single front-loaded sentence with no filler, and the purpose is stated before the use case. The parenthetical about baselines is efficient. It is slightly terse for a tool that has an undocumented parameter.
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 the description does not need to explain return values, and the annotations cover safety. The remaining gaps are ordering, limit behavior, and channel scoping. For a simple two-parameter read tool, this 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 coverage is only 50%: channel_id is documented in the schema, but limit is not documented beyond its numeric bounds. The description adds no meaning to either parameter; it says nothing about what limit counts, what order results come in, or that omitting channel_id falls back to the default connected channel. It therefore fails to compensate for the coverage gap.
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: retrieving recommendations that were made earlier, together with their baselines. This clearly separates it from the sibling youtube_recommend_publishing_time, which generates new recommendations rather than reading past ones. It does not explicitly name that sibling, but the phrase 'made earlier' makes the distinction clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the purpose of the tool through 'so you can check them against what happened next', which indicates that the tool is meant for retrospective review. However, it does not say when to use it versus alternatives, whether to call it before or after an analytics call, or what it excludes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_get_video_analyticsVideo analyticsBRead-onlyIdempotent
Private analytics for one video: totals, impressions/CTR (if available), traffic sources, audience-retention curve with the biggest drop-off, and YouTube search terms that found it.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window in days. Omit for lifetime (since publish). | |
| video_id | Yes | YouTube video ID | |
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 two genuinely new behavioral facts: the data is 'private' (implying the caller must be authorized for that channel) and that impressions/CTR are only 'if available', warning the agent that some fields may be absent. It says nothing about latency, quota cost, or data freshness, so it earns a solid but not exceptional score.
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?
A single front-loaded sentence that opens with scope ('one video') before listing contents. Every clause names a distinct metric family, so nothing is filler, though the enumeration is dense and would read better split from the availability caveat.
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 the length spent enumerating return values is partly redundant with structured data. The description does cover the authorization-relevant 'private' nature, but with a three-parameter, open-world, authenticated tool it leaves out what happens on missing metrics beyond a parenthetical and any note on how days interacts with retention/CTR data.
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% — video_id, channel_id and the days window (with lifetime default) are all documented in the schema itself. The description adds no syntax or format detail beyond that, so the baseline 3 applies; the 'if available' caveat relates to output, not to parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (retrieve analytics) and a precise scope ('for one video'), then enumerates the metric families returned (totals, impressions/CTR, traffic sources, retention, search terms). This clearly separates it from channel-level analytics, though it never names youtube_get_channel_analytics or youtube_compare_videos as the alternative scopes.
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 by the phrase 'for one video' — an agent can infer this is the per-video counterpart to channel-level analytics, but there is no explicit statement of when to choose this tool over youtube_get_channel_analytics or youtube_compare_videos, and no prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_get_video_detailsVideo detailsARead-onlyIdempotent
Full metadata for one video (title, description, tags, duration, format, stats) plus stored stat history.
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | YouTube video ID, e.g. dQw4w9WgXcQ | |
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 needs no restating. The description does add one piece of behavior beyond them — that the response includes stored stat history alongside current metadata — but it says nothing about scope, cost, or what the returned history window covers.
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?
A single sentence with the resource front-loaded and the returned fields parenthesized; no filler and nothing buried mid-clause.
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 only two parameters, one required, full schema coverage, an output schema, and rich annotations, the short description is nearly sufficient. The only real gap is overlap ambiguity with the analytics sibling, which matters for tool selection in this crowded namespace.
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 video_id and the optional channel_id (with its default-channel fallback) are already fully documented inline. The description adds only that the tool targets exactly one video, not batch behavior.
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 the resource (a single video's full metadata) and enumerates the returned fields (title, description, tags, duration, format, stats) plus stored stat history, which clearly separates it from list/search siblings. It does not, however, draw the line against youtube_get_video_analytics, which overlaps with the 'stats' and 'history' it advertises.
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: fetch details once you have a video_id. There is no explicit when-to-use guidance, no mention of when to prefer youtube_get_video_analytics or youtube_compare_videos, and no stated prerequisites (e.g., a connected channel).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_list_channelsList connected channelsARead-onlyIdempotent
List YouTube channels connected to CreatorOS and which one is the default.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds one useful behavioral fact — that the result marks which channel is the default — but says nothing about behavior when no channels are connected or about auth/scope requirements for reading connected accounts.
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?
A single sentence with no filler, front-loading the core action and appending the default-channel detail. Nothing is redundant with the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, rich annotations and an output schema, the description only needs to convey scope, which it does. The one gap is the empty-state behavior (what comes back when no channel is connected), which an agent may need when routing after a failed lookup.
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 there is no parameter meaning to convey; baseline for a parameterless schema is 4. The description does not over-promise filtering options that do not exist.
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 (list) and resource (YouTube channels connected to CreatorOS) and adds a distinguishing detail — that the default channel is identified. It is clearly separable from siblings like youtube_connect_channel or youtube_set_default_channel, though it does not name them 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?
Usage is only implied: an agent can infer this is the discovery call to run before set_default or disconnect, but the description never says when to use it or when another sibling is preferable. 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.
youtube_list_videosList channel videosARead-onlyIdempotent
List the channel's uploaded videos with lifetime public stats (views, likes, comments).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order | newest |
| limit | No | Max videos to return | |
| format | No | Filter by format | all |
| offset | No | Pagination offset | |
| refresh | No | Force a fresh sync from YouTube instead of the 6-hour cache | |
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value by specifying the stats are 'lifetime' and 'public' — distinguishing them from the analytics siblings — but it does not mention caching or the fact that a full sync can be forced, leaving that to the 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?
A single front-loaded sentence with no filler; the resource comes first and the returned data is stated immediately. Nothing in it is redundant with the 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?
With annotations, a full output schema, and complete parameter documentation, the description is adequate for calling the tool correctly. It is thin for selection, however: it does not distinguish this list operation from search_videos or explain how public lifetime stats differ from the separate analytics 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% and all six parameters (sort, limit, format, offset, refresh, channel_id) carry their own descriptions, including the cache note on 'refresh' and the default-channel fallback on 'channel_id'. The description adds no parameter-level 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 ('List') and resource ('channel's uploaded videos') plus what is returned ('lifetime public stats (views, likes, comments)'). It is clear what the tool does, but it never contrasts itself with the nearby youtube_search_videos sibling, so an agent must infer the boundary between listing a channel's uploads and searching videos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: listing implies you already know the channel, while filtering/searching would suggest another tool. There is no explicit when-to-use or when-not-to-use guidance, and none of the 14 sibling tools (notably youtube_search_videos and youtube_get_video_analytics) are named as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_recommend_publishing_timeBest time to publishARead-onlyIdempotent
Recommend the best weekday and time block to publish, estimated from how your past uploads performed relative to neighbouring uploads. Includes confidence, sample sizes and how to validate it.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Analyze Shorts and long-form separately for best results | all |
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. | |
| timezone_name | No | IANA timezone of the main audience, e.g. 'Asia/Kolkata'. Omit to infer from the top audience country. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, open-world operation, so the safety bar is low; the description goes further by disclosing the derivation method (relative performance against neighbouring uploads) and that the output carries confidence and sample-size caveats. It stops short of stating rate limits or what happens with sparse history, but the methodological disclosure is genuine added 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?
Two compact sentences with the core capability front-loaded and the caveat trailing. The closing clause about confidence and sample sizes leans on output content that an output schema already exposes, so it earns its place only partially.
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, the description needn't enumerate return fields, and it correctly focuses on methodology and trustworthiness signals. What remains thin is the operational prerequisite — how much upload history is needed before a recommendation is meaningful — which an agent would want 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% and each parameter (format, channel_id, timezone_name) is documented with defaults and examples, so the baseline applies. The description adds nothing parameter-specific — notably it does not reinforce the schema's hint that analyzing Shorts and long-form separately gives better results.
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 — 'recommend the best weekday and time block to publish' — plus the inference basis ('how your past uploads performed relative to neighbouring uploads'). This is clearly distinct from the sibling analytics tools (youtube_get_channel_analytics, youtube_get_video_analytics), which report metrics rather than prescribe a scheduling slot.
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 use case (planning when to publish) and mentions validation, but never explicitly says when to call this versus the analytics siblings, nor what prerequisites apply (e.g. minimum upload history). Usage is inferable from the name and purpose statement rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_search_videosSearch my videosARead-onlyIdempotent
Search the connected channel's own video library (keyword match; uses no YouTube quota).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Words to find in titles, tags and descriptions, e.g. 'artificial intelligence' | |
| channel_id | No | YouTube channel ID (UC...). Omit to use the default connected channel. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds one genuinely useful behavior beyond that – no YouTube quota is consumed – but says nothing about result ordering, truncation by limit, or what happens when the query matches nothing.
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?
A single compact sentence with the scoping constraint front-loaded and the useful quota note in parentheses. Nothing is wasted, though the parenthetical could have been spent on something an agent cannot get from schema or annotations, such as ordering.
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 safety, the description only needs to convey scope and cost, which it does. What is missing — result ordering and behavior at the limit boundary — is minor for a read-only search 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 67% and the schema already explains query semantics (titles, tags, descriptions) and the default-channel behavior for channel_id. The description adds no meaning beyond that; limit remains undocumented in the prose, which the schema's min/max only partly compensates for.
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 (search) and resource (connected channel's own video library) plus the match mode (keyword). It implicitly separates itself from youtube_list_videos by being a keyword search rather than an enumeration, but never names that sibling, so an agent must infer the distinction.
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 'connected channel's own video library' signals when this applies (local search over your own content), and 'uses no YouTube quota' hints it is cheap to call. There is no explicit when-to-use versus youtube_list_videos or youtube_get_video_details, and no stated precondition that a channel must already be connected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_set_default_channelSet default channelBDestructive
Choose which connected channel tools use when channel_id is omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Connected channel ID (UC...) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond them: it does not say the previous default is replaced, whether the setting persists across sessions or is per-user/per-workspace, or what confirmation is returned. For a mutation of persistent state, that is a real 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?
One sentence, front-loaded with the verb and zero wasted words. Nothing redundant or 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?
The tool is simple (one required param, output schema present, annotations cover safety), so the short description is close to sufficient. What is missing is the effect on existing state (overwriting the prior default) and the precondition that the channel be connected, both of which matter given destructiveHint=true.
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% and channel_id is documented with its UC... format, so the schema carries the parameter burden. The description does add the semantic link that this parameter becomes the fallback used by other tools, but gives no constraint such as 'must be a connected channel'.
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 action and resource (set the default channel used by tools) in a single unambiguous sentence. It is clearly distinguishable from connect/disconnect/list siblings, though it never names those siblings to reinforce the contrast.
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 clause 'when channel_id is omitted' usefully explains when this setting takes effect, implying you call it to avoid passing channel_id on every later call. It gives no explicit when-not guidance, no prerequisites (e.g. the channel must already be connected), and no named alternative such as passing channel_id explicitly instead.
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.
15 tool updates
v0.3.5- First observed
youtube_analyze_channel_performance - First observed
youtube_compare_videos - First observed
youtube_connect_channel - First observed
youtube_disconnect_channel - First observed
youtube_get_channel_analytics - First observed
youtube_get_channel_overview - First observed
youtube_get_comments - First observed
youtube_get_recommendation_history - First observed
youtube_get_video_analytics - First observed
youtube_get_video_details - First observed
youtube_list_channels - First observed
youtube_list_videos - First observed
youtube_recommend_publishing_time - First observed
youtube_search_videos - First observed
youtube_set_default_channel
TDQS
Scored across 15 tools
Tools split cleanly into four groups: connection management, library browsing, analytics, and recommendations. Most boundaries are clear, but the analytics cluster has mild overlap risk — get_channel_analytics vs analyze_channel_performance (the latter is a composite that calls the former) and get_video_analytics vs compare_videos require reading descriptions to pick correctly. list_videos vs search_videos could also be confused at a glance, though the quota note helps.
Every tool follows the same youtube_<verb>_<noun> snake_case pattern, with predictable verb families (connect, list, set, get, search, analyze, recommend, compare). No camelCase or style drift anywhere in the set.
15 tools is at the top of the ideal band and each one maps to a distinct user-facing job — connection lifecycle, video browsing, channel/video analytics, and recommendations. Nothing feels padded, and the composite analyze_channel_performance earns its place by tying the others together.
The surface covers the full connection lifecycle plus the read-only insight workflows the server explicitly scopes itself to (OAuth read-only), so core jobs have no dead ends. Minor gaps remain: no playlist or subscription inspection, no video metadata update, and no way to drill into comment replies, all of which an agent might reasonably expect from a creator-analytics server.
Maintenance
Related MCP Connectors
Google Search Console, GA4 and PageSpeed MCP server for Claude, ChatGPT and Cursor. Free, hosted.
AI YouTube analyst in Claude for creators: audit, fix, decide what to make next, grow subs.
Your YouTube channels’ private analytics for AI assistants: revenue, views, retention. Read-only.
Hosted MCP server for marketing agencies: connect Google Ads, GA4, Search Console, Meta, LinkedIn and more to Claude or ChatGPT. Pull reports and make changes via OAuth login, no setup.
Related MCP Servers
- AlicenseAqualityCmaintenanceA comprehensive MCP server that provides Claude AI with full access to YouTube content, including searchable transcripts, metadata, comments, and playlists. It uniquely supports capturing video screenshots and extracting audio clips for analysis across both local and remote platforms.532 npm3MIT
- AlicenseNot gradedqualityDmaintenanceA local MCP server that connects Claude to your YouTube channel, enabling video analysis, performance tracking, comment reading, and niche suggestions.32 npmMIT
- AlicenseAqualityDmaintenanceA local-first MCP server for inspecting and managing a creator-owned YouTube channel, using Google's official YouTube Data API v3 and Analytics API.1013 npmMIT
- AlicenseNot gradedqualityCmaintenanceA local, privacy-first MCP server providing direct access to official YouTube Data, Analytics, Reporting, and Live Streaming APIs for creators, enabling channel analysis, research, and guarded management operations.3MIT