bangermap-mcp
Provides tools for YouTube outlier research, allowing agents to scan channels, compute baseline performance, and identify videos that significantly outperform a channel's typical view counts.
Bangermap integrations
YouTube outlier research as installable pieces, each running on your own free YouTube Data API key.
An outlier is a video that beat its own channel's normal performance. A 10x on a small channel is a stronger signal than a million views on a channel that always gets a million, because it is proof an idea worked without an audience behind it. Everything here measures that, and nothing here meters you.
Quick start
Get a free YouTube Data API key from the Google Cloud console, which is two screens and no billing details. Enable YouTube Data API v3, create an API key, and keep it to hand.
Claude Code, one command.
claude mcp add bangermap --env YOUTUBE_API_KEY=your-key -- npx -y bangermap-mcpClaude Desktop, in claude_desktop_config.json.
{
"mcpServers": {
"bangermap": {
"command": "npx",
"args": ["-y", "bangermap-mcp"],
"env": { "YOUTUBE_API_KEY": "your-key" }
}
}
}Any other MCP client works the same way. The server speaks stdio, needs only YOUTUBE_API_KEY in its environment, and starts with no key at all if you just want to inspect its tools.
Related MCP server: SanTech Content Engine MCP Server
Then ask for what you want
The tools are written to be picked by an agent from a plain request, so these all work as typed.
Which of MrBeast's recent uploads overperformed?
Is this video an outlier? https://www.youtube.com/watch?v=...
What is a normal view count for @veritasium?
Compare @mkbhd and @mrwhosetheboss, who is having the better month?
Find channels like @mkbhd and show me what is working across them right now.
The four tools
Every channel argument takes a channel URL, an @handle, a channel id, or the URL of any video on that channel.
Tool | Arguments | What it returns | Quota |
|
| One channel's recent uploads ranked by multiple against its own baseline | ~5 units |
|
| What normal looks like, baseline views, subscribers, uploads in the last 90 days, best recent multiple | ~5 units |
|
| The strongest outliers across several channels, each scored against its own baseline | ~5 units per channel |
|
| Channels featured by the seed channel, then the strongest outliers across all of them | ~5 units per channel found |
A free key carries 10,000 units a day, so roughly 1,100 channel scans.
The skill
The server does the arithmetic. The skill teaches the method, what a baseline is, how to read a multiple, why age changes the answer, and when one outlier is noise. It follows the open Agent Skills format, so it works in any client that reads skills.
In Claude Code, this repo is a plugin marketplace.
/plugin marketplace add AdesiaHQ/bangermap-integrations
/plugin install youtube-outlier-research@bangermapAlso here
Package | What it is |
The MCP server above | |
An n8n community node, the same four operations, one output item per outlier, in its own repo |
The server reads src/lib, the scoring engine and YouTube client it shares with the Bangermap app, its free browser tools and the n8n node. One definition of an outlier, four places it runs, so they cannot disagree.
Why bring your own key
Google gives every account a free YouTube Data API key with 10,000 units a day. Reading a channel costs one unit. Tools that resell those calls as credits are charging for something that is free on your own key, and metering it is the only way that business works.
So there is no account here, no credits, and no server of ours in the middle. Requests go from your machine to googleapis.com.
How the baseline works
For each channel, the baseline is the median views of its 30 most recent uploads of the same format, counting only uploads at least 7 days old, since younger ones are still climbing. Shorts and long-form get separate baselines, split at 180 seconds, since comparing a 40-second Short against a 20-minute upload would flatter one and punish the other. A video's multiple is its views divided by that baseline. Under 5 settled uploads in a format, there is no baseline and nothing is scored.
Discovery runs through the channel graph rather than keyword search. Google caps search at 100 units a call while channel reads cost a single unit, so seeding from a channel you already know is both cheaper and deeper.
The outlier multiple and the baseline are computed here, not by YouTube. View and channel data comes from the YouTube Data API. YouTube is a trademark of Google LLC.
Build and test
cd mcp && npm install && npm run buildThe shared engine's tests run from the root.
npm install && npm testThis repo is generated
It is a path-preserving subset of the Bangermap monorepo, synced by a script. Pull requests are welcome as discussion, but the fix lands upstream and arrives here on the next sync, so nothing committed directly here survives.
The app
Bangermap is a macOS and Windows app for the same research when you want it to persist. It keeps a watchlist that re-scans and flags what is new since your last visit, shows outliers in a thumbnail wall for pattern study, exports to CSV, and caches locally so repeat research does not re-spend quota. One payment, no subscription, same free key.
License
MIT
Available Tools
4 toolschannel_baselineGet a channel's baselineA
Report what normal performance looks like for a YouTube channel, as the median views of its recent settled uploads, with subscriber count and upload cadence. Call this when the user asks whether a view count is good for a given channel, or needs a reference point before judging a video. Costs about 5 quota units.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | Channel URL, @handle, channel id, or any video URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the metric (median views of recent settled uploads), the additional outputs (subscriber count, upload cadence), and even the quota cost. It doesn't cover errors or permission requirements, but provides meaningful transparency beyond the title.
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 concise sentences, with the first front-loading the core purpose and the second giving a clear usage scenario. The cost note is a single add-on. Every piece of information earns its place.
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 one-parameter read-only tool with no output schema and no annotations, the description covers purpose, usage trigger, metric definition, and cost. It doesn't detail exact response structure or edge cases, but it's sufficiently complete for the tool's complexity.
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 parameter schema already provides 100% coverage, describing the accepted formats (URL, @handle, channel id, or any video URL). The tool description adds no parameter-specific details, so the baseline score of 3 applies.
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 what the tool does: it reports a channel's baseline performance as median views of recent settled uploads, along with subscriber count and upload cadence. It also positions this as a reference point for judging video performance, distinguishing it from the sibling tools like find_outliers and compare_channels.
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 explicitly says to call this tool when the user asks whether a view count is good for a channel or needs a reference point before judging a video. However, it doesn't mention when not to use it or name alternative tools, so it falls short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_channelsRank outliers across several channelsA
Scan several YouTube channels at once and return the strongest outliers across all of them, each measured against its own channel's baseline. Call this when the user wants to see what is working across a niche or a set of competitors rather than one channel. Costs about 5 quota units per channel.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | light | |
| limit | No | ||
| channels | Yes | Channel URLs, @handles or ids, separated by spaces, commas or newlines |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It discloses the cost ('Costs about 5 quota units per channel') and explains the normalization basis ('measured against its own channel's baseline'). It implies read-only behavior via 'scan', but does not explicitly confirm non-mutating behavior or describe return format. Overall, it adds meaningful context beyond the schema.
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?
Three short sentences, each serving a distinct purpose: what it does, when to use it, and cost. 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 core function and usage context are clear, and the cost note is helpful. However, with no output schema and two undocumented params (depth, limit), the description leaves significant gaps in understanding the tool's full behavior and return values. It is adequate but not complete.
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 only 33% (only 'channels' has a schema description). The description rephrases 'channels' as 'several YouTube channels' and adds niche/competitor context, but provides no explanation for 'depth' or 'limit'. The enum values for 'depth' (light/standard/deep) remain completely undefined, so the description does not compensate for the low schema coverage.
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's function: 'Scan several YouTube channels at once and return the strongest outliers across all of them, each measured against its own channel's baseline.' This gives a specific verb, resource, and scope, and distinguishes it from single-channel analysis.
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?
Explicit usage guidance is provided: 'Call this when the user wants to see what is working across a niche or a set of competitors rather than one channel.' This clearly indicates when to use it, though it does not name alternative sibling tools explicitly, only contrasts with single-channel use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_outliersFind outlier uploads on a channelA
Rank a YouTube channel's recent uploads by how far each beat that channel's own baseline. Call this when the user wants to know which of a channel's videos overperformed, or wants proven ideas from a specific channel. Runs on the caller's own free YouTube Data API key. Costs about 5 quota units.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | How many recent uploads to read: light 50, standard 100, deep 200 | standard |
| limit | No | How many rows to return | |
| channel | Yes | Channel URL, @handle, channel id, or the URL of any video on the channel |
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 adds useful operational context: 'Runs on the caller's own free YouTube Data API key. Costs about 5 quota units.' However, it does not state whether the operation is read-only, what the output format will be, or any potential side effects, leaving some gaps.
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: two sentences that front-load the purpose, then provide usage and operational context. Every sentence earns its place with no redundancy or 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 tool with three parameters and no output schema, the description covers the essential aspects: core functionality, when to use it, and operational requirements (API key and quota). It does not describe the return format, but the use case is simple enough that the description adequately prepares an 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?
The input schema has 100% description coverage for all three parameters, so the description need not repeat parameter details. The description does not add extra meaning beyond the schema, but the schema is already comprehensive, so a baseline score of 3 is appropriate.
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's function: 'Rank a YouTube channel's recent uploads by how far each beat that channel's own baseline.' It uses a specific verb ('rank') and identifies the resource (YouTube channel uploads) and the comparison basis (own baseline). This distinguishes it from siblings like channel_baseline (computes baseline) and compare_channels (compares channels).
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 explicit when-to-use guidance: 'Call this when the user wants to know which of a channel's videos overperformed, or wants proven ideas from a specific channel.' It does not explicitly state alternatives or when not to use, but the context is clear enough to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sweep_nicheExpand a niche from a seed channelA
Find channels related to a seed channel through the channels it features, then rank the strongest outliers across all of them. Call this when the user wants to discover channels in a niche they do not already know, rather than analyse ones they named. Costs about 5 quota units per channel found.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | Yes | The channel to expand from | |
| limit | No | ||
| max_channels | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It discloses the algorithmic approach (via featured channels, ranking outliers) and practical cost ('Costs about 5 quota units per channel found'), which goes beyond the bare minimum. However, it does not mention potential failure modes or determinism, so it is not exhaustive.
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?
Two sentences, front-loaded with the action, then usage guidance and cost. Every word earns its place with zero fluff.
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 3 parameters, no annotations, and no output schema. The description explains purpose and usage well but leaves 'limit' and 'max_channels' undefined and does not describe the return format beyond 'rank the strongest outliers'. This is a significant gap for an agent to invoke the tool correctly without guessing.
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 only 33% (only 'seed' is described in the schema). The description adds no meaning for 'limit' or 'max_channels', and even for 'seed' it merely restates the schema. The cost note hints at a connection to max_channels but does not clarify the parameter's role.
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 a specific verb+resource: 'Find channels related to a seed channel through the channels it features, then rank the strongest outliers across all of them.' It distinguishes from sibling tools by focusing on discovery of unknown niches rather than analysis of named channels.
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?
Explicit when-to-use guidance is present: 'Call this when the user wants to discover channels in a niche they do not already know, rather than analyse ones they named.' This states a clear context and contrasts with the alternative use case, though it does not explicitly name sibling tools.
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.
4 tool updates
- First observed
channel_baseline - First observed
compare_channels - First observed
find_outliers - First observed
sweep_niche
TDQS
Scored across 4 tools
Each tool addresses a distinct task: baseline establishes a reference, find_outliers analyzes a single channel, compare_channels handles multiple named channels, and sweep_niche discovers unknown channels. There is no overlap in purpose or output.
Three tools follow the verb_noun pattern (find_outliers, compare_channels, sweep_niche), while channel_baseline deviates by using a noun_noun structure. The names remain readable and the pattern is mostly consistent.
Four tools is a tight, well-scoped set for a niche YouTube analysis server, each serving a clear part of the workflow from baseline to niche discovery without redundancy.
The server covers the full analysis lifecycle: establishing a baseline, identifying outliers, comparing across channels, and expanding to unknown channels. No obvious missing operations for its stated purpose.
Maintenance
Related MCP Connectors
Find YouTube outliers, daily viral Shorts, and analyze video performance.
YouTube search volume and trending videos over time. Free key at trendsapi.ai
YouTube data for AI agents: channels, videos, transcripts, comments, search. Video research.
YouTube search interest and trend data over time, with growth metrics. Free key at trendsmcp.ai
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for extracting structured intelligence from YouTube channels and videos — transcripts, topics, and competitive signals for AI-powered research workflows.1599 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables YouTube competitor research, signal analysis, and transcript-aware pack building for content ideation and scriptwriting.1-
- AlicenseAqualityBmaintenanceFinds YouTube outlier videos on small channels with high views-to-subs ratio, and provides tools to analyze video structure and comments to verify replicable formats.41MIT
- FlicenseNot gradedqualityCmaintenanceA read-only MCP server for discovering YouTube outliers, analyzing viral Shorts, and evaluating single-video performance using stored snapshots.1-