Channel Brains
Channel Brains is a local MCP server that indexes a YouTube channel's public captions into an on-machine SQLite FTS5 database so an AI agent can search spoken content and cite exact timestamps.
Index a channel (
create_brain): validate a channel URL, persist a brain, and start resumable ingestion of up to 50 videos by view count (configurablemax_videos,language).Track progress (
get_brain_status): snapshot counts (discovered, indexed, skipped, failed, chunks) for one or all brains, optionally waiting until terminal — never contacts YouTube.Browse videos (
list_brain_videos): page through selected videos with status, view count, caption source/language, and any error.Search captions (
search_brain): ranked lexical FTS5 hits with a YouTube link to the exact second — evidence only, no generated answers.Read transcripts (
get_video_transcript): page through stored caption chunks for a single indexed video with timestamps.Delete a brain (
delete_brain): permanently remove a brain and its local records, requiresconfirm=true, refuses while ingestion is active.Stay local and keyless: no API key, cloud account, embeddings, or LLM runtime; only public yt-dlp requests, one channel job at a time under a cross-process lock.
Handle rate limits: pauses cleanly on HTTP 429 and resumes on a repeated
create_braincall; optional browser-cookie or proxy configuration.Safeguard the agent: results include untrusted-content warnings and presentation instructions for citation.
Indexes publicly available YouTube captions into a searchable local SQLite database, providing tools to create channel brains, search caption chunks with timestamped citations back to the original videos, and retrieve video transcripts.
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., "@Channel BrainsCreate a brain for https://www.youtube.com/@OpenAI"
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.
Channel Brains
Tell your AI to install it. It does.
Channel Brains is a local MCP server that indexes the public captions of any YouTube channel into a searchable database on your own machine — then lets your AI coding agent query it with timestamped citations back to the exact second of video.
No API key. No cloud. No account. It runs entirely on your computer.
Using ChatGPT instead? See Also on ChatGPT.
Paste this into your local AI coding agent (Codex, Claude Code, ZCode, or Hermes):
Get this on yourself: https://github.com/Pu11en/channel-brains
That's the whole instruction. The agent identifies its own client, installs the right plugin, and verifies the six tools. You don't need to know what MCP or a plugin marketplace is.
Why
Every podcast, lecture, and dev stream is a library of knowledge — but video is unsearchable. Channel Brains turns a channel's spoken content into a database your agent can cite. Ask a question, get the answer with a link to the exact moment someone said it.
Related MCP server: tubescribe-mcp
See it
Point Channel Brains at a channel, wait for it to index, then search. Here it is searching Matt Pocock's channel for "generics" — note the timestamped citation back to the source video:
$ channel-brains search_brain --brain-id 8c45c891e781 --query "generics"
rank 1 · Generics: The most intimidating TypeScript feature
https://youtu.be/dLPgQRbVquo?t=0 (0:00)
"…we are going to be focusing on 10 tips to make you a master of
typescript generics… they give you the power to make abstractions, to make
your code a lot more DRY…"
rank 2 · A Complete Guide To Vercel's AI SDK
https://youtu.be/mojZpktAiYQ?t=965 (16:05)
"…use generateObject instead of generateText… we pass it a schema with a
Zod schema…"
rank 3 · Generics: The most intimidating TypeScript feature
https://youtu.be/dLPgQRbVquo?t=45 (0:45)Every result links to the precise second the words were spoken. Your agent gets grounded, quotable evidence — not a hallucination.
How it works
You give your agent a channel URL.
Channel Brains ingests the public captions via
yt-dlp(no API key), selecting up to 50 videos by view count, and stores them in a local SQLite FTS5 database.Ingestion is resumable and rate-limit-aware — it pauses cleanly on HTTP 429 and picks up where it left off.
Your agent searches that database and returns matches with timestamped YouTube links.
The local version is deliberately small:
No hosted service, Docker, browser dashboard, embeddings, or LLM runtime
No YouTube API key, database server, or cloud account
One local SQLite database per user, protected by a cross-process ingestion lock
One channel ingestion job at a time, with resumable per-video progress
The only network requests are public YouTube requests made by
yt-dlpduring ingestion
Install
The easy way — paste this to your local AI coding agent and let it install itself:
Get this on yourself: https://github.com/Pu11en/channel-brains
The manual way — requires uv. MCP clients launch the pinned production release with:
uvx --from "git+https://github.com/Pu11en/channel-brains@v0.1.4" channel-brains-mcpVerify the installation without starting the MCP server or contacting YouTube:
uvx --from "git+https://github.com/Pu11en/channel-brains@v0.1.4" channel-brains-mcp --checkA successful check prints one JSON object with "status": "ok", "transport": "stdio", and "tool_count": 6.
Locally, the server communicates only through standard input and output. Do not run it as an HTTP service yourself. HTTP mode exists only for the hosted ChatGPT version.
Note: Installation requires a local AI coding agent (Codex, Claude Code, ZCode, or Hermes) that can run commands on your computer. A web-only chat (ChatGPT, Claude.ai) cannot install a local MCP server. ChatGPT users can use the hosted version below.
Also on ChatGPT
A hosted version of Channel Brains is available as a ChatGPT plugin. It is pending review in OpenAI's plugin directory.
It runs on our server, not your computer. You sign in with an account.
Each account keeps its own brains, up to 3. Other accounts cannot see them.
It has the same tools except
get_video_transcript, plusget_profile, which returns an opaque account ID. Searches return short cited excerpts, not whole transcripts.Privacy policy: https://channel-brains-production.up.railway.app/privacy
Terms: https://channel-brains-production.up.railway.app/terms
The six tools
Channel Brains exposes exactly these six tools to your agent:
Tool | Purpose |
| Validate a channel URL, persist a brain, and start local ingestion. |
| Read a snapshot or wait locally for completion, with progress and no YouTube requests. |
| Page through indexed, skipped, pending, and failed video records. |
| Search local FTS5 caption chunks and return timestamped YouTube citations. |
| Page through stored caption chunks for one indexed video. |
| Remove a completed brain and all its local records. Active ingestion is refused. |
First workflow
Add the server to an MCP client using the install method above.
Call
create_brainwith a supported YouTube channel URL, such ashttps://www.youtube.com/@OpenAI.Immediately call
get_brain_statusonce withwait_until_terminal=trueand keep the same turn active until it returns.Use
search_brainto retrieve timestamped caption matches.
The initial ingestion scans the complete channel listing so it can select up to 50 videos by view count. Caption availability and YouTube rate limits determine how much can be indexed.
Configuration
Local data and privacy
By default, Channel Brains stores its SQLite database and lock file in the platform's user-data directory:
Windows:
%LOCALAPPDATA%\channel-brains-mcpmacOS:
~/Library/Application Support/channel-brains-mcpLinux:
~/.local/share/channel-brains-mcp
Set CHANNEL_BRAINS_HOME before launching the MCP server to use another location:
CHANNEL_BRAINS_HOME=/path/to/channel-brains-data uvx --from "git+https://github.com/Pu11en/channel-brains@v0.1.4" channel-brains-mcpCaptions and search indexes stay on the local machine. The only network requests are
public YouTube requests made by yt-dlp and caption URL retrieval during ingestion.
YouTube rate limits
Channel Brains uses paced requests and bounded retries. If YouTube keeps limiting
requests, the brain pauses with its progress saved. Wait a while, then call
create_brain again with the same channel URL to resume.
Manual MCP client configuration
The automated install above covers Codex, Claude Code, ZCode, and Hermes. For any other MCP client, the generic server definition is:
{
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Pu11en/channel-brains@v0.1.4",
"channel-brains-mcp"
]
}Use a startup/connect timeout of at least 60 seconds. The first uvx run downloads
the pinned package and can be slower than later starts.
Per-client configuration snippets (Hermes YAML, Codex TOML, ZCode/OpenCode JSON) are
in docs/clients.md.
For AI agents
The automated agent installation flow is fully specified in
AGENT_INSTALL.md. If you are an agent that has been asked to
install this repository, read that file completely and execute the matching client
procedure. Do not start YouTube ingestion during installation; wait for an explicit
channel URL and indexing request.
Development and verification
uv sync --extra dev --locked
uv run ruff check .
uv run pytest
uv buildThe default test suite is fully offline. The manual live release gate exercises a real channel through caption ingestion and timestamped local search:
uv run pytest -m live tests/test_live_youtube.pyOverride the default channel when needed:
CHANNEL_BRAINS_LIVE_CHANNEL=https://www.youtube.com/@OpenAI uv run pytest -m live tests/test_live_youtube.pyYouTube requests are paced. HTTP 429 responses receive bounded retries and then pause
the brain without losing completed work. Call create_brain again later with the same
channel URL to resume.
Limitations
Public YouTube captions can be unavailable, expired, restricted, or rate-limited. No local client can guarantee that an external YouTube request succeeds 100% of the time; Channel Brains guarantees bounded behavior, resumable progress, and explicit status when YouTube refuses a request.
Search is lexical SQLite FTS5 search, not semantic search or an answer-generation system.
The server indexes captions only. It does not download videos, reuse video footage, or create a knowledge graph.
A channel can contain many videos. The first local ingestion may take time.
Brand assets
The brand mark is the red video badge with a white top-view brain ("Top Brain"). Files live in logos/final/:
channel-brains-mark.svg— primary mark (vector), withmark-whiteandmark-monovariantspng/mark-512.png— raster marks from 512 px down to 16 px, plusfavicon.icochannel-brains-icon.svg/png/icon-512.png— squircle app icon (also 192 px and 180 px apple-touch)channel-brains-lockup.svg/png/lockup-1200.png— badge + "Channel Brains" wordmark lockup, with a white version for dark backgroundsbrand-sheet.png— one-image overview
Concept history from the design rounds is in the git history.
License
MIT. © Drew Pullen. See LICENSE.
Available Tools
6 toolscreate_brainB
Explicitly queue or resume local channel caption indexing.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | en | |
| max_videos | No | ||
| channel_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| queued | Yes | |
| status | Yes | |
| message | Yes | |
| brain_id | Yes | |
| language | Yes | |
| max_videos | Yes | |
| normalized_url | Yes | |
| do_not_poll_automatically | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It only states the action is to queue or resume indexing, without revealing side effects, permissions, idempotency, or potential impact on existing data. This is insufficient for a mutation-like tool.
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?
The description is a single concise sentence with no redundant words. It front-loads the action clearly and is appropriately sized for the information it conveys.
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?
Given the tool has three parameters and no annotations, the description is too sparse. It omits parameter semantics, call behavior (e.g., what happens on repeated calls), and prerequisites. Although an output schema exists, the description still leaves significant gaps for a mutation 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?
The schema description coverage is 0%, and the description does not mention any of the three parameters (channel_url, language, max_videos). The description adds no clarity about how these parameters influence the indexing behavior, leaving the agent without guidance.
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 clearly states the action ('Explicitly queue or resume') and the resource ('local channel caption indexing'), which is specific and distinguishes it from sibling tools that handle status, listing, search, transcript, and deletion. The name 'create_brain' is ambiguous, but the description resolves it by explaining the actual behavior.
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 'Explicitly queue or resume' implies this tool is for manually triggering indexing, but it does not state when to use it versus alternatives, nor does it mention prerequisites or exclusions. There is no explicit guidance on when to prefer this over sibling tools like get_brain_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_brainA
Permanently delete one brain only with confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| brain_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes | |
| message | Yes | |
| brain_id | Yes | |
| deleted_chunk_count | Yes | |
| deleted_video_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that deletion is permanent and requires confirm=true, which are critical behavioral traits for a destructive operation.
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?
The description is a single sentence, front-loaded with the verb and resource, containing no redundant words.
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?
Given the tool's simplicity, an output schema exists, and the description covers the permanent nature and confirmation gate. It lacks ownership/permission details but is sufficient for basic usage.
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 0%, so the description must compensate. It clarifies that confirm must be true to execute deletion, adding meaning beyond the schema's default false. brain_id is implicit via 'one brain' and the schema title.
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 clearly states 'permanently delete one brain' which is a specific verb+resource. It distinguishes from sibling tools like create, list, search, and transcript.
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 purpose is implied and the confirm=true requirement is a clear usage condition, but there is no explicit comparison to alternatives or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_brain_statusA
Read progress for one brain, or all local brains. Never contacts YouTube.
| Name | Required | Description | Default |
|---|---|---|---|
| brain_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| brains | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the burden of behavioral disclosure. It discloses that it reads (read-only), works locally without contacting YouTube, and handles one or all brains based on the parameter. This is valuable context, though it doesn't discuss potential errors, performance, or data formats; however, the output schema covers return structure, so this is sufficient.
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?
The description is two short sentences. The first front-loads the action and scope; the second adds a crucial constraint. Every word earns its place with no fluff or repetition of schema information. It is concise and well structured.
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?
Given the tool's simplicity (one optional parameter) and the presence of an output schema, the description covers the essential information: purpose, parameter semantics, and a key behavioral trait (no YouTube contact). The output schema handles return values, and sibling tools provide broader context, so the description is complete for an agent to invoke correctly.
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 schema has one optional parameter with zero description coverage, but the description explicitly explains the parameter's effect: providing a brain_id reads one brain, while omitting it reads all local brains. This fully compensates for the schema's lack of detail and gives the agent clear guidance on how to use the parameter.
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 clearly states the tool reads progress (specific verb) for either a single brain or all local brains (resource and scope). It distinguishes from siblings by focusing on progress/status rather than creation, listing, search, or deletion, and adds a unique behavioral note (never contacts YouTube).
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 provides clear context: use this to read progress for one or all local brains, without contacting YouTube. It implies when to choose this over alternatives (when you need status) and gives a constraint (never contacts YouTube), but it doesn't explicitly mention alternatives or exclusions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_transcriptA
Page through indexed caption chunks for one video. Never contacts YouTube.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| brain_id | Yes | ||
| video_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| limit | Yes | |
| total | Yes | |
| chunks | Yes | |
| offset | Yes | |
| brain_id | Yes | |
| video_id | Yes | |
| next_offset | No | |
| video_title | Yes | |
| untrusted_content_warning | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses a key behavioral trait: 'Never contacts YouTube,' indicating a local read operation with no network calls. It also implies pagination via 'Page through,' but doesn't address error handling, auth, or what happens if the video isn't indexed.
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?
The description is two short sentences, with the main action in the first sentence and a critical caveat in the second. It's front-loaded and contains no 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 a simple paginated getter, the description covers the core behavior and an important limitation (never contacts YouTube). The presence of an output schema covers return shape details, and the required parameters are in the schema. However, it lacks context about what a 'brain' is and how video_id relates to the index.
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 0% and the description provides no explicit parameter explanations. 'For one video' hints at the video_id parameter and 'Page through' hints at limit/offset, but brain_id is left unexplained. The description does not compensate for the lack of schema descriptions.
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 uses a specific verb 'Page through' and identifies the resource as 'indexed caption chunks for one video.' It clearly distinguishes this from sibling tools like search_brain or list_brain_videos by focusing on retrieving transcript content for a single video.
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 gives clear context that this tool retrieves captions from an index, and the statement 'Never contacts YouTube' implies it's the offline/local option compared to potential live fetch alternatives. However, it doesn't explicitly say when to use it over search_brain or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_brain_videosB
Page through selected videos and outcomes. Never contacts YouTube.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| brain_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| limit | Yes | |
| total | Yes | |
| offset | Yes | |
| videos | Yes | |
| brain_id | Yes | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does add value by stating 'Never contacts YouTube', which is a meaningful constraint. However, it does not mention permissions, side effects, or other behavioral traits, so disclosure is only partial.
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?
The description is extremely concise, consisting of two short sentences. Both sentences contribute meaning: the first states the operation and target, the second adds a key constraint. No filler or redundancy.
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), and the description adequately describes what the tool lists and that it doesn't contact YouTube. However, it lacks usage context and does not clarify what 'selected' means or how this relates to the brain_id parameter, leaving some ambiguity for the agent.
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 0%, and the description provides almost no parameter detail. 'Page through' hints at limit/offset, and 'selected videos' may imply brain_id selection, but the description does not clearly map each parameter or explain the required brain_id semantics.
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 uses the specific verb 'Page through' and clearly identifies the resource as 'selected videos and outcomes', distinguishing it from siblings like search_brain and get_video_transcript. The additional 'Never contacts YouTube' clarifies that this is a local listing operation, not an external API call.
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 gives no explicit guidance on when to use this tool versus search_brain or get_video_transcript. It implies a listing use case but does not state exclusions or alternatives, leaving the agent to infer the appropriate context from the name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_brainB
Return ranked, timestamped caption evidence. Never generates an answer or contacts YouTube.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| brain_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| results | Yes | |
| brain_id | No | |
| brain_statuses | Yes | |
| presentation_instruction | Yes | |
| untrusted_content_warning | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses two important behavioral constraints: it never generates an answer and never contacts YouTube. However, it omits other behavioral details such as pagination, sorting, or error handling, so transparency is adequate 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?
The description is two sentences with no filler. Both sentences convey meaningful constraints and purpose, making it highly concise and well-structured.
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 has three parameters and no annotations, yet the description offers minimal guidance. Even with an output schema, the lack of parameter semantics and usage context leaves the agent under-equipped to invoke the tool correctly.
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 0%, and the description provides no explanation of query, limit, or brain_id. The agent must infer semantics solely from parameter names and defaults, which is insufficient.
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 clearly states the tool returns ranked, timestamped caption evidence, which is a specific verb+resource combination. It also explicitly distinguishes itself from answer-generating tools and YouTube contact, differentiating it from siblings like get_video_transcript.
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 provides implied context (retrieval-focused, not answer generation) but gives no explicit when-to-use guidance or named alternatives. It doesn't say when to prefer search_brain over list_brain_videos or get_video_transcript.
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.
6 tool updates
v0.1.2- First observed
create_brain - First observed
delete_brain - First observed
get_brain_status - First observed
get_video_transcript - First observed
list_brain_videos - First observed
search_brain
TDQS
Scored across 6 tools
Each tool targets a distinct operation: creation, status, listing, search, transcript retrieval, and deletion. No two tools overlap in purpose, so agents can easily distinguish them.
All tools follow a consistent verb_noun snake_case pattern (e.g., create_brain, delete_brain, get_video_transcript). The repeated verb 'get' is used clearly for different resource types.
Six tools form a compact, focused set for a YouTube caption indexing server. Each tool serves a clear role without bloat or redundancy.
The server covers the full lifecycle: create (index) a brain, check status, list videos, search captions, retrieve transcripts, and delete. No essential operation appears missing for its stated purpose.
Maintenance
Related MCP Connectors
An MCP server that gives any LLM or agent clean YouTube transcripts on demand: a single video, a whole channel, or a playlist, plus AI cleanup of auto-generated captions. API-key auth, credit-based, same backend as the public v1 API. Get a free API key with 25 free credits at youtubetranscriptdownload.com/account.
YouTube transcripts, search, channel browsing, and playlists for AI agents via MCP.
An MCP server that provides congressional transcripts
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA local MCP server for extracting YouTube video transcripts, metadata, and performing visual analysis using Gemini Vision or local Whisper models. It enables users to process video content through various tools for subtitle retrieval and frame analysis.21 npmMIT
- AlicenseNot gradedqualityCmaintenanceMCP server for fetching YouTube video transcripts without an API key.GPL 3.0
- FlicenseNot gradedqualityCmaintenanceA Streamable HTTP MCP server that fetches YouTube transcripts and lets an LLM semantically search within them.-
- AlicenseAqualityCmaintenanceMCP server that ingests YouTube videos and podcasts, making them searchable with timestamps and deep links to exact moments.65MIT