Skip to main content
Glama
hkaanengin

opendota-mcp-server

by hkaanengin

get_player_peers

Find a Dota 2 player's frequent teammates. View games played, wins, win rate, and average GPM/XPM with each teammate, with filters for heroes, lanes, or specific players.

Instructions

Get players who frequently play WITH the specified player (teammates, not opponents).

Use this when users ask about TEAMMATES or PARTY MEMBERS:

  • "Who does [player] play with?"

  • "Who are [player]'s teammates?"

  • "What's [player]'s win rate with [teammate]?"

  • "Show me [player]'s most common party members"

  • "Who does [player] duo with?"

  • "Find [player]'s frequent teammates"

This returns players who have been ON THE SAME TEAM as the specified player. Results are sorted by number of games played together (most frequent first).

Supports both IDs and natural language for flexible querying.

Args: player_name: The Dota 2 player name to search for limit: Number of matches to analyze (default: all recent matches) offset: Skip first N matches (for pagination) lane_role: Filter to games where player was in specific lane hero_id: Filter to games where player played specific hero included_account_id: Get stats for SPECIFIC teammate(s) only (accepts names or IDs) excluded_account_id: Exclude specific players from results (accepts names or IDs) with_hero_id: Filter to games with these heroes on player's team against_hero_id: Filter to games against these enemy heroes peers_count: Number of teammates to return (default 5, increase for more results)

Returns: List of teammate statistics (sorted by games together, descending), each containing: - account_id (int): Teammate's account ID - personaname (str): Teammate's display name - last_played (str): Date of most recent game together (e.g., "December 09, 2024") - wins (int): Games won together - games_played (int): Total games played together - win_rate (str): Win rate as percentage string (e.g., "67.5") - average_gpm (float): Player's average GPM when playing with this teammate - average_xpm (float): Player's average XPM when playing with this teammate

Common queries: - Top teammates: get_player_peers("kürlo", peers_count=10) - Specific teammate stats: get_player_peers("kürlo", included_account_id="hotpocalypse") - Teammates on Rubick: get_player_peers("kürlo", hero_id="Rubick") - Recent duos: get_player_peers("kürlo", limit=100, peers_count=5)

Example: get_player_peers("kürlo", peers_count=3) -> [ {"account_id": 123456, "personaname": "hotpocalypse", "last_played": "December 09, 2024", "wins": 45, "games_played": 78, "win_rate": "57.7", "average_gpm": 456.3, "average_xpm": 523.1}, ... ]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
hero_idNo
lane_roleNo
peers_countNo
player_nameYes
with_hero_idNo
against_hero_idNo
excluded_account_idNo
included_account_idNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses sorting ('Results are sorted by number of games played together'), pagination behavior ('offset: Skip first N matches'), defaults (peers_count default 5), and returns a detailed field-by-field breakdown. It doesn't cover possible errors or rate limits, but for a read-only teammate stats tool it provides substantial 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 lengthy but well-structured into an intro, example queries, Args, Returns, Common queries, and an Example. Each section serves a purpose for a 10-parameter tool. It could be slightly tightened, but no part feels like filler.

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?

Despite having 10 parameters and no annotations or schema descriptions, the description covers all parameters, defaults, return output, and provides concrete examples. It explains sorting and pagination behavior, and the example output field list makes the result structure fully transparent. Minor ambiguity about what counts as 'recent matches' is the only gap, but overall it's highly complete.

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 0%, making the description essential. The 'Args:' section adds meaning beyond the raw schema for every parameter, clarifying things like 'included_account_id: Get stats for SPECIFIC teammate(s) only (accepts names or IDs)' and 'limit: Number of matches to analyze (default: all recent matches).' The 'Common queries' examples show how to combine parameters, giving rich semantic grounding.

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 clearly states 'Get players who frequently play WITH the specified player (teammates, not opponents)' and further reinforces the scope with 'This returns players who have been ON THE SAME TEAM as the specified player.' It distinguishes from sibling tools by focusing on teammates/party members, and the example user queries ('Who does [player] play with?') make the purpose immediately obvious.

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?

Explicitly says 'Use this when users ask about TEAMMATES or PARTY MEMBERS' and provides example queries. It also includes an exclusion ('not opponents'). However, it does not name alternative tools for opponent-focused queries or general stats, so it lacks explicit alternative tool guidance.

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