Skip to main content
Glama

Batru — Dota 2, Deadlock & Marvel Rivals win predictor

get_dota_tournament_game_stats

Read-only

Get per-game BOX SCORES from parsed replays for a pro Dota 2 tournament.

For each game: which team won each lane at 10 minutes (gold diff), every
player's hero, lane, K/D/A, GPM, net worth and key item timings (BKB,
Blink, ...), first blood time, Roshan kills, and whether the winner came
back from a large gold deficit. Answers questions like "who won mid in
game 2 of Spirit vs VISION", "when did Yatoro's BKB come online", "did
they throw a lead". REAL parsed-replay facts (via OpenDota), not model
output. A just-finished game can lag ~an hour until its replay is parsed.

Covered: The International 2026 ("ti-2026"; other events don't carry
per-game data yet). Filter by bracket stage ("grand final", "lower
bracket final", "semifinal", "quarterfinals", "elimination"...) when the
user asks about a round rather than a team; by team name (substring,
e.g. "spirit"); or by match_id for one exact game. No filter = the
event's most recent games. Don't know the teams or stages? Call
get_dota_tournament_stats first — its playoff_results list the whole
bracket with stage labels.

Args:
    event: Tournament slug or alias (default "ti-2026").
    team: Optional team-name filter, case-insensitive substring.
    stage: Optional bracket-stage filter, case-insensitive substring of
        the stage label (e.g. "grand final", "upper bracket final",
        "lower bracket semifinal", "semifinal").
    match_id: Optional exact match id for a single game.
    limit: Max games returned, newest first (default 3, cap 5).

Returns {event, as_of, games:[{series:{phase, day, team1, score, team2},
match_id, winner, radiant, dire, duration_s, kills, first_blood_s,
roshan_kills?, winner_max_gold_deficit?, lanes?, players:[{team, hero,
player, lane, kda, gpm, net_worth, key_items?}]}], citation}. Include the
citation when presenting results.

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
teamNo
eventNoti-2026
limitNo
stageNo
contextYesExplain 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."
match_idNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already mark this read-only and non-destructive, and the description adds valuable behavior beyond that: data comes from parsed replays via OpenDota and is 'not model output', fresh games can lag about an hour, only TI-2026 is covered, and the response includes a citation/source_url that must be surfaced. This is strong context; it only misses optional details like rate limits or exact error behavior.

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

Conciseness4/5

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

The description is long but information-dense, front-loading the core purpose and then systematically covering scope, filters, parameters, and return shape. The only minor redundancy is the citation display instruction appearing both in Returns and at the end; otherwise every section earns its place.

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

Completeness5/5

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

With no output schema, the description compensates by specifying the full return structure, including optional fields marked with '?' and the citation requirement. It also covers coverage limitations, latency, filtering semantics, and cross-tool routing to get_dota_tournament_stats, making the tool callable correctly without external documentation.

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

Parameters5/5

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

Schema description coverage is only 17%, so the description carries the burden, and it delivers: the Args section explains event, team, stage, match_id, and limit with defaults, case-insensitive substring matching, and the cap of 5. It adds meaning beyond property names and compensates fully for the sparse schema; the only unmentioned param, context, already has a thorough schema description.

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 specific verb and resource: 'Get per-game BOX SCORES from parsed replays for a pro Dota 2 tournament.' It then enumerates the concrete data fields (lane gold diff, hero, K/D/A, GPM, key items, first blood, Roshan kills) and gives illustrative questions, which clearly distinguish it from siblings like get_dota_tournament_stats (bracket-level) and hero statistic tools.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: filter by stage vs team vs match_id depending on the user's question, and states that no filter returns the event's most recent games. It also names the alternative get_dota_tournament_stats and tells the agent to call it first when teams or stages are unknown, plus warns that other events don't carry per-game data yet.

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.

TDQS

A3.6/5.0
Disambiguation4/5

Most tools are clearly separated by game prefix and metric family (tier list, counters, matchup, synergy, momentum, ban rates), so an agent can generally pick the right one. A few close pairs—counters vs. matchup and recommend vs. predict/batch—have adjacent purposes, and get_more_tools is a vague catch-all, so it is not quite a perfect 5.

Naming Consistency4/5

With a few exceptions the set follows a consistent get_<game>_<metric> / predict_* / recommend_* snake_case pattern. Deviations such as predict_dota_winrate instead of predict_dota_draft, predict_dota_winrate_batch, lookup_hero, and get_more_tools break the otherwise tidy pattern.

Tool Count2/5

32 tools is above the 25+ threshold and makes the server heavy even though the tri-game structure is logical. Many parallel families could be parameterized by game, and get_more_tools adds count without a clear domain purpose.

Completeness4/5

The read-only analytics surface is broadly complete: every game has tier lists, counters, matchups, synergies, momentum, draft prediction, and pick recommendations, plus Dota tournament coverage and a model track record. Gaps are minor—Dota lacks ladder ban rates, Deadlock and Marvel Rivals lack tournament stats and model evaluation ledgers, and their draft advice is only heuristic until six heroes are provided.