Skip to main content
Glama

Batru — Competitive Game Intelligence for AI Agents

get_counters

Read-only

Who counters a hero (and who it beats) — measured matchup win rates for Dota 2, Deadlock or Marvel Rivals.

Opponents this hero performs BEST and WORST against, by real observed
win rate with sample sizes — empirical meta data, not a guess. The hero
name is normalised internally.

Args:
    game: "dota2", "deadlock", or "marvel-rivals".
    hero: The hero to look up (name/alias/shortName).
    limit: Max matchups per direction (default 12).

winrate_pct > 50 means `hero` beats that opponent. Report verbatim.

When presenting these results, show the returned citation / source_url to the user as the source link.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
gameYesWhich game: "dota2", "deadlock" or "marvel-rivals". Required — hero names alone do not identify the game.
heroYesHero name — any alias or short name is accepted and normalised internally. To see every valid hero name for a game, call lookup_hero with an EMPTY query (query="", game=...) — it returns the full roster (displayName + shortName + aliases).
limitNoMax opponents to list per direction (best / worst matchups).
contextYesExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution."

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / game / description
      Added value: +"Which game: \"dota2\", \"deadlock\" or \"marvel-rivals\". Required — hero names alone do not identify the game."
    • addedInput schema / properties / hero / description
      Added value: +"Hero name — any alias or short name is accepted and normalised internally. To see every valid hero name for a game, call lookup_hero with an EMPTY query (query=\"\", game=...) — it returns the full roster (displayName + shortName + aliases)."
    • addedInput schema / properties / limit / description
      Added value: +"Max opponents to list per direction (best / worst matchups)."
  2. Changed1 schema field changed
    • changedInput schema / properties / context / description
      Previous value: -"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.\""New value: +"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\""
  3. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/openWorld annotations, the description discloses meaningful behavior: hero names are normalized internally, winrate_pct > 50 means the queried hero beats the opponent, results are based on real observed win rates with sample sizes, and the agent should report the returned citation/source_url to the user. This exceeds what annotations alone provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well structured: a front-loaded purpose statement, a short explanation of the empirical nature, concise args, and a clear output convention. Every sentence contributes value, and the most important usage guidance appears first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers what the tool returns (best and worst matchups by win rate with sample sizes), how to call it (args, defaults, normalization), and how to present results (citation/source_url). Since there is no output schema, slightly more detail about the exact response shape would improve completeness, but the description is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers 100% of parameters, so the baseline is 3. The description adds useful semantics beyond the schema: the meaning of winrate_pct > 50, default limit of 12, internal hero name normalization, and the requirement to present the citation. It omits the required 'context' parameter from its Args summary, but the schema fully documents that parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific statement of what the tool does: 'Who counters a hero (and who it beats) — measured matchup win rates for Dota 2, Deadlock or Marvel Rivals.' It names the resource (matchup counters), the action (get/measure), and the supported games, which distinguishes it from sibling tools like get_synergy or get_matchup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this is for observed matchup win rates and empirical meta data, so an agent knows to call it when a user asks which heroes counter or are countered by a given hero. It does not explicitly name sibling alternatives or state when not to use it, but the context is strong enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.