Skip to main content
Glama
DeepBlueCoding

MCP Dota 2 Match Analysis Server

get_item_purchases

Track Dota 2 item purchases by hero and game time. Retrieve chronological purchase timings to analyze item progression and key timings.

Instructions

Get item purchase timings for heroes in a Dota 2 match.

Returns a chronological list of item purchases with:

  • game_time: Seconds since game start (can be negative for pre-horn purchases)

  • game_time_str: Formatted as M:SS

  • hero: Hero that purchased the item

  • item: Item name (e.g., "item_bfury", "item_power_treads")

Use this to answer questions like:

  • "When did Juggernaut finish Battlefury?"

  • "What was Anti-Mage's item progression?"

  • "Who bought the first BKB?"

Args: match_id: The Dota 2 match ID hero_filter: Only include purchases by this hero, e.g. "juggernaut" (optional)

Returns: ItemPurchasesResponse with list of item purchase events

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
match_idYes
hero_filterNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNo
successYes
match_idYes
purchasesNo
hero_filterNoHero filter applied
total_purchasesNo
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It discloses that the list is chronological, that game_time can be negative for pre-horn purchases, and that item names use internal Dota format (e.g., 'item_bfury'). This goes beyond a basic read-only hint, though it does not discuss edge cases like missing matches or empty results.

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-organized with clear sections (Returns, Use Cases, Args, Returns) and front-loads the core purpose in the first sentence. Every bullet and example adds value, and there is no fluff or repetition beyond the acceptable final Returns summary.

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?

For a simple two-parameter read tool with an output schema, the description is complete. It explains what data is returned, the meaning of key fields, example usage, and parameter semantics. An agent has enough context to select and invoke the tool correctly without needing to inspect siblings.

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?

Schema coverage is 0%, so the description must compensate. It does: match_id is described as 'The Dota 2 match ID,' and hero_filter is explained as 'Only include purchases by this hero' with an example ('juggernaut'). The match_id explanation adds little beyond the parameter name, but the hero_filter description and example provide meaningful usage guidance.

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 item purchase timings for heroes in a Dota 2 match.' It clearly identifies the tool's function and the unique data it returns (chronological item purchases), distinguishing it from sibling tools like get_hero_deaths or get_rune_pickups.

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 provides explicit example questions the tool can answer ('When did Juggernaut finish Battlefury?'), giving clear context for when to use it. However, it does not explicitly mention any exclusions or alternative tools, so it falls short of a 5.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DeepBlueCoding/mcp-replay-dota2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server