youtube-kit
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YOUTUBE_API_KEY | No | API key for public data | |
| YOUTUBE_CHANNEL | No | Channel to work on by default (UC… ID, @handle or exact title), overriding `ytk auth switch` | |
| YOUTUBE_TOKEN_DIR | No | Directory of stored logins, one file per channel | |
| YOUTUBE_CONFIG_FILE | No | Path to config.toml (delete limits) | |
| YOUTUBE_CLIENT_SECRETS | No | Path to the OAuth client JSON |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_analyticsA | 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. |
| setup_guideA | 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. |
| get_channelA | Channel metadata, statistics, and uploads playlist ID. Quota: 1 unit. |
| list_my_channelsA | 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. |
| list_activitiesB | A channel's recent activity feed (uploads, playlist additions, and the like). Quota: 1 unit per page of up to 50 results. |
| list_sectionsB | The sections on a channel's home page. Quota: 1 unit. |
| list_commentsA | Top-level comments on a video, or on all of your channel's videos. Quota: 1 unit per page of up to 50 results. |
| list_repliesC | Replies to a top-level comment. Quota: 1 unit per page of up to 50 results. |
| list_playlistsC | A channel's playlists. Quota: 1 unit per page of up to 50 results. |
| get_playlistsB | Metadata of one or more playlists: title, description, privacy, and item count. Quota: 1 unit. |
| list_playlist_itemsA | 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. |
| searchA | Search YouTube for videos, channels, or playlists. Quota: 100 units per page of up to 50 results. |
| list_subscriptionsA | Channels the authorized user is subscribed to. Quota: 1 unit per page of up to 50 results. |
| get_videosA | 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. |
| get_my_ratingsB | Whether the authorized user liked or disliked each video. Quota: 1 unit. |
| list_video_categoriesA | Video categories that can be assigned to uploads in a region, with the IDs to pass as category_id. Quota: 1 unit. |
| get_processing_statusB | Whether YouTube has finished processing one of your uploads. Quota: 1 unit. |
| update_channelA | Change your channel's about info. Only the fields you pass change. The name can only be changed in Studio. Quota: 51 units. |
| set_channel_bannerA | Upload and set your channel's banner. Use a 16:9 image of at least 2048x1152, at most 6 MB. Quota: 101 units. |
| set_watermarkA | Set the watermark shown over all your videos, replacing any current one. Viewers click it to subscribe. Quota: 51 units. |
| remove_watermarkA | Remove the watermark from your videos. Succeeds when there is none. Quota: 51 units. |
| add_sectionA | Add a section to your channel's home page. A channel has at most 10. Quota: 52 units. |
| update_sectionA | Change a section on your channel's home page. Only the fields you pass change. Quota: 51 units. |
| delete_sectionA | Delete a section from your channel's home page. Its playlists and videos are not affected. Quota: 50 units. |
| post_commentB | Post a top-level comment on a video as the authorized user. Quota: 50 units. |
| reply_to_commentB | Reply to a top-level comment as the authorized user. Quota: 50 units. |
| edit_commentB | Replace the text of one of your own comments or replies. Quota: 50 units. |
| delete_commentA | 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. |
| approve_commentsA | Publish comments on your videos that are held for review or marked as likely spam. Quota: 50 units. |
| hold_commentsA | Hide comments on your videos until you review them. Quota: 50 units. |
| reject_commentsA | Reject comments on your videos, hiding them from viewers. They can still be approved later. Quota: 50 units. |
| create_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. |
| update_playlistB | Change one of your playlists. Only the fields you pass change. Quota: 51 units. |
| delete_playlistA | 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. |
| add_video_to_playlistA | Add a video to a playlist on the authorized user's channel. Quota: 50 units. |
| remove_from_playlistA | Remove a video from one of your playlists, every time it appears. The video itself is not affected. Quota: 51 units. |
| move_in_playlistA | Move a video to another position in one of your playlists. Quota: 51 units. |
| set_playlist_thumbnailA | Set the custom thumbnail of one of your playlists, replacing any current one. Quota: 101 units. |
| subscribeA | Subscribe the authorized user to a channel. Already being subscribed is fine. Quota: 51 units. |
| unsubscribeA | Unsubscribe the authorized user from a channel. Not being subscribed is fine. Quota: 51 units. |
| rate_videoA | Like or dislike a video as the authorized user, or clear the rating with none. Quota: 50 units. |
| upload_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: 1607 units. |
| update_videoA | Change a video's metadata. Only the fields you pass change; the rest keep their values. Quota: 51 units. |
| set_thumbnailA | Set a video's custom thumbnail. The channel must be verified. Quota: 50 units. |
| delete_videoA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 45 tools
Most tools target distinct resources and actions, but there is overlap between list_playlists and get_playlists, and among approve_comments, hold_comments, and reject_comments. These boundaries are clarified by descriptions, but an agent could still occasionally misselect.
Nearly all names use a predictable snake_case verb_noun pattern with consistent prefixes such as get_, list_, update_, delete_, set_, and add_. Minor deviations include setup_guide (not verb_noun) and singular/plural inconsistencies like delete_comment versus approve_comments.
At 45 tools, the server is well above the 25+ threshold for a heavy surface. Although YouTube APIs are broad, many operations could be consolidated or grouped to reduce cognitive load and improve discoverability.
Core channel, video, playlist, comment, subscription, and analytics workflows have strong lifecycle coverage. Notable gaps remain for live streaming, captions, and some playlist-item metadata edits, but most common channel-management tasks are covered.