Skip to main content
Glama
hkaanengin

opendota-mcp-server

by hkaanengin

get_scenarios_lane_roles

Get time-segmented win rates for heroes in any lane role to identify early, mid, and late game performance trends and optimal lane choices.

Instructions

Get win rates for heroes in specific lane roles segmented by game duration.

Use this when users ask:

  • "What's [hero]'s win rate in mid lane by game time?"

  • "How does [hero] perform in offlane at different game lengths?"

  • "Show me lane role statistics for [hero]"

  • "Which heroes are best in [lane] for long games?"

  • "What's the win rate for mid laners at 30 minutes?"

  • "Does [hero] scale better in late game when played as carry?"

  • "Which lane should I play [hero] in for short games?"

Provides time-segmented win rate data showing how heroes perform in specific lanes at different stages of the game. This helps understand which heroes thrive in early/mid/late game scenarios and optimal lane choices.

Supports both IDs and natural language for flexible querying.

Args: lane_role: Lane to analyze. Accepts: - Integer: 1 (Carry-Position 1/Hard Support-Position 5), 2 (Mid), 3 (Offlane-Position 3/Soft Support-Position 4), 4 (Jungle/Support) - String: "mid", "safe lane", "offlane", "jungle", "carry", "support" "pos 1-5", etc. hero_name: Hero to analyze. Accepts: - Integer: Hero ID (e.g., 86 for Rubick) - String: Hero name (e.g., "Rubick", "Anti-Mage")

Note: At least one parameter must be provided. You can provide:
- Only hero_name: See all lanes for this hero by game time
- Only lane_role: See all heroes in this lane by game time
- Both: See specific hero in specific lane by game time

Returns: Dictionary with structure depending on parameters provided:

If only hero_name provided:
- hero_name (str): The hero being analyzed
- [lane_role keys]: One key per lane (e.g., "Safe Lane", "Mid Lane"), each containing:
    - List of timing data with time, games, wins, win_rate
    
If only lane_role provided:
- lane_role (str): The lane being analyzed (e.g., "Mid Lane")
- [hero_name keys]: One key per hero, each containing:
    - List of timing data with time, games, wins, win_rate
    
If both provided:
- hero_name (str): The hero
- lane_role (str): The lane
- timings (list): List of timing data with time, games, wins, win_rate

Each timing entry contains:
- time (str): Game duration in MM:SS format (e.g., "25:30")
- games (int): Number of games at this duration
- wins (int): Number of wins at this duration
- win_rate (str): Win percentage as string (e.g., "56.7")

Common queries: - Hero in specific lane: get_scenarios_lane_roles(lane_role="mid", hero_name="Rubick") - All heroes in lane: get_scenarios_lane_roles(lane_role="mid") - Hero in all lanes: get_scenarios_lane_roles(hero_name="Anti-Mage")

Example: get_scenarios_lane_roles(lane_role="mid", hero_name="Rubick") -> { "hero_name": "Rubick", "lane_role": "Mid Lane", "timings": [ {"time": "20:00", "games": 145, "wins": 78, "win_rate": "53.8"}, {"time": "30:00", "games": 234, "wins": 125, "win_rate": "53.4"}, {"time": "40:00", "games": 189, "wins": 98, "win_rate": "51.9"}, {"time": "50:00", "games": 87, "wins": 42, "win_rate": "48.3"}, ... ] }

This shows Rubick's mid lane win rate decreases slightly as games go longer, suggesting he's stronger in early-mid game than late game.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hero_nameNo
lane_roleNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior5/5

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

With no annotations, the description carries full responsibility. It fully discloses the varying output structure based on which parameters are provided, lists each timing entry field with types, and gives a rich example that even shows interpretation. It also notes that at least one parameter is required, adding important 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.

Conciseness4/5

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

The description is long, but well-structured with clear sections (Args, Returns, Common queries, Example) and a front-loaded purpose sentence. Some example queries are repetitive, but each section adds distinct value for an agent, so the length is mostly warranted.

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?

Given only two parameters, no annotations, and no schema descriptions, this description fully compensates. It covers all input combinations, return shapes for each case, field definitions, an example output, and even a sample interpretation. The agent is left with no ambiguity about invocation or results.

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 coverage is 0%, but the description thoroughly documents both parameters. It explains accepted integer codes and string aliases for lane_role, hero_name ID and name formats, and provides concrete examples like '86 for Rubick' and 'Anti-Mage'. It also explains the effect of providing each parameter alone or together.

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 win rates for heroes in specific lane roles segmented by game duration.' It clearly distinguishes this from sibling tools like get_scenarios_item_timings by focusing on lane roles and game duration, and it lists concrete user query examples.

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 extensive usage guidance, including exact user questions, common query patterns, and parameter combination rules. It does not explicitly name an alternative tool for exclusion, but it makes the intended use case unmistakable through examples such as 'Which lane should I play [hero] in for short games?'

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/hkaanengin/opendota-mcp-server'

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