MCP Tools Reference
The Tube Search MCP server provides 10 tools for searching, reading, and analyzing archived YouTube data.
search_channel
Find all known videos from a YouTube channel by searching web archives.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Channel URL, @handle, or Channel ID (e.g., UC...) |
Returns an array of video metadata including status (LIVE, DELETED, CHECKING).
search_videos
Full-text search across archived video titles and descriptions.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Search query (supports natural language) |
limit | number | No | Max results (default: 20, max: 100) |
status | string | No | Filter by status: live, deleted, all |
sort | string | No | relevance (default) or date-desc |
hasSubtitles | boolean | No | Only videos with subtitles |
hasSummary | boolean | No | Only videos with AI summaries |
get_video
Get metadata for a specific video.
| Parameter | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | YouTube video ID (11 characters) |
Returns: title, description, channelId, channelTitle, duration, uploadDate, viewCount, status, thumbnailUrl, subtitleStatus, hasSummary. For videos enriched via our Yandex.Video provenance pipeline, the response also includes a nested yandex object with the keys internal_id, attribution, preview_url, and scanned_at — see the Yandex Enrichment Provenance subsection below.
Yandex Enrichment Provenance
When get_video returns a nested yandex object, the yandex.attribution field is one of three trust tiers. Use the table below to decide whether to cite a fact about this video directly or seek a second source.
Tier (yandex.attribution value) | Recommended action | Rationale |
|---|---|---|
db_match | Cite directly | The YouTube ID already existed in our DB attributed to this channel; Yandex provided supplementary metadata (title, duration, upload_date) via NULL-fill. Highest confidence. |
yt_dlp_confirmed | Cite directly | The YouTube ID was newly discovered by Yandex; yt-dlp independently confirmed the channel attribution against YouTube's live metadata. Independent two-source corroboration. |
name_unique_anchor_passed | Corroborate first | The YouTube ID was newly discovered by Yandex; yt-dlp failed or timed out; attribution rests on name-uniqueness plus anchor-verification heuristics (at least 2-of-K LIVE-video title matches). Weaker — confirm with a second source before citing. |
When yandex.preview_url is non-null, it returns a short (~5s) animated MP4 preview clip mirrored from Yandex's snapshot — useful for visual confirmation of what the deleted video looked like, but not equivalent to the original full-length content. When preview_url is null, the metadata fields (title, duration, uploadDate) and attribution are still valid; only the preview mirror was unsuccessful.
get_subtitles
Get the full transcript of a video as readable plain text.
| Parameter | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | YouTube video ID |
Returns the transcript with timestamps stripped, formatted as readable paragraphs. Works for both live and deleted videos that have archived subtitles.
get_summary
Get the AI-generated summary for a video.
| Parameter | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | YouTube video ID |
Returns: tldr, keyPoints (with timestamps), detailedSummary, tags, language. Returns an error if no summary exists — use generate_summary to create one.
generate_summary
Generate an AI summary for a video that has subtitles.
| Parameter | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | YouTube video ID |
Triggers generation and polls until complete (up to 60s). Returns the summary if the video already has one. Counts against your daily summary generation limit.
generate_stenogram
Generate a private stenogram (full-text dialogue with speaker tags) from a video transcript. Requires L3+ tier (MCP + API plan). The output is scoped to your user and visible only to you.
| Parameter | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | YouTube video ID (11 characters) |
language | enum | No | auto (default), en, ru, es, de, pt |
Returns: { stenogram, metadata: { llmModel, tokensUsed, promptVersion, generatedAt, language, generationTimeMs } }. Requires a completed transcript (archived or AI-generated subtitles). Emits notifications/progress if a progress token is provided. Counts against apiStenogramsPerDay (shared with the REST route).
browse_summaries
Browse existing AI summaries with optional filters.
| Parameter | Type | Required | Description |
|---|---|---|---|
tag | string | No | Filter by tag (e.g., "music", "education") |
channelId | string | No | Filter by channel |
language | string | No | Filter by language (e.g., "en", "ru") |
page | number | No | Page number (default: 1) |
limit | number | No | Results per page (default: 20) |
get_video_status_history
View the status change history of a video.
| Parameter | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | YouTube video ID |
Returns an array of status transitions: [{ status, previousStatus, changedAt, source }], newest first.
get_usage
Check your current API usage counters and remaining limits.
No parameters. Returns current counters and limits for searches, FTS queries, subtitle downloads, and summary generations.