yt-studio-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VAULTPROXY_URL | No | URL of vaultproxy server for vaultproxy backend | |
| YT_MCP_SECRETS | No | Secrets backend: file (default), env, or vaultproxy | |
| YT_MCP_CLIENT_ID | No | OAuth client ID for env backend | |
| YT_MCP_CLIENT_SECRET | No | OAuth client secret for env backend | |
| YT_MCP_REFRESH_TOKEN | No | OAuth refresh token for env backend |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| channel_infoB | Get the authorized channel's profile, statistics, and uploads playlist id. |
| list_videosC | List the channel's uploaded videos, newest first, with basic stats. |
| get_videoB | Get full metadata and statistics for one video. |
| update_videoA | Update video metadata. Only supplied fields change; others are preserved. |
| set_thumbnailC | Set a custom thumbnail from a local image file (JPG/PNG, <2MB). |
| upload_videoC | Upload a video (resumable). privacy: private|unlisted|public. publish_at (RFC3339) schedules publication and requires privacy=private. |
| delete_videoB | Permanently delete a video. Irreversible. |
| list_playlistsC | List the channel's playlists. |
| create_playlistB | Create a playlist. privacy: public|unlisted|private. |
| delete_playlistB | Delete a playlist (videos are not deleted). |
| add_to_playlistC | Add a video to a playlist, optionally at a specific position. |
| remove_from_playlistA | Remove an item from a playlist by playlist-item id (from list results). |
| list_playlist_itemsC | List videos in a playlist. |
| list_commentsB | List comment threads for one video, or channel-wide when video_id is omitted. |
| post_video_questionA | Post a top-level comment on a video as the channel (e.g. a question prompt for viewers). Note: the API cannot pin comments — pin manually in YouTube Studio if desired. |
| reply_to_commentC | Reply to a comment as the channel. |
| moderate_commentC | Set moderation status: published | heldForReview | rejected. |
| mark_spamC | Flag a comment as spam. |
| delete_commentB | Delete a comment authored by the channel (own comments only). |
| list_broadcastsC | List live broadcasts. status: all|active|upcoming|completed. |
| create_broadcastC | Schedule a live broadcast. start_time is RFC3339 (e.g. 2026-08-01T18:00:00Z). |
| list_streamsC | List reusable stream keys and their health. |
| bind_broadcastC | Bind a broadcast to a stream key. |
| live_chat_messagesA | Read messages from a live chat (chat_id from list_broadcasts). |
| post_chat_messageC | Post a message to a live chat as the channel. |
| delete_chat_messageC | Delete a live chat message. |
| ban_chat_userC | Ban a user from live chat; temporary when duration_seconds given, else permanent. |
| list_captionsB | List caption tracks on a video. |
| upload_captionC | Upload a caption track (SRT/VTT file). |
| download_captionA | Download a caption track's text. fmt: srt|vtt. |
| channel_reportC | Channel analytics between start/end (YYYY-MM-DD). |
| video_reportB | Per-video analytics between start/end (YYYY-MM-DD). |
| top_videosB | Top videos by views between start/end (YYYY-MM-DD). |
| collect_entriesA | Collect giveaway entries: walk every upload's comments in the window (RFC3339 timestamps), one entry per distinct video per commenter, capped per user. Writes an auditable snapshot file and returns its hash. |
| draw_winnersA | Deterministically draw n winners (distinct channels) from a snapshot. Same snapshot + seed always reproduces the same winners. Writes an audit record next to the snapshot. |
| make_verification_codeC | Generate a short verification code for a winner and record it in the audit file. |
| check_verification_replyB | Verify a winner's reply: fetches the comment and checks it was authored by the winning channel and contains their verification code. |
| export_entries_csvA | Export a snapshot's entries to CSV (channel_id, author, video_id, comment_id, published) for spreadsheets or records. |
| winner_announcementA | Draft winner-announcement text (for a pinned comment / community post) from a draw's audit record. Review before posting. |
| post_winner_replyC | Reply to a winning comment as the channel (winner announcement/notification). |
| banned_words_listA | Show the managed banned-word list used by scan_comments. |
| banned_words_addC | Add words/phrases to the banned list. |
| banned_words_removeC | Remove words from the banned list. |
| scan_commentsA | Sweep comments (one video, or channel-wide when video_id omitted) for banned words. auto_action: none | heldForReview | rejected — matches get that moderation status applied (dry_run previews instead). incremental=True only examines comments newer than the previous incremental scan (watermark stored locally) — cheap to run daily. |
| batch_update_descriptionsA | Update descriptions across many videos in one sweep. mode=append: add text at the end (skips videos that already contain it).
mode=footer: everything after the last "---" marker line is replaced
with text (marker added if missing) — ideal for a links/giveaway
footer kept in sync across all videos.
mode=replace: replace occurrences of |
| made_for_kids_auditA | Audit every upload's made-for-kids designation (COPPA). Reports both the platform-effective flag and the self-declared one per video. |
| post_stream_digestA | Channel performance digest for a date window (YYYY-MM-DD): totals, per-day trend, and top videos — run it the morning after a stream. |
| post_giveaway_questionA | Post the formatted giveaway question comment (unique question + official-rules link) on a video as the channel. Tracks state locally and refuses to double-post unless force=True. Result includes the Studio URL for the one-click manual pin (no pin API exists). |
| giveaway_question_statusA | Cross-reference every upload against posted question comments: which videos still need one, which are posted (with pin links). |
| quota_statusA | Quota units spent this session (local estimate from the official cost table). |
| health_checkA | Verify stored credentials refresh and the channel is reachable. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aaronckj/yt-studio-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server