mateai-youtube
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| yt_channel_snapshotA | Fetch live YouTube channel statistics, recent long-form videos, and Shorts metrics, and write an updated local report.html dashboard and channel_snapshot.json cache on disk. When YouTube OAuth2 credentials are present (and force_public is false), queries YouTube Data API v3 (~3 quota units) and YouTube Analytics API v2 for private owner metrics (averageViewPercentage, swipedAwayRate, engagedViews, estimatedMinutesWatched, subscribersGained); public page scraping is opt-in only (force_public=true or MATEAI_YT_PUBLIC_SCRAPE=1); without OAuth or opt-in it returns setup instructions. Overwrites report.html idempotently on each run. |
| yt_shorts_experiment_tableA | Generate a GitHub-Flavored Markdown comparison table of the channel's YouTube Shorts ordered newest-first with columns for Publish Date, Title, Views, Viewed vs Swiped Away %, Average % Viewed, Engaged Views, and Subscribers Gained. Pulls live data from YouTube Data API v3 + YouTube Analytics API v2 when OAuth2 is configured (or public channel pages when unauthenticated, where private retention columns are shown as '—'). Returns a 'No Shorts found' notice if the channel has no Shorts. |
| yt_video_detailsA | Fetch public video metadata plus owner-authorized YouTube Analytics retention diagnostics for a single 11-character video_id: 100-point elapsedVideoTimeRatio audience retention curve, exact MM:SS drop-off cliffs, relativeRetentionPerformance peer percentiles, and traffic source breakdown. Retention curve and traffic diagnostics require channel-owner OAuth2 (a studioDiagnosisError explains a missing scope). Public page metadata (title, views, likes) is scraped only when force_public=true or MATEAI_YT_PUBLIC_SCRAPE=1. When words_or_script_path is provided, maps each retention drop-off cliff onto the exact spoken words at that timestamp. |
| yt_upload_draftA | Upload a local MP4/MOV video file to YouTube Studio via YouTube Data API v3 (videos.insert, costs ~1,600 daily quota units) and optionally attach a custom thumbnail (thumbnails.set) and top-level pinned comment (commentThreads.insert). Requires channel OAuth2 with youtube.upload scope. Non-idempotent: each call creates a new YouTube video resource and returns {videoId, studioUrl, watchUrl, privacyStatus, publishAt}. Defaults to privacy_status='private' (unpublished draft); when publish_at (ISO 8601 future timestamp) is provided, privacy_status is forced to 'private' until YouTube automatically publishes the video at publish_at. Inline parameters (title, description, tags, hashtags, pinned_comment) override values parsed from spec_path. |
| yt_update_videoA | Perform a partial, idempotent update on an existing YouTube video's metadata, visibility, schedule, or custom thumbnail in YouTube Studio via YouTube Data API v3 (videos.list + videos.update, costs ~51 quota units). Requires channel-owner OAuth2. Fetches current snippet/status first so omitted parameters (title, description, tags, privacy_status, publish_at) are preserved unchanged rather than cleared. Setting publish_at automatically forces privacy_status='private' as required by YouTube's scheduling API. Returns {videoId, studioUrl, updatedFields}. |
| yt_post_commentA | Post a public top-level comment thread on a YouTube video or Short via YouTube Data API v3 (commentThreads.insert, costs ~50 daily quota units). Requires OAuth2 with youtube.force-ssl scope. Non-idempotent: each call publishes a new visible comment immediately under the authenticated channel identity and returns {commentId, videoId, text}. Fails if comments are disabled on the target video or the video is private. |
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 6 tools
Each tool maps to a distinct action: publish comment, upload, update, single-video diagnostics, channel dashboard, and Shorts comparison table. The only mild overlap is between yt_channel_snapshot (which includes Shorts metrics and writes report.html) and yt_shorts_experiment_table (which renders a Shorts comparison table), but the differing outputs and side effects keep them separable.
All tools share a consistent yt_ prefix and snake_case convention. However, half the set uses verb_noun phrasing (yt_post_comment, yt_update_video, yt_upload_draft) while the others use noun phrases (yt_channel_snapshot, yt_video_details, yt_shorts_experiment_table), a minor deviation from a single predictable pattern.
Six tools is well within a healthy scope and each covers a clearly different workflow (publish, upload, update, analyze one video, analyze the channel, compare Shorts). Nothing feels redundant or padded.
The surface covers upload, metadata update, video-level diagnostics, channel snapshot, Shorts comparison, and comment posting, so the main creation/read/update flows exist. But there is no delete/remove operation, no ability to read or reply to existing comments (only post new ones), and no way to list or search videos directly, leaving several likely agent workflows as dead ends.