Batru — Dota 2, Deadlock & Marvel Rivals win predictor
Server Details
Real, calibrated Dota 2, Deadlock & Marvel Rivals win predictions, tier lists & counters.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- batrugg/batru-mcp
- GitHub Stars
- 0
- Server Listing
- batru-mcp
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.3/5 across 20 of 20 tools scored. Lowest: 3.7/5.
Tools are cleanly separated by game (dota, deadlock, marvel_rivals) and function (tier_list, counters, synergy, ban_rates, prediction). Each tool targets a specific resource-action pair with no overlapping purposes. The addition of utility tools (lookup_hero, get_model_track_record) does not cause confusion.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_dota_tier_list, predict_deadlock_draft). There are no deviations or mixing of styles, making the naming predictable and easy to navigate.
With 20 tools covering three different games plus model evaluation, the count is on the higher side but still reasonable. Each tool serves a distinct and necessary purpose, and there is no obvious redundancy. A slight reduction would not hurt, but it remains well-scoped.
The tool surface is comprehensive for the stated purpose of win prediction and meta analysis. For each game, it includes tier lists, counters, synergy, ban rates (where applicable), and draft prediction. Notably, Dota includes additional momentum and recommendation tools, and the model track record adds transparency. No critical gaps are apparent.
Available Tools
20 toolsget_deadlock_ban_ratesARead-onlyInspect
Get the most-banned Deadlock heroes from real games.
Ban rate reveals what players FEAR facing — a different signal from win
rate. Empirical data from batru.gg's match aggregation. Heroes come sorted
most-banned first.
Args:
limit: Max number of heroes to return (default 15).
Returns {generated_at, ban_matches, heroes:[{hero, rank, ban_rate_pct,
bans}]}. `ban_matches` is the sample of matches with ban data; cite
`generated_at` when freshness matters. Report numbers verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses data source (batru.gg), that results are sorted most-banned first, and that ban_matches is a sample. It also advises citing generated_at for freshness. This adds significant context beyond readOnlyHint and openWorldHint annotations, with no contradictions.
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 concise with 5 sentences plus structured Args and Returns blocks. It front-loads the purpose and uses minimal fluff. Every sentence adds value.
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?
Despite no output schema, the description thoroughly explains the return structure (generated_at, ban_matches, heroes array with fields). It covers freshness, source, and citation guidance. For a read-only data retrieval tool, this is 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 50% (context parameter described). The description adds meaning for the limit parameter (max number, default 15), compensating for the missing schema description. However, it does not elaborate on the context parameter beyond what schema already provides.
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 it retrieves the most-banned Deadlock heroes from real games, distinguishing it from sibling tools like get_deadlock_tier_list or get_deadlock_counters. The verb 'Get' and noun 'ban rates' are specific and unambiguous.
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 context on when to use this tool (when interested in fear factor vs win rate) but does not explicitly state when not to use it or suggest alternatives. It implies distinct usage compared to win rate tools, but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deadlock_countersARead-onlyInspect
Get the strongest matchups (counters) for a Deadlock hero from real games.
Returns opponents this hero performs BEST and WORST against, by real observed
matchup win rate (with sample sizes). Empirical meta data from batru.gg's
match aggregation, not a guess. The hero name is normalised internally.
Args:
hero: The hero to look up (name/alias).
limit: Max number of matchups to return (default 12).
Returns {hero, best_against:[...], worst_against:[...]} where each row has
{opponent, winrate_pct, matches}. winrate_pct > 50 means `hero` beats that
opponent. Report numbers verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| hero | Yes | ||
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, destructiveHint. Description adds data source (batru.gg), internal normalization, and return format details, enhancing transparency without contradiction.
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?
Description is concise with clear sections: purpose, source, args, return format. No excess verbiage, though room for minor tightening.
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 moderate complexity, no output schema, and good annotations, the description covers parameters, return shape, and behavior adequately for an agent to use 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 coverage is low (33%). Description adds meaning for 'hero' (aliases, normalization) and 'limit' (max matchups, default 12), partially compensating. 'context' is explained in schema but not in description.
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 retrieves strong matchups for a Deadlock hero from real games, specifying verb, resource, and scope. It distinguishes from sibling tools by game name and specific function.
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 implies usage for obtaining empirical matchup data but does not explicitly list alternatives or when to avoid using it. Sibling differentiation is clear via game-specific naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deadlock_tier_listARead-onlyInspect
Get the current Deadlock hero tier list (best heroes) from real games.
Ranked by batru.gg's match aggregation — empirical meta, not a guess. Heroes
come sorted best-first (rank 1 = strongest). Report numbers verbatim.
Args:
limit: Max number of heroes to return (default 20).
Returns {total_matches, generated_at, heroes:[{hero, rank, winrate_pct,
pick_rate_pct, matches}]}. Cite `total_matches` for the sample size.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds useful behavioral context: data comes from batru.gg's match aggregation, heroes are sorted by rank, and numbers are reported verbatim. No contradictions.
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 concise, front-loaded with the main purpose, and structured with separate sections for Args and Returns. Every sentence adds value without repetition.
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?
In the absence of an output schema, the description provides the return structure verbosely, including fields like total_matches, generated_at, and heroes array. It covers the limit parameter. Minor gaps exist (e.g., error handling), but overall sufficient for a read-only tier list.
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 description adds meaning for the 'limit' parameter (max number of heroes, default 20) beyond the schema's type and default. However, it does not add information for the 'context' parameter, which already has a detailed schema description. With 50% schema coverage, the description compensates partially.
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 it retrieves the Deadlock hero tier list from real games, ranked by batru.gg, with heroes sorted best-first. This distinguishes it from sibling tools for other games and provides a specific verb-resource combination.
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 implies usage for Deadlock tier list queries but does not explicitly state when to use this tool over alternatives. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dota_countersARead-onlyInspect
Get the strongest matchups (counters) for a Dota 2 hero from real games.
Returns opponents this hero performs BEST and WORST against, by real observed
matchup win rate (with sample sizes). This is empirical meta data from
batru.gg's match aggregation, not a guess. The hero name is normalised
internally.
Args:
hero: The hero to look up (name/alias/shortName).
limit: Max number of matchups to return (default 12).
Returns {hero, best_against:[...], worst_against:[...]} where each row has
{opponent, winrate_pct, matches}. winrate_pct > 50 means `hero` beats that
opponent. Report numbers verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| hero | Yes | ||
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, openWorldHint, destructiveHint), the description discloses that data comes from real observed win rates with sample sizes, hero names are normalized internally, and instructs to report numbers verbatim. This adds useful behavioral context.
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 well-structured with a lead sentence, a short paragraph on data source, and Args/Returns sections. It is concise and front-loaded. Minor verbosity from the 'Report numbers verbatim' instruction.
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 no output schema, the description explains the return format in detail: hero, best_against, worst_against with opponent, winrate_pct, matches, and interpretation. Context of Dota 2 game is clear. Sibling tools suggest it's a standalone counter lookup.
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 low (33%). The description adds meaning for hero (name/alias/shortName) and limit (max matchups, default 12), but omits the required context parameter entirely. While the schema describes context, the description should also address it.
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 gets the strongest matchups (counters) for a Dota 2 hero from real games, specifying it returns best and worst matchups by observed win rate. This is distinct from siblings like get_dota_matchup or predict_dota_winrate.
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 implies usage for looking up counters but does not explicitly state when to use this tool versus alternatives like get_dota_matchup or predict_dota_winrate. No exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dota_hero_momentumARead-onlyInspect
Get which Dota 2 heroes are rising or falling in the current patch.
Compares each hero's win rate over the last 14 days vs the prior 14 days
WITHIN the current patch — real trend data from batru.gg's match
aggregation, not a guess. Useful for "what's getting stronger lately?"
questions between patches.
Args:
hero: Optional — a specific hero to look up. Empty returns the top
risers and fallers overview.
limit: Max risers/fallers to return in overview mode (default 10).
Returns {patch, window_days, data_through, ...} plus either one hero's
{hero, wr_recent_pct, wr_prev_pct, delta_pp, n_recent, n_prev} or
{risers:[...], fallers:[...]}. delta_pp is percentage-point change; small
deltas (<1pp) are noise — say so rather than over-reading them.
| Name | Required | Description | Default |
|---|---|---|---|
| hero | No | ||
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint, destructiveHint false) indicate safe reading. The description adds valuable context: methodology (14-day windows, current patch, batru.gg aggregation), data source reliability, and noise thresholds. No contradiction with annotations.
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?
Well-structured with clear paragraphs: overview sentence, methodology, use case, parameter descriptions in list format, and return format. Every sentence provides value without 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?
Despite no output schema, the description explains the return format in detail, including patch, window_days, data_through, and two modes of output. This is complete for understanding the tool's behavior and output.
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 low (33%, only context described). The description compensates fully by explaining hero (optional, empty returns overview), limit (default 10), and return structure (single hero vs risers/fallers). This adds significant meaning beyond schema.
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 it retrieves rising or falling Dota 2 heroes by comparing win rates over 14-day windows within the current patch. It distinguishes itself from sibling tools like tier lists (absolute performance) and counters by focusing on momentum and trend.
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 notes it's useful for 'what's getting stronger lately?' and warns about noise for small deltas (<1pp). However, it lacks explicit guidance on when not to use it versus alternatives like get_dota_tier_list for absolute strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dota_matchupARead-onlyInspect
Get the head-to-head win rate for one specific Dota 2 hero pair.
Returns how `hero` performs AGAINST `opponent` (opposite teams) from real
observed games, with the sample size. Empirical data from batru.gg's match
aggregation covering every tracked pair — not a guess. Both names are
normalised internally.
Args:
hero: Your hero (name/alias/shortName).
opponent: The enemy hero (name/alias/shortName).
Returns {hero, opponent, winrate_pct, matches}. winrate_pct > 50 means
`hero` beats `opponent` more often than not. Report numbers verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| hero | Yes | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." | |
| opponent | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant context beyond annotations: specifies data source (batru.gg), internal normalization, and explains the return value meaning (winrate_pct > 50 means hero beats opponent). Annotations already indicate readOnly and non-destructive.
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?
Efficiently structured: purpose first, then details, then Args. No wasted sentences. Front-loads the key information.
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?
Covers purpose, input semantics, output format, and data source. No output schema, but the description explicates the return. Complete for a simple lookup 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?
Schema coverage is low (33%), but the description adds meaningful explanations for hero and opponent ('name/alias/shortName') and reinforces context parameter usage. Adds value beyond the schema.
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?
Clearly states the specific verb-resource pair: 'Get the head-to-head win rate for one specific Dota 2 hero pair.' Distinct from sibling tools like get_dota_counters or get_dota_synergy.
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?
Implies usage context: when you need empirical win rate for a specific hero vs opponent. Does not explicitly state when not to use or suggest alternatives, but the purpose is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dota_synergyARead-onlyInspect
Get the best (and worst) TEAMMATES for a Dota 2 hero from real games.
Returns teammates this hero performs BEST and WORST paired with (same team),
by real observed team win rate with sample sizes. Empirical meta data from
batru.gg's match aggregation, not a guess. The hero name is normalised
internally.
Args:
hero: The hero to look up (name/alias/shortName).
limit: Max number of teammates to return (default 12).
Returns {hero, best_with:[...], worst_with:[...]} where each row has
{teammate, winrate_pct, matches}. winrate_pct is the pair's team win rate
when both heroes play together. Report numbers verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| hero | Yes | ||
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds significant behavioral context: 'hero name normalised internally', 'winrate_pct is the pair's team win rate', and instructs to 'Report numbers verbatim.' It also explains the return structure beyond annotations.
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 six sentences, front-loaded with the main purpose. Every sentence adds value: purpose, data source, parameter explanations, return format, and instruction. 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?
Given the tool's moderate complexity, lack of output schema, and low schema description coverage (33%), the description fully compensates. It explains the purpose, data source, parameter details, and return structure. With annotations covering safety, the description is complete for an agent to use 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 has 3 parameters with 33% description coverage (only context documented). The description adds meaning for hero (accepts name/alias/shortName, normalised internally) and limit (max count, default 12). The context parameter already has a detailed description in the schema, so the description adds value for the majority of parameters.
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 it 'Get the best (and worst) TEAMMATES for a Dota 2 hero from real games.' It uses a specific verb and resource, and distinguishes from sibling tools like get_dota_counters (opponents) and get_dota_matchup (individual matchups).
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 implicitly distinguishes from siblings by focusing on teammate synergy, but does not explicitly state when not to use it or provide alternatives. It gives clear context: empirical match data, not guesses, helping the agent decide when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dota_tier_listARead-onlyInspect
Get the current Dota 2 hero tier list (best heroes this patch) from real games.
Ranked by batru.gg's match aggregation over ~real games — empirical meta, not
a guess. Heroes come sorted best-first (rank 1 = strongest). Report numbers
verbatim.
Args:
limit: Max number of heroes to return (default 20).
Returns {total_matches, generated_at, heroes:[{hero, rank, winrate_pct,
pick_rate_pct, matches}]}. `total_matches` is the sample the ranking is drawn
from — cite it when stating how strong the signal is.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true and destructiveHint=false. The description adds valuable context: data source (batru.gg match aggregation), empirical nature, sorting order, and response structure. No contradictions with annotations.
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 well-structured with a clear purpose, args section, and returns. Sentences are mostly concise, though some elaboration on data source could be trimmed. Front-loaded with purpose.
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 no output schema, the description explains the return format thoroughly. It provides guidance on citing `total_matches`. For a read-only tool with two parameters, this is 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 coverage is 50%; the `limit` parameter is undocumented in schema but described in the description (max number, default 20). The `context` parameter is fully described in schema. The description adds meaning beyond schema for `limit`.
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 it retrieves the current Dota 2 hero tier list from real games, sorted by rank. It distinguishes itself from sibling tools like `get_dota_tier_list_by_rank` by specifying it returns the overall tier list, not filtered by rank.
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 implies usage by stating it provides the current meta from real games, but it does not explicitly contrast with siblings or provide when-to-use guidance. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dota_tier_list_by_rankARead-onlyInspect
Get the Dota 2 hero tier list for a specific rank bracket.
The meta differs a LOT by skill level — heroes that stomp Herald games can
be poor in Immortal. Data comes in four bands: Herald & Guardian,
Crusader & Archon, Legend & Ancient (merged pairs — the source has no finer
grain), and Divine & Immortal ("highrank").
Args:
rank: A rank name — one of herald, guardian, crusader, archon, legend,
ancient, divine, immortal (or a band key like "herald-guardian").
limit: Max number of heroes to return (default 20).
Returns {bracket, total_matches, generated_at, heroes:[{hero, rank,
winrate_pct, pick_rate_pct, matches}]} sorted best-first. Report numbers
verbatim and mention which band the numbers come from.
| Name | Required | Description | Default |
|---|---|---|---|
| rank | Yes | ||
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive behavior. Description adds value by detailing data bands (merged rank pairs), return format, and provenance. No contradiction.
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?
Well-structured with paragraphs, clear args section, and front-loaded purpose. Minor verbosity could be trimmed but overall efficient for the information conveyed.
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 no output schema, description adequately explains return structure ('bracket, total_matches, generated_at, heroes array'). Covers data bands and best-first sorting. Missing details on error conditions.
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?
Provides examples for 'rank' (and band keys) and default for 'limit', adding meaning beyond schema. However, the 'context' parameter (33% schema coverage) is completely undocumented in description, leaving a gap.
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?
Clearly states it retrieves Dota 2 hero tier list for a specific rank bracket, differentiating from sibling tool 'get_dota_tier_list' which likely provides an unfiltered list. Uses specific verb 'Get' and resource 'hero tier list'.
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?
Explains when to use this tool by highlighting meta differences by skill level and describing data bands. Implicitly contrasts with unfiltered tier list but lacks explicit 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_marvel_rivals_ban_ratesARead-onlyInspect
Get the most-banned Marvel Rivals heroes from real competitive games.
Ban rate reveals what players FEAR facing — a different signal from win
rate. Empirical data from batru.gg's match aggregation (competitive mode,
where bans exist). Heroes come sorted most-banned first.
Args:
limit: Max number of heroes to return (default 15).
Returns {generated_at, ban_matches, heroes:[{hero, rank, ban_rate_pct,
bans}]}. ALWAYS cite `generated_at` — ban snapshots can lag the current
season. Report numbers verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint. The description adds behavioral context: data source (batru.gg), competitive mode, sorting order, and a caveat about lag. It also instructs to cite generated_at. No contradictions with annotations.
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 well-structured: clear purpose, explanation, then args and return format. It is concise but covers essential information. A minor improvement would be to combine the args and return into a more streamlined format, but it is effective.
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 no output schema, the description provides a detailed return format and usage note. Both parameters are addressed. The complexity is low, and the description fully covers the tool's behavior and constraints.
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 50% (context has schema description, limit does not). The description adds meaning for 'limit' (max heroes, default 15), which is not in schema. For 'context', the schema description is sufficient; the tool description does not repeat it. This compensates for the coverage gap.
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: 'Get the most-banned Marvel Rivals heroes from real competitive games.' It specifies the resource (heroes), action (get ban rates), and source (real competitive games). It also differentiates ban rate from win rate, distinguishing it from sibling tools like get_marvel_rivals_tier_list.
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 explains the meaning of ban rate ('what players FEAR facing') and that it's a different signal from win rate. This implies when to use it. However, it does not explicitly state when not to use it or list alternative tools. The guidance is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_marvel_rivals_countersARead-onlyInspect
Get the strongest matchups (counters) for a Marvel Rivals hero from real games.
Returns opponents this hero performs BEST and WORST against, by real observed
matchup win rate (with sample sizes). Empirical meta data from batru.gg's
match aggregation, not a guess. The hero name is normalised internally.
Args:
hero: The hero to look up (name/alias).
limit: Max number of matchups to return (default 12).
Returns {hero, best_against:[...], worst_against:[...]} where each row has
{opponent, winrate_pct, matches}. winrate_pct > 50 means `hero` beats that
opponent. Report numbers verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| hero | Yes | ||
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by explaining the data source (batru.gg's match aggregation), normalization of hero names, and return format with winrate_pct interpretation. No contradictions with annotations.
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 well-structured with clear sections: purpose, data source, parameter explanations, and return format. It is front-loaded with the key verb and resource. Slightly wordy in the parameter list but each sentence adds value.
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?
Despite no output schema, the description fully specifies the return format ({hero, best_against:[...], worst_against:[...]} with details on each row). It also explains winrate_pct meaning. For a simple lookup tool, this is complete and leaves no ambiguity.
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%, but the tool description fully explains both parameters: 'hero: The hero to look up (name/alias)' and 'limit: Max number of matchups to return (default 12).' This compensates for missing 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 clearly states 'Get the strongest matchups (counters) for a Marvel Rivals hero from real games.' It uses a specific verb ('get') and resource ('counters'), and the output format (best_against/worst_against) distinguishes it from sibling tools like ban rates, synergy, or tier lists.
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 implies usage for counter analysis by saying 'Returns opponents this hero performs BEST and WORST against' but does not explicitly mention when not to use it or compare with alternatives like get_marvel_rivals_synergy. Context is clear but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_marvel_rivals_synergyARead-onlyInspect
Get the best (and worst) TEAMMATES for a Marvel Rivals hero from real games.
Returns teammates this hero performs BEST and WORST paired with, by real
observed team win rate (with sample sizes). Empirical meta data from
batru.gg's match aggregation, not a guess. The hero name is normalised
internally.
Args:
hero: The hero to look up (name/alias).
limit: Max number of teammates to return (default 12).
Returns {hero, best_with:[...], worst_with:[...]} where each row has
{teammate, winrate_pct, matches}. winrate_pct > 50 means the pairing wins more
than average. Report numbers verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| hero | Yes | ||
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint and destructiveHint, the description explains the data source (real observed win rates), sample sizes, and internal normalization, adding valuable behavioral context.
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 well-structured with clear sections but slightly verbose; every sentence adds value but could be tightened.
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 no output schema, the description fully explains the return object and fields, covering all essential aspects for tool 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?
Despite low schema coverage (33%), the description clarifies hero name/alias, limit default, and explicitly details the return format with row structure.
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 explicitly states the tool gets best and worst teammates for a hero using real game win rates, distinguishing it from sibling tools like counters or tier lists.
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 implies usage for synergy analysis but lacks explicit guidance on when not to use or comparisons to alternatives like get_marvel_rivals_counters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_marvel_rivals_tier_listARead-onlyInspect
Get the current Marvel Rivals hero tier list (best heroes) from real games.
Ranked by batru.gg's match aggregation — empirical meta, not a guess. Heroes
come sorted best-first (rank 1 = strongest). Report numbers verbatim.
Args:
limit: Max number of heroes to return (default 20).
Returns {total_matches, generated_at, heroes:[{hero, rank, winrate_pct,
pick_rate_pct, matches}]}. Cite `total_matches` for the sample size.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, non-destructive. The description adds value by explaining the empirical source, sorting order, and important behavior like 'report numbers verbatim' and citing total_matches for sample size, which goes beyond annotation hints.
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 well-structured with a concise paragraph followed by an Args section and Returns description. It is front-loaded with the main purpose and includes necessary details without extraneous content.
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 description includes both input (limit) and output format (total_matches, generated_at, heroes with fields) despite no output schema. It also adds guidance to cite total_matches. This fully equips the agent to use and interpret 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 50% (context described in schema, limit not). The description compensates by fully defining the limit parameter with its purpose and default value. This adds meaning beyond the schema, resulting in good parameter clarity.
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 gets the current Marvel Rivals hero tier list from real games aggregated by batru.gg. It specifies the output is sorted best-first and distinguishes from sibling tools like ban rates and counters by focusing on tier list and providing source details.
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 implies when to use the tool (for tier list data) but does not explicitly state when not to use it or compare it to alternatives like ban rates or counters. While context is clear, explicit exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_track_recordARead-onlyInspect
Get batru.gg's public model evaluation ledger — every weekly test, wins AND losses.
batru.gg publishes EVERY champion-vs-challenger evaluation of its Dota 2
model (promoted or rejected), auto-generated from the promotion gate's
append-only log — nothing is hand-picked. Use this when a user asks whether
the model is any good or how it is validated.
HOW TO PRESENT IT: lead with CALIBRATION (ECE — lower is better; ~0.006
means a stated 60% wins ~60% of the time), then BCE. Do NOT headline raw
accuracy: Dota drafts are balanced by design, so ~55% is near the
game-imposed ceiling for ANY model — calibration is the meaningful claim.
Args:
limit: Max evaluations to return, newest first (default 10).
Returns {generated_at, ledger, total_evaluations, total_promotions,
evaluations:[{decided_at, promote, challenger:{ece,bce,acc},
champion:{ece,bce,acc}, holdout_n}]}. Report numbers verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already guarantee read-only, non-destructive, open-world behavior. The description adds context: the ledger is public, auto-generated from an append-only log with no hand-picking, reinforcing transparency. No contradictions.
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?
Well-structured with sections for purpose, usage guidance, presentation, args, and returns. Front-loaded with key purpose. Slightly verbose due to presentation and return details, but every sentence adds value.
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 no output schema, the description fully explains the return structure with field names and types. Includes behavior (auto-generated, append-only) and the tool's role in evaluation. Completeness is high for a simple read 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 description adds meaning to the `limit` parameter beyond schema (specifies 'newest first' ordering). The `context` parameter is well-described in schema and not repeated in description, which is acceptable given schema coverage. With 50% coverage, extra value is provided.
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 it retrieves 'batru.gg's public model evaluation ledger' with specific details (weekly tests, wins and losses). It distinctly separates from sibling tools focused on hero stats and predictions, making the tool's purpose unambiguous.
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?
Explicitly tells the agent when to use: 'Use this when a user asks whether the model is any good or how it is validated.' Additionally provides presentation guidance (lead with calibration, not accuracy), which helps the agent use the tool effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_more_toolsARead-onlyIdempotentInspect
Check for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | A description of your goal and what kind of tool would help accomplish it. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds context about fallback usage but does not go beyond the safety profile already conveyed by annotations.
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, well-structured sentence of about 20 words with no wasted words. It is front-loaded and efficient.
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 meta-purpose, the description is sufficient for understanding when to use it. Annotations cover safety and openness. The lack of output schema is acceptable as the tool likely returns dynamic tool suggestions.
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, with a clear description for the one required parameter. The description does not add extra meaning beyond what the schema provides, so baseline 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 verb 'Check' and resource 'additional tools', distinguishing it from sibling tools which are domain-specific queries. It specifies that it is for discovering specialized capabilities.
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 tells when to use this tool: 'whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.' It doesn't mention when not to use, but provides clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_heroARead-onlyInspect
Normalise a hero name/alias/shortName to its canonical identity.
Use this to turn messy user input ("am", "anti mage", "Anti-Mage") into the
exact key batru.gg expects before calling the prediction tools. The backend
SILENTLY DROPS hero names it doesn't recognise, so always normalise first.
Args:
query: A hero name, alias, or short name.
game: "dota2" (default), "deadlock", or "marvel-rivals".
Returns {id, displayName, shortName, game} for the best match, or an error
with `did_you_mean` candidates if nothing matches.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | dota2 | |
| query | Yes | ||
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint, openWorldHint, and destructiveHint. The description adds key behavioral context: the backend silently drops unrecognized names, and the tool returns either a match with structured fields or an error with suggestions. This goes beyond what annotations provide.
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 structured with clear sections (Args, Returns) and uses straightforward language. Every sentence contributes to understanding, with no fluff. It could be slightly more concise, but the detail is warranted given the tool's critical role.
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 (3 parameters, no output schema), the description covers all necessary aspects: purpose, usage, parameter meanings, return structure, and error handling. It is fully adequate for an AI agent to successfully invoke the 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?
With only 33% schema description coverage, the description compensates by explaining the 'query' parameter (hero name, alias, or short name) and the 'game' parameter (enumerated options with default). However, it does not detail the 'context' parameter beyond what the schema provides, missing a chance to clarify its purpose.
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 specific verbs ('normalise') and clearly identifies the resource ('hero name/alias/shortName to canonical identity'). It provides concrete examples of messy input and explicitly states it is the prerequisite for prediction tools, distinguishing it from sibling tools that perform analysis or predictions.
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 tells when to use the tool ('before calling the prediction tools') and why it's necessary ('backend silently drops hero names it doesn't recognise'). It offers a clear context, though it does not explicitly state when not to use it (e.g., if the name is already canonical).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict_deadlock_draftARead-onlyInspect
Predict the CALIBRATED win probability for a Deadlock 6v6 draft.
Backed by batru.gg's Deadlock production model. Provide 6 heroes per team
(names are normalised to Deadlock hero ids internally). A reported 60%
reflects a real ~60% empirical win rate — it is calibrated, not a guess.
Args:
team0_heroes: Team 0's 6 heroes (names/aliases).
team1_heroes: Team 1's 6 heroes (names/aliases).
Returns calibrated win-rate percentages for both teams. Report verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." | |
| team0_heroes | Yes | ||
| team1_heroes | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false. The description adds value by stating the model is calibrated, backed by batru.gg's production model, and that a 60% report reflects empirical win rate. This provides context beyond annotations without contradiction.
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 concise with no wasted words. It is front-loaded with the main purpose and details, followed by a clear args section and return description. Every sentence serves a purpose.
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 no output schema, the description adequately explains returns (calibrated win-rate percentages). It covers the model source and calibration. However, it does not address error handling or input validation for hero names, but the overall context is sufficient for an agent to use 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 coverage is only 33% (only context has a description). The description adds that team0_heroes and team1_heroes are lists of 6 heroes (names/aliases) and that names are normalized, but it does not explain the 'context' parameter, which is required. This partially compensates for low coverage but leaves a significant gap.
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 states 'Predict the CALIBRATED win probability for a Deadlock 6v6 draft,' which clearly identifies the action (predict), resource (win probability), and scope (Deadlock 6v6 draft). It distinguishes this tool from siblings like get_deadlock_ban_rates or predict_dota_winrate by specifying the game and draft format.
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 implies usage for Deadlock drafts by requiring 6 heroes per team and noting internal normalization. It guides 'Report verbatim' and mentions calibration, but does not explicitly state when to use this over siblings like predict_dota_winrate. The context is clear but lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict_dota_winrateARead-onlyInspect
Predict the CALIBRATED win rate for a Dota 2 draft.
Backed by batru.gg's production model (trained on ~20M real matches and
calibrated, so a reported 60% reflects a real ~60% empirical win rate — it is
not a guess). Partial drafts are fine; an empty draft returns 50/50. Hero
names are normalised internally to shortNames.
Args:
my_heroes: Your team's heroes (names/aliases, 0-5).
enemy_heroes: Enemy heroes (names/aliases, 0-5).
my_side: "radiant" (default) or "dire" — which side is "my_heroes".
Returns calibrated win-rate percentages for both teams. Report these numbers
verbatim; do not adjust them.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." | |
| my_side | No | radiant | |
| my_heroes | Yes | ||
| enemy_heroes | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark as readOnlyHint=true and destructiveHint=false, so agent knows it's safe. Description adds valuable behavioral context: calibration (reported 60% ≈ empirical 60%), backed by production model, internal hero name normalization. No contradictions.
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?
Front-loaded with purpose and key details. Structured with clear sections for args and returns. Some redundancy (e.g., 'calibrated' repeated) but overall efficient and informative.
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?
Complete given the tool complexity: explains what it does, how it works, parameter details, and what to do with output. No output schema but return description is sufficient. Adequate for agent to select and 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?
Schema description coverage only 25% (only 'context' has description). Description compensates by explaining my_heroes, enemy_heroes, my_side in detail, including acceptable values and default. Adds meaning beyond raw schema.
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?
Clearly states it predicts calibrated win rate for Dota 2 draft. Specific verb and resource, distinct from sibling tools which focus on other games or other aspects like counters, tier lists, etc.
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?
Explicitly says when to use: for predicting win rate based on draft. Also provides guidance on partial drafts, empty draft behavior, and instructions to report numbers verbatim. No contradictory usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict_marvel_rivals_draftARead-onlyInspect
Predict the CALIBRATED win probability for a Marvel Rivals 6v6 draft.
Backed by batru.gg's live Marvel Rivals production model (weekly auto-retrained
on real matches). Provide exactly 6 heroes per team (names are normalised to
Marvel Rivals hero ids internally). The probability is CALIBRATED — a reported
60% reflects a real ~60% empirical win rate, not a guess. Report the number
verbatim.
This is a COMPOSITION-ONLY estimate: it reflects the hero draft, NOT player
skill, rank, or in-game execution. It is for draft analysis only — not betting
advice. Do not headline a raw "accuracy" figure; present it as a calibrated
probability.
Args:
team0_heroes: Team 0's 6 heroes (names/aliases).
team1_heroes: Team 1's 6 heroes (names/aliases).
Returns calibrated win-rate percentages for both teams. Report verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." | |
| team0_heroes | Yes | ||
| team1_heroes | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true. The description adds that the model is autoretained weekly, probability is calibrated, and the estimate is composition-only. This provides useful context beyond annotations.
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 informative but somewhat verbose with repeated warnings. The main purpose is stated early, but the length could be reduced by combining the calibration note and composition-only note.
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 description explains return values (calibrated win-rate percentages) but does not specify the output format or structure. It also misses the context parameter entirely. Given the lack of output schema, more detail on the return structure would be beneficial.
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 description adds meaning to team0_heroes and team1_heroes (exactly 6, normalised), but it does not describe the 'context' parameter. Since schema description coverage is only 33% and only context has a description in the schema, the description partially compensates.
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 it predicts calibrated win probability for a 6v6 Marvel Rivals draft. It specifies the model source and calibration meaning. It is distinct from sibling tools like get_marvel_rivals_counters or predict_deadlock_draft.
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 says to provide exactly 6 heroes per team and that the estimate is composition-only, not player skill. It explicitly says not for betting advice. However, it does not compare to sibling tools or say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_dota_pickARead-onlyInspect
Recommend the top 3 Dota 2 heroes to pick next, with calibrated win rates.
Backed by batru.gg's production model. Each suggestion comes with the
CALIBRATED win rate your team would have after adding that hero against the
given enemy draft (a reported 60% reflects a real ~60% empirical win rate).
Hero names are normalised internally.
Args:
my_heroes: Heroes your team has already picked (names/aliases, 0-4).
enemy_heroes: Enemy heroes (names/aliases, 0-5).
my_side: "radiant" (default) or "dire" — which side is "my_heroes".
Returns a list of up to 3 {displayName, shortName, win_rate_pct}. Report the
win rates verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." | |
| my_side | No | radiant | |
| my_heroes | Yes | ||
| enemy_heroes | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this tool as readOnlyHint=true and destructiveHint=false. The description adds context about calibrated win rates and normalized hero names, but it omits documentation for the required 'context' parameter, which could confuse agents. No additional behavioral traits like rate limits or error handling are disclosed.
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 concise (8 lines) and front-loaded with the main purpose. It includes an Args section and return format in a structured way. Minor waste: the note to 'Report the win rates verbatim' could be implied, but it's not excessive.
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 no output schema, the description clearly states the return type ('list of up to 3 {displayName, shortName, win_rate_pct}'). It explains hero name normalization. However, it fails to document the required 'context' parameter, and does not address error cases for invalid hero names or edge cases.
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 25% (only 'context' has a schema description). The description adds meaning for three parameters (my_heroes, enemy_heroes, my_side) with constraints like '0-4' and 'names/aliases', but it fails to document the required 'context' parameter at all. This is a significant gap.
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 purpose: 'Recommend the top 3 Dota 2 heroes to pick next, with calibrated win rates.' It uses a specific verb ('Recommend') and resource ('top 3 Dota 2 heroes'), and distinguishes itself from sibling tools like get_dota_counters or predict_dota_winrate by focusing on pick recommendations.
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 implies the tool is for Dota 2 drafting scenarios, but it does not explicitly state when to use it vs. alternatives (e.g., get_dota_counters or predict_dota_winrate). No guidance on when not to use it is provided, so the agent must infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides access to Marvel Rivals game data including hero information, abilities, skins, achievements, items, maps, and player profiles through a standardized interface.1412MIT
- AlicenseBqualityCmaintenanceModel Context Protocol server that enables LLMs and AI assistants to retrieve real-time Dota 2 statistics, match data, player information, and game metrics through a standardized interface.178MIT
- Flicense-qualityCmaintenanceProvides Teamfight Tactics meta statistics and personal match analysis using Riot API data, with tools for deck tier lists, augment stats, and player history analysis.
- Flicense-qualityBmaintenanceEnables querying Mobile Legends: Bang Bang hero data including win rates, counters, synergies, and builds via natural language.
Your Connectors
Sign in to create a connector for this server.