Steam MCP Server
The Steam MCP Server interacts with the Steam Web API, enabling you to retrieve and manage Steam-related data for players and games.
Social & Profile
Get player summaries, friends lists, Steam level, badges, badge progress, and ban status
View user group memberships and resolve vanity URLs to 64-bit Steam IDs
Game Library
List owned games with playtime stats (with pagination/sorting), recently played games, and game details (description, price, requirements)
Check if a game is played via Family Sharing and search the Steam catalog by name
Achievements & Stats
View player achievements and in-game stats for specific games
Get global achievement percentages, aggregated global game stats, and achievement/stat schemas
Summarize achievement progress, list perfect games (100% achievements)
Game Info
Fetch latest news and patch notes, current player counts, and game server info at a given IP
Check if a specific app version is up to date
Inventory
Access player inventories for any game (requires public profile), with specialized tools for TF2, CS2/CSGO, and Dota 2
Wishlist
Retrieve a player's wishlist (with priorities and dates added) and check how many users have wishlisted a specific game
Trading (requires API key with trade permissions)
View active/historical trade offers, trade summaries, and specific trade offer details
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Steam MCP Servershow me my recently played games"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Steam MCP Server
An MCP (Model Context Protocol) server that provides tools for interacting with the Steam Web API.
Setup
1. Get a Steam API Key
Obtain an API key from Steam's developer portal.
2. Install Dependencies
npm install3. Build
npm run build4. Configure Your MCP Client
Claude Code
Add to your Claude Code settings file (~/.claude/settings.json):
{
"mcpServers": {
"steam": {
"command": "node",
"args": ["/path/to/steam-mcp-server/dist/index.js"],
"env": {
"STEAM_API_KEY": "your-api-key-here",
"STEAM_ID": "your-64-bit-steam-id"
}
}
}
}Or use npx (no build required):
{
"mcpServers": {
"steam": {
"command": "npx",
"args": ["-y", "@sharkusmanch/steam-mcp-server"],
"env": {
"STEAM_API_KEY": "your-api-key-here",
"STEAM_ID": "your-64-bit-steam-id"
}
}
}
}Claude Desktop
Add to your Claude Desktop configuration:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"steam": {
"command": "npx",
"args": ["-y", "@sharkusmanch/steam-mcp-server"],
"env": {
"STEAM_API_KEY": "your-api-key-here",
"STEAM_ID": "your-64-bit-steam-id"
}
}
}
}Cursor
Add to Cursor's MCP settings (.cursor/mcp.json in your project or global config):
{
"mcpServers": {
"steam": {
"command": "npx",
"args": ["-y", "@sharkusmanch/steam-mcp-server"],
"env": {
"STEAM_API_KEY": "your-api-key-here",
"STEAM_ID": "your-64-bit-steam-id"
}
}
}
}Windsurf
Add to Windsurf's MCP configuration (~/.windsurf/mcp.json):
{
"mcpServers": {
"steam": {
"command": "npx",
"args": ["-y", "@sharkusmanch/steam-mcp-server"],
"env": {
"STEAM_API_KEY": "your-api-key-here",
"STEAM_ID": "your-64-bit-steam-id"
}
}
}
}Related MCP server: mcp-server-steam
Environment Variables
Variable | Required | Description |
| Yes | Your Steam Web API key |
| No | Default Steam ID to use when not specified in tool calls |
| No | Per-request timeout for Steam API calls in milliseconds (default |
When STEAM_ID is set, you can call tools like get_owned_games without passing a Steam ID - it will use your default profile automatically.
Reliability & Pagination
Every Steam API request is bounded by a timeout (
STEAM_HTTP_TIMEOUT_MS) and automatically retries transient failures (timeouts, HTTP 429, and 5xx) with exponential backoff. Non-retriable errors (401/403/404) fail fast with a clear, actionable message, and failures are returned withisError: true.List-returning tools accept
limitandoffsetand return a consistent envelope with the pre-slice total and ahas_moreflag, e.g.{ "total_games": 412, "returned": 50, "offset": 0, "has_more": true, "games": [...] }.get_inventoryadditionally returns anext_cursor(Steamstart_assetid) for deep paging.search_appsuses Steam's relevance-ranked storefront search (no full-catalog download), so it returns the top matches quickly and reliably.
Available Tools
Social & Profile
Tool | Description |
| Get player profile info (name, avatar, status, current game) |
| Get a player's friends list |
| Get player's Steam account level |
| Get player's badges, XP, and level progression |
| Get trading card collection progress |
| Check for VAC bans, game bans, or trade bans |
| Get Steam groups a player belongs to |
| Convert vanity URL to 64-bit Steam ID |
Game Library
Tool | Description |
| Get all games owned with playtime stats (supports pagination) |
| Get games played in last 2 weeks |
| Get detailed game info (description, price, requirements) |
| Check if playing via Steam Family Sharing |
| Search Steam catalog by game name |
Achievements & Stats
Tool | Description |
| Get player's achievements for a game |
| Get player's statistics for a game |
| Get global achievement unlock rates |
| Get global aggregated stats for a game |
| Get games where player has 100% achievements |
| Get condensed achievement progress across games |
| Get achievement/stat definitions for a game |
Game Info
Tool | Description |
| Get latest news and patch notes for a game |
| Get current number of players in a game |
| Get game servers at a specific IP |
| Check if an app version is up to date |
Inventory
Tool | Description |
| Get inventory for any game (requires public profile) |
| Get Team Fortress 2 inventory |
| Get CS2/CSGO inventory |
| Get Dota 2 inventory |
Finding Your Steam ID
Use resolve_vanity_url with your custom profile URL, or find your 64-bit Steam ID at steamid.io.
License
MIT
Available Tools
34 toolscheck_app_updateC
Check if a specific version of an app is up to date
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | Steam application ID | |
| version | Yes | Current version number to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral information. It doesn't disclose whether this is a read-only operation, what permissions are needed, how results are returned (e.g., boolean, version comparison details), rate limits, or error conditions. The description states what the tool does but not how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with every word contributing to understanding the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that performs a version check. It doesn't explain what 'up to date' means in this context, what the return value indicates (e.g., boolean, latest version number), or error handling for invalid inputs. The description covers basic purpose but misses critical behavioral and output details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific information beyond what's in the schema, which has 100% coverage with clear descriptions for both parameters. The baseline score of 3 reflects adequate parameter documentation solely through the schema, with no additional value from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as checking if a specific app version is up to date, using the verb 'check' and specifying the resource (app version). It distinguishes from most sibling tools which focus on retrieving data rather than checking status, though it doesn't explicitly differentiate from similar update-related tools (none exist in the sibling list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing app ownership), context for version checking, or comparison to other tools like 'search_apps' for app discovery. Usage is implied but not explicitly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_achievementsC
Get a player's achievements for a specific game
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) | |
| app_id | Yes | Steam application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states the action ('Get achievements') without detailing behavioral traits like authentication needs, rate limits, error handling, or response format. This is a significant gap for a tool with no annotation coverage, as it leaves the agent unaware of operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded and wastes no space, making it easy for an agent to parse quickly and understand the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not address behavioral aspects like authentication, rate limits, or error handling, nor does it explain the return values or format. For a tool with no structured data beyond the input schema, the description should provide more context to guide the agent effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('steam_id' and 'app_id') with details like optionality and patterns. The description does not add any additional meaning beyond the schema, such as explaining the relationship between parameters or providing usage examples. Since schema coverage is high, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('a player's achievements for a specific game'), making it easy to understand what the tool does. However, it does not explicitly differentiate itself from sibling tools like 'get_achievement_summary' or 'get_badge_progress', which might also relate to achievements or progress tracking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'get_achievement_summary' or other achievement-related siblings. It lacks context about prerequisites, exclusions, or specific scenarios where this tool is preferred, leaving the agent to infer usage based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_achievement_summaryB
Get a summary of achievement progress across all games or specific games
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) | |
| app_ids | No | Specific app IDs to check (if omitted, checks recently played games) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool retrieves a summary but doesn't disclose behavioral traits such as rate limits, authentication needs (implied by steam_id), data freshness, or what 'summary' entails (e.g., aggregated stats vs. list). This is a significant gap for a tool with potential API constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste, front-loaded with the core purpose. It appropriately sized for the tool's complexity, earning its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 100% schema coverage, the description is minimally complete. It states the purpose but lacks details on behavior, output format, or error handling. For a tool with potential authentication and data scope nuances, more context would be beneficial to compensate for missing structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (steam_id and app_ids). The description adds no additional meaning beyond implying the scope ('all games or specific games'), which is already covered by the schema's descriptions. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'summary of achievement progress', specifying scope 'across all games or specific games'. It distinguishes from siblings like 'get_achievements' (detailed achievements) and 'get_recently_played' (recent games list), though not explicitly named. The purpose is specific but could be more distinct from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for achievement progress summaries, with context from the input schema suggesting optional filtering by app_ids or defaulting to recently played games. However, it lacks explicit guidance on when to use this vs. alternatives like 'get_achievements' or 'get_recently_played', and no exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_badge_progressB
Get progress on community badge crafting (trading cards)
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) | |
| badge_id | No | Specific badge ID to check (omit for all badges) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'progress' which implies read-only status checking, but doesn't specify authentication requirements, rate limits, response format, or whether this requires special permissions. For a tool accessing user-specific Steam data, this represents significant gaps in behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple data retrieval tool and front-loads the core purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only data retrieval tool with good schema coverage but no output schema, the description is minimally adequate. It states what the tool does, but lacks context about authentication, response format, error conditions, or how it differs from similar tools. The absence of output schema means the agent won't know what data structure to expect from this call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema - no clarification about badge crafting mechanics, progress metrics, or how the parameters interact. Baseline 3 is appropriate when the schema does all the parameter documentation work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'progress on community badge crafting (trading cards)', which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'get_badges' - while 'progress' suggests more detailed status than just listing badges, this distinction isn't explicitly stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_badges' or other Steam data tools. There's no mention of prerequisites, context, or comparison with sibling tools, leaving the agent to infer usage patterns from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_badgesB
Get a player's Steam badges with game names, XP, and level progression
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) | |
| include_game_names | No | Include game names for game badges (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions what data is retrieved but lacks behavioral details such as authentication requirements, rate limits, error handling, or response format. For a read operation with no annotation coverage, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part ('Get a player's Steam badges with game names, XP, and level progression') directly contributes to understanding the tool's function, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 2 parameters with full schema coverage, the description is minimally adequate. It covers the purpose but lacks details on behavioral traits, output format, or error handling. For a read tool with no structured safety or output info, it should provide more context to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters. The description doesn't add any parameter-specific semantics beyond implying badge retrieval, which the schema already covers with its detailed descriptions. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('player's Steam badges') with specific attributes ('game names, XP, and level progression'). It distinguishes from siblings like 'get_achievements' or 'get_badge_progress' by focusing on badges rather than achievements or progress details, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving badge information but doesn't specify when to use this tool versus alternatives like 'get_badge_progress' or 'get_achievements'. No explicit when-not-to-use guidance or prerequisites are mentioned, leaving usage context inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_csgo_inventoryB
Get a player's CS2/CSGO inventory (via official API)
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool uses the 'official API', which hints at reliability but doesn't cover key aspects like rate limits, authentication needs, error handling, or response format. For a tool that likely involves external API calls, this lack of transparency is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place, with no redundancy or fluff, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally complete. It states what the tool does but lacks behavioral details and usage context. Without annotations or output schema, the agent has insufficient information about how the tool behaves or what it returns, leaving gaps in understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 100% description coverage, so the schema fully documents the steam_id. The description adds no additional parameter semantics, but with high schema coverage and only one parameter, the baseline is strong. It doesn't compensate for any gaps, but none exist, so a score of 4 reflects adequate coverage without extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('player's CS2/CSGO inventory'), making the purpose understandable. It distinguishes from siblings by specifying the game (CS2/CSGO) versus other inventory tools like get_dota2_inventory or get_tf2_inventory, though it doesn't explicitly contrast them. However, it doesn't fully differentiate from the generic 'get_inventory' sibling, which might be ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over other inventory tools (e.g., get_dota2_inventory) or the generic get_inventory, nor does it specify prerequisites or exclusions. The agent must infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dota2_inventoryC
Get a player's Dota 2 inventory (via official API)
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool uses the 'official API' but doesn't disclose behavioral traits like rate limits, authentication needs, or what the response format looks like. For a read operation with no annotations, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a simple tool, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what the inventory includes, how results are formatted, or any limitations. For a tool that likely returns complex data, more context is needed to understand its full behavior and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'steam_id' fully documented in the schema. The description adds no additional meaning beyond what the schema provides, such as explaining the optionality or alternative uses. Baseline score of 3 is appropriate since the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('player's Dota 2 inventory'), specifying it's via the official API. However, it doesn't explicitly differentiate from sibling tools like 'get_inventory' or 'get_csgo_inventory' beyond mentioning Dota 2, which is implied but not contrasted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'get_inventory' or 'get_csgo_inventory'. The description lacks context about prerequisites, such as needing a Steam ID or when this tool is preferred over others for Dota 2-specific data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_friends_listB
Get a player's Steam friends list with names and relationship info
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) | |
| include_info | No | Include friend names and online status (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what data is returned ('names and relationship info'). It doesn't disclose behavioral aspects like rate limits, authentication requirements (implied by STEAM_ID env var but not explained), privacy restrictions, or whether the list includes pending/blocked relationships.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with zero waste - every word contributes to understanding the tool's purpose. It's front-loaded with the core action and immediately specifies the data returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with good schema coverage but no annotations or output schema, the description is minimally adequate. It covers the basic purpose but lacks important context about authentication, rate limits, and detailed return format that would help an agent use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters. The description doesn't add any parameter semantics beyond what's in the schema (e.g., it doesn't explain what 'relationship info' includes or format of returned data). Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('player's Steam friends list') with specific details ('with names and relationship info'). It distinguishes from siblings like get_player_summary or get_user_groups by focusing exclusively on friends list data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention if this is for current friends only, how it differs from get_user_groups (which might include non-friend groups), or any prerequisites beyond the optional steam_id parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_detailsC
Get detailed information about a Steam game including description, price, and requirements
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | Steam application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions what information is retrieved but lacks behavioral details such as rate limits, authentication requirements, error handling, or response format. For a read operation with no annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get detailed information about a Steam game') and lists key data points without unnecessary words. Every part earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple input schema, the description is incomplete. It lacks details on behavioral traits, response format, and usage context relative to siblings. For a tool in a crowded namespace with 30+ siblings, more guidance is needed to ensure proper agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'app_id' documented as 'Steam application ID'. The description adds no additional parameter semantics beyond implying the tool fetches details for a specific game, which is already clear from the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('detailed information about a Steam game'), specifying key data points like description, price, and requirements. It distinguishes from siblings by focusing on comprehensive game details rather than updates, achievements, inventories, or other specific aspects, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools (e.g., get_game_news, get_game_stats, get_player_summary), there is no indication of context, prerequisites, or exclusions, leaving the agent to infer usage based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_newsC
Get latest news and patch notes for a game
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | Steam application ID | |
| count | No | Number of news items to return (default 5) | |
| max_length | No | Max length of content (default 1000, 0 for full content) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Get latest news and patch notes', implying a read-only operation, but fails to specify if it requires authentication, has rate limits, returns structured data, or handles errors. This leaves significant gaps in understanding the tool's behavior beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action, making it easy to parse. However, it could be slightly more structured by including key usage hints, but it remains appropriately concise for its simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not explain the return format (e.g., list of news items with titles, dates, content), error handling, or authentication needs. For a tool with 3 parameters and no structured behavioral hints, more context is needed to fully guide the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with clear documentation for all parameters (app_id, count, max_length). The description does not add any semantic details beyond what the schema provides, such as explaining what 'app_id' represents or how news items are filtered. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'latest news and patch notes for a game', making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'get_game_details' or 'search_apps', which might also provide game-related information, leaving some ambiguity about its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing a valid Steam app ID, or compare it to siblings like 'get_game_details' for broader game information or 'search_apps' for finding app IDs, leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_schemaB
Get the achievement and stat schema for a game (names, descriptions, icons)
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | Steam application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states what the tool does but lacks behavioral details: it doesn't mention if this is a read-only operation, potential rate limits, authentication needs, error conditions, or what the output format looks like (e.g., JSON structure). This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part ('Get the achievement and stat schema for a game (names, descriptions, icons)') contributes directly to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks completeness in behavioral transparency and usage guidelines, which are important for effective tool selection and invocation by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'app_id' fully documented as 'Steam application ID'. The description doesn't add any parameter-specific details beyond what the schema provides, such as examples or constraints. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('achievement and stat schema for a game'), including specific details like names, descriptions, and icons. It distinguishes from siblings like 'get_game_details' or 'get_achievements' by focusing on the schema rather than actual data. However, it doesn't explicitly contrast with these siblings in the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools (e.g., 'get_achievements', 'get_game_stats'), it lacks explicit context for selection, such as whether this is for metadata versus live data or prerequisites like needing an app_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_statsC
Get a player's statistics for a specific game
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) | |
| app_id | Yes | Steam application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves statistics but doesn't mention whether this requires authentication, rate limits, response format, or error conditions. For a read operation with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It front-loads the core purpose efficiently, making it easy to parse without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a tool with two parameters. It doesn't explain what statistics are returned, error handling, or dependencies like the STEAM_ID env var mentioned in the schema. For a data retrieval tool, this leaves critical context gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('steam_id' and 'app_id') with details like optionality and patterns. The description adds no additional meaning beyond implying these parameters are needed, meeting the baseline for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and target ('a player's statistics for a specific game'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from similar siblings like 'get_global_game_stats' or 'get_game_details', which would require more specificity to earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools related to game data (e.g., 'get_global_game_stats', 'get_game_details'), there's no indication of context, prerequisites, or exclusions, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_global_achievement_percentagesB
Get global achievement unlock percentages for a game
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | Steam application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions retrieving 'global achievement unlock percentages,' which implies a read-only operation, but fails to detail aspects like rate limits, authentication requirements, data freshness, or potential errors (e.g., invalid app_id). For a tool with no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence: 'Get global achievement unlock percentages for a game.' It is front-loaded with the core action and resource, with no unnecessary words or redundant information. This makes it highly efficient and easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, no nested objects) and high schema coverage, the description is minimally adequate. However, with no output schema and no annotations, it lacks details on return values (e.g., format of percentages) and behavioral traits. This leaves gaps in completeness for effective agent use, though the simplicity mitigates some issues.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'app_id' parameter clearly documented as 'Steam application ID.' The description does not add any additional meaning beyond this, such as format examples or constraints. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema adequately handles parameter semantics without extra description value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get global achievement unlock percentages for a game.' It specifies the verb ('Get'), resource ('global achievement unlock percentages'), and scope ('for a game'), making the function unambiguous. However, it does not explicitly differentiate from sibling tools like 'get_achievements' or 'get_achievement_summary,' which might have overlapping purposes, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings such as 'get_achievements' and 'get_achievement_summary' available, it lacks explicit instructions on scenarios where this tool is preferred, such as for aggregated global data versus user-specific achievements. This omission leaves usage context implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_global_game_statsB
Get global aggregated stats for a game (requires knowing stat names from schema)
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | Steam application ID | |
| stat_names | Yes | Array of stat names to retrieve (get from get_game_schema) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions a prerequisite (stat names from schema) but doesn't disclose other behavioral traits such as whether this is a read-only operation, potential rate limits, authentication requirements, or what the aggregated stats represent (e.g., averages, totals). This leaves significant gaps for an agent to understand tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose and includes a crucial prerequisite. There's no wasted text, and it's appropriately sized for a tool with two well-documented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (aggregated stats retrieval with a prerequisite), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'global aggregated stats' means (e.g., across all players?), the format of returned data, or error conditions, leaving the agent with insufficient context for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (app_id and stat_names) adequately. The description adds marginal value by clarifying that stat_names should be obtained from 'get_game_schema', but doesn't provide additional semantic context beyond what's in the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'global aggregated stats for a game', which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'get_game_stats' (which likely retrieves player-specific stats), leaving some ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning 'requires knowing stat names from schema', which suggests a prerequisite (using get_game_schema first). However, it doesn't provide explicit guidance on when to choose this tool over alternatives like 'get_game_stats' or other data retrieval tools, leaving usage context partially implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inventoryB
Get a player's inventory for any game (requires public profile)
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) | |
| app_id | Yes | Steam application ID (e.g., 753 for Steam, 730 for CS2) | |
| context_id | No | Context ID (usually 2 for most games, 6 for Steam community items) | |
| count | No | Max items to return (default 75, max 5000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'requires public profile', which adds useful context about authentication needs. However, it doesn't disclose other behavioral traits like rate limits, error conditions, pagination (implied by 'count' parameter but not explained), or what happens if the profile isn't public. For a tool with no annotations, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: 'Get a player's inventory for any game (requires public profile)'. It's front-loaded with the core purpose and includes essential context in parentheses. Every word earns its place with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is minimal but covers the basic purpose and a key constraint. However, for a tool with 4 parameters and no output schema, it should ideally explain more about the return format or behavior. It's adequate as a starting point but lacks depth for full contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain 'steam_id' or 'app_id' further). Baseline is 3 when schema does the heavy lifting, but no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a player's inventory for any game'. It specifies the verb ('Get') and resource ('player's inventory'), and distinguishes it from sibling tools like get_csgo_inventory or get_dota2_inventory by mentioning 'any game'. However, it doesn't explicitly differentiate from other inventory tools beyond the 'any game' scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context: 'requires public profile' indicates a prerequisite. It implies when to use this tool (for general inventory retrieval) versus specialized siblings like get_csgo_inventory, but doesn't explicitly state alternatives or exclusions. No clear guidance on when not to use it is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_owned_gamesA
Get games owned by a player with playtime statistics. Use limit/offset for pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) | |
| include_free_games | No | Include free-to-play games | |
| limit | No | Max games to return (default: all) | |
| offset | No | Number of games to skip for pagination | |
| sort_by | No | Sort order: playtime (desc), name (asc), or recent (by 2-week playtime) | playtime |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions pagination behavior ('Use limit/offset for pagination'), which is useful. However, it doesn't cover other important traits like whether this is a read-only operation (implied by 'Get'), rate limits, authentication needs (though hinted by steam_id parameter), error handling, or response format. The description adds some context but leaves significant gaps for a tool with 5 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just two sentences: one stating the purpose and one providing usage guidance for pagination. Every word earns its place, and it's front-loaded with the core functionality. There's no redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters, no output schema, no annotations), the description is incomplete. It covers the basic purpose and pagination but lacks details on authentication (steam_id usage), response structure (playtime statistics format), error cases, or how it differs from siblings. Without annotations or output schema, the description should do more to compensate, but it falls short of being fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by implying pagination usage for limit/offset but doesn't provide additional semantics like format examples or edge cases. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get games owned by a player with playtime statistics.' It specifies the resource (games owned by a player) and includes additional functionality (playtime statistics). However, it doesn't explicitly differentiate from sibling tools like 'get_recently_played' or 'get_wishlist,' which also retrieve game-related data but with different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage guidance by mentioning 'Use limit/offset for pagination,' which helps with implementation. However, it lacks explicit guidance on when to use this tool versus alternatives like 'get_recently_played' (for recent games) or 'get_wishlist' (for wishlisted games). No exclusions or prerequisites are stated, leaving usage context implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_perfect_gamesA
Get games where the player has unlocked ALL achievements (100% completion)
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it indicates a read operation ('Get games'), it does not mention potential constraints such as rate limits, authentication needs, or what happens if the Steam ID is invalid. The description lacks details on return format, pagination, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded with the core functionality, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (retrieving filtered game data) and the absence of both annotations and an output schema, the description is incomplete. It adequately explains the purpose but lacks details on behavioral traits, return values, and usage context, which are needed for a read operation with no structured output documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'steam_id' parameter fully documented in the schema. The description does not add any additional meaning or context about the parameter beyond what the schema provides, so it meets the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get games') and the precise criteria ('where the player has unlocked ALL achievements (100% completion)'). It distinguishes this tool from siblings like 'get_achievements' (which retrieves achievements) and 'get_achievement_summary' (which provides summary data) by focusing on fully completed games.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving fully completed games, but it does not explicitly state when to use this tool versus alternatives like 'get_owned_games' or 'get_achievement_summary'. No exclusions or prerequisites are mentioned, leaving the context somewhat open-ended.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_player_bansC
Check if a player has VAC bans, game bans, or trade bans
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool checks for bans but does not describe what the return values look like (e.g., ban counts, types, dates), any rate limits, authentication requirements, or error conditions. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not explain what the tool returns (e.g., ban details, format), potential errors, or usage constraints, which are critical for an agent to invoke the tool correctly in a real-world context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for its single parameter (steam_id), so the schema already documents it fully. The description does not add any parameter-specific information beyond what the schema provides, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Check if a player has VAC bans, game bans, or trade bans.' It specifies the verb ('check') and resource ('player bans'), but does not distinguish it from sibling tools, as there are no obvious ban-related alternatives among the siblings listed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, context for usage, or exclusions, leaving the agent to infer usage based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_player_countB
Get the current number of players in a game
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | Steam application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but doesn't mention potential limitations like rate limits, authentication requirements, data freshness (e.g., real-time vs cached), or error conditions. This leaves significant gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words. It front-loads the core purpose efficiently, making it easy to parse while conveying essential information without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with one well-documented parameter and no output schema, the description is minimally adequate. However, without annotations or output schema, it lacks details on return format (e.g., numeric count, timestamp), error handling, or dependencies, leaving room for improvement in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'app_id' clearly documented as 'Steam application ID'. The description adds no additional parameter information beyond implying it's for a 'game', which aligns with the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('current number of players in a game'), making the tool's purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_game_stats' or 'get_game_details' that might also provide player-related information, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools (e.g., 'get_game_stats', 'get_player_summary'), there's no indication of whether this is the primary method for player count data or if other tools might overlap, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_player_summaryB
Get Steam player profile information including name, avatar, status, and current game
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what data is returned but doesn't mention authentication requirements, rate limits, error conditions, or whether this is a read-only operation (though 'Get' implies reading). For a tool accessing external API data with no annotation coverage, this leaves significant behavioral gaps unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately states the tool's purpose and key return fields. There's no wasted verbiage, repetition, or unnecessary elaboration. It's appropriately sized for a simple lookup tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with one parameter and no output schema, the description covers the basic purpose and return data. However, without annotations or output schema, it should ideally mention authentication needs or API constraints. The description is minimally complete but leaves behavioral aspects uncovered that would help an agent use it correctly in production scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with one parameter fully documented in the schema. The description adds no parameter information beyond what's in the schema - it doesn't explain the steam_id format, the STEAM_ID env var fallback, or provide examples. With high schema coverage, the baseline is 3 even without additional param details in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('Steam player profile information') with specific fields listed (name, avatar, status, current game). It distinguishes itself from siblings like get_player_bans or get_friends_list by focusing on profile summary rather than bans, friends, or other data types. However, it doesn't explicitly differentiate from get_steam_level or similar profile-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate compared to siblings like get_player_bans (for ban status) or get_friends_list (for social connections), nor does it specify prerequisites or exclusions. The only usage hint comes from the schema's optional parameter note about STEAM_ID env var, but this isn't in the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recently_playedB
Get games played by a user in the last two weeks
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) | |
| count | No | Maximum number of games to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes a read operation ('Get') but doesn't mention rate limits, authentication needs, error handling, or response format. For a tool with zero annotation coverage, this leaves significant behavioral gaps, though it doesn't contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence ('Get games played by a user in the last two weeks') directly contributes to understanding the tool's function, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple input schema with full coverage, the description provides basic purpose but lacks behavioral context (e.g., response format, error cases). It's minimally adequate for a read-only tool but doesn't fully compensate for the absence of structured metadata, leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (steam_id and count). The description doesn't add any parameter-specific information beyond what's in the schema, such as explaining the 'last two weeks' timeframe or how it interacts with parameters. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('games played by a user'), and specifies the time constraint ('in the last two weeks'). It distinguishes from siblings like 'get_owned_games' by focusing on recent activity rather than ownership, though it doesn't explicitly name alternatives. This is clear but lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (retrieving recent gameplay) but doesn't explicitly state when to use this tool versus alternatives like 'get_owned_games' or 'get_game_stats'. No exclusions or prerequisites are mentioned, leaving usage guidance at an implied level rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_servers_at_addressC
Get game servers running at a specific IP address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | IP address or IP:port to query (public IPs only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool queries game servers at an IP address but omits critical details like rate limits, authentication requirements, error handling, or what 'game servers' entails (e.g., types, formats). This leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, earning a perfect score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., server list details, error formats) or address potential complexities like network timeouts or invalid inputs, making it inadequate for a tool with behavioral unknowns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting the 'address' parameter as an IP address or IP:port for public IPs. The description adds no additional parameter semantics beyond this, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('game servers running at a specific IP address'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_player_count' or 'get_game_stats', which reduces the score from a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as other server-related queries or IP-based lookups. It lacks context about prerequisites, exclusions, or recommended scenarios, leaving usage entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_steam_levelC
Get a player's Steam account level
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe how it behaves: no information on authentication needs, rate limits, error conditions, or what the output looks like (e.g., integer level). This leaves significant gaps for an agent to use it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., numeric level, error formats) or behavioral aspects like authentication. For a tool with no structured metadata, more context is needed to be fully usable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'steam_id' fully documented in the schema (including format and optionality). The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('player's Steam account level'), making it immediately understandable. However, it doesn't distinguish this tool from potential sibling tools that might also retrieve player information, though none of the listed siblings specifically target account level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While it's implied this is for retrieving account level, there's no mention of prerequisites, context, or comparison to other player data tools like 'get_player_summary' or 'get_player_bans'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tf2_inventoryC
Get a player's Team Fortress 2 inventory (via official API)
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the data source ('official API') which is useful context, but doesn't describe what the tool returns (e.g., inventory items, their properties, format), error conditions, rate limits, authentication requirements, or whether it's a read-only operation. The description is minimal and leaves significant behavioral aspects unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple lookup tool and front-loads the essential information: what it does and the data source.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the return value contains (inventory structure, item properties), error handling, authentication requirements, or rate limiting. The agent would need to guess about the tool's behavior and output format based solely on the tool name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single parameter 'steam_id'. The description adds no additional parameter information beyond what's in the schema. The baseline score of 3 is appropriate when the schema does all the parameter documentation work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('player's Team Fortress 2 inventory'), and specifies the data source ('via official API'). It distinguishes from general inventory tools like 'get_inventory' by specifying TF2, but doesn't explicitly differentiate from other game-specific inventory tools like 'get_csgo_inventory' or 'get_dota2_inventory' beyond the game name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over the general 'get_inventory' tool or other game-specific inventory tools, nor does it discuss prerequisites like authentication or API key requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trade_historyB
Get completed trade history with partner names. Requires API key with trade permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| max_trades | No | Maximum number of trades to return (default 30, max 100) | |
| include_failed | No | Include failed/rolled-back trades | |
| include_partner_names | No | Include partner names (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the authentication requirement ('Requires API key with trade permissions'), which is valuable context. However, it doesn't describe rate limits, pagination behavior, error conditions, or what format the trade history is returned in (though there's no output schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - just two sentences that each earn their place. The first sentence states the purpose, the second states the authentication requirement. There's zero wasted verbiage and it's front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters with 100% schema coverage but no annotations and no output schema, the description provides basic purpose and auth context. However, for a tool that retrieves historical data with filtering options, more context about return format, data freshness, or typical use cases would be helpful. The description is minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all three parameters with their descriptions, defaults, and constraints. The description adds no additional parameter information beyond what's in the schema, meeting the baseline expectation when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'completed trade history with partner names', making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_trade_offer' or 'get_trade_offers', which focus on pending offers rather than completed history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Requires API key with trade permissions' which provides some context about prerequisites, but offers no guidance on when to use this tool versus alternatives like 'get_trade_offers' or 'get_trade_offers_summary'. There's no explicit when/when-not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trade_offerB
Get details of a specific trade offer by ID. Requires API key with trade permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| trade_offer_id | Yes | The trade offer ID to look up |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the API key requirement, which is useful, but lacks details on rate limits, error handling, response format, or whether this is a read-only operation. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with only two sentences, both of which are essential: the first states the purpose, and the second specifies the permission requirement. There is no wasted text, and it's front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that likely returns detailed trade data. It doesn't explain what 'details' include, potential return values, or error scenarios, leaving the agent with insufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents the 'trade_offer_id' parameter thoroughly. The description doesn't add any additional meaning or context beyond what's in the schema, such as ID format or examples, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get details') and resource ('specific trade offer by ID'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling 'get_trade_offers' (plural), which appears to retrieve multiple offers rather than a specific one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some context with 'Requires API key with trade permissions,' which implies a prerequisite but doesn't explicitly state when to use this tool versus alternatives like 'get_trade_offers' or 'get_trade_history.' Usage is implied rather than clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trade_offersB
Get active trade offers with partner names. Requires API key with trade permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| get_sent | No | Include sent trade offers | |
| get_received | No | Include received trade offers | |
| active_only | No | Only return active (pending) offers | |
| include_partner_names | No | Include partner names (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the requirement for an API key with trade permissions, which is useful. However, it lacks details on rate limits, pagination, error handling, or what 'active' means operationally. For a tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and front-loaded, consisting of two sentences that directly state the tool's purpose and a key requirement. Every word serves a purpose, with no redundant or vague language, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a trade-related tool with no annotations and no output schema, the description is insufficient. It doesn't explain what data is returned (e.g., offer details, statuses), how results are structured, or potential side effects. For a tool that likely returns structured data, more context is needed to ensure proper usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema fully documents all four parameters. The description adds no specific parameter information beyond implying 'active' filtering and partner names inclusion, which are already covered in the schema. This meets the baseline of 3, as the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get active trade offers with partner names.' It specifies the verb ('Get'), resource ('active trade offers'), and includes partner names as a key feature. However, it doesn't explicitly differentiate from sibling tools like 'get_trade_offer' (singular) or 'get_trade_offers_summary,' leaving some ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context by stating 'Requires API key with trade permissions,' which indicates prerequisites. However, it doesn't offer guidance on when to use this tool versus alternatives like 'get_trade_offer' or 'get_trade_history,' nor does it specify exclusions or ideal scenarios for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trade_offers_summaryA
Get a summary of pending trade offers (counts only). Requires API key with trade permissions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the permission requirement ('Requires API key with trade permissions'), which is useful behavioral context. However, it doesn't mention other traits like rate limits, response format, or whether it's read-only (implied by 'Get' but not explicit).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that are front-loaded with the core purpose, followed by a prerequisite. Every word adds value without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0 parameters, the description covers the purpose and permissions adequately. However, for a tool that likely returns data (e.g., counts), it doesn't explain the return format or any limitations, which could be helpful for an AI agent to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing on the tool's purpose and requirements instead. This aligns with the baseline for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'summary of pending trade offers (counts only)', making the purpose specific and understandable. It distinguishes from siblings like 'get_trade_offers' (which likely returns full details) by specifying 'summary' and 'counts only', though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating 'Requires API key with trade permissions', indicating prerequisites for use. It implies usage for pending trade offers only, but doesn't explicitly state when to use this versus alternatives like 'get_trade_offers' or 'get_trade_history', nor does it list exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_groupsB
Get the Steam groups a player is a member of
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like rate limits, authentication requirements, error conditions, pagination, or what format the groups are returned in. 'Get' implies a read operation, but no further details are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple lookup tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter lookup tool with no output schema, the description is minimally adequate. It states what the tool does but lacks information about return format, error handling, or authentication needs. With no annotations and no output schema, more context would be helpful for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the steam_id parameter. The description adds no additional parameter semantics beyond what's in the schema (e.g., doesn't explain what happens if steam_id is omitted when STEAM_ID env var isn't set). Baseline 3 is appropriate when schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('Steam groups a player is a member of'), making the purpose unambiguous. It distinguishes from siblings like 'get_friends_list' or 'get_player_summary' by focusing specifically on group membership. However, it doesn't explicitly contrast with all similar tools, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While the purpose is clear, there's no mention of prerequisites, timing considerations, or comparison to other group-related tools (none exist in siblings, but still lacks general usage context).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wishlistA
Get a player's Steam wishlist with game names, priorities, and dates added
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 64-bit Steam ID (optional if STEAM_ID env var is set) | |
| include_names | No | Include game names (default: true) |
TDQS
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 states what data is returned but doesn't cover aspects like rate limits, authentication needs, error conditions, or whether the operation is read-only (implied but not explicit).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose with no wasted words. Every element ('Get', 'player's Steam wishlist', data fields) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read operation with no annotations and no output schema, the description is minimally adequate. It covers the purpose and data fields but lacks details on behavioral traits, error handling, or response structure, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters. The description doesn't add any parameter-specific details beyond what's in the schema, such as explaining 'priorities' or 'dates added' formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('a player's Steam wishlist'), specifying the data returned ('game names, priorities, and dates added'). It distinguishes from siblings like 'get_wishlist_item_count' by providing full details rather than just a count.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving wishlist data but doesn't explicitly state when to use this tool versus alternatives like 'get_owned_games' or 'get_recently_played'. No guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wishlist_item_countA
Get the number of users who have a specific game on their wishlist
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | Steam application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While it clearly describes the tool's purpose, it lacks important behavioral details such as whether this is a real-time or cached count, any rate limits, authentication requirements, or what format the count is returned in. For a data retrieval tool with zero annotation coverage, this represents significant gaps in behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently communicates the tool's purpose with zero wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information about what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter retrieval tool with good schema coverage but no annotations and no output schema, the description provides adequate but incomplete context. It clearly states what the tool does but lacks information about return format, data freshness, or any behavioral constraints. The description is complete enough for basic understanding but leaves important operational details unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage with the 'app_id' parameter clearly documented as 'Steam application ID'. The description doesn't add any parameter semantics beyond what the schema already provides, but since schema coverage is high, the baseline score of 3 is appropriate. The description doesn't compensate for any gaps because there are none in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get the number of users') and resource ('who have a specific game on their wishlist'), using a precise verb+resource structure. It effectively distinguishes this tool from sibling tools like 'get_wishlist' (which likely returns wishlist items rather than counts) and 'get_player_count' (which counts players rather than wishlist users).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (when you need wishlist count data for a specific game), but provides no explicit guidance on when to use this tool versus alternatives like 'get_wishlist' or 'get_player_count'. No exclusions or prerequisites are mentioned, leaving the agent to infer appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_vanity_urlA
Convert a Steam vanity URL (custom profile name) to a 64-bit Steam ID
| Name | Required | Description | Default |
|---|---|---|---|
| vanity_url | Yes | The vanity URL part (e.g., 'gaben' from steamcommunity.com/id/gaben) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the conversion behavior but lacks details on error handling (e.g., invalid URLs), rate limits, authentication requirements, or output format, which are critical for a tool performing an external lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words, front-loading the core purpose ('Convert a Steam vanity URL...') without unnecessary elaboration, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that performs an external API call. It misses key behavioral details like error responses, rate limits, and the structure of the returned Steam ID, leaving gaps in understanding how to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single parameter. The description adds minimal value by implying the parameter is a vanity URL part, but it does not provide additional context like format examples beyond what's in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Convert') and target resources ('Steam vanity URL' to '64-bit Steam ID'), with precise terminology that distinguishes it from all sibling tools which focus on games, achievements, inventories, or player data rather than ID resolution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use this tool (when you have a vanity URL and need the corresponding Steam ID), but it does not explicitly state when not to use it or name alternative tools for related tasks, such as resolving Steam IDs through other means.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_appsA
Search for Steam apps by name (searches the full Steam catalog)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to match against app names | |
| limit | No | Max results to return (default 25, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the search scope but omits critical behavioral details: whether this requires authentication, rate limits, pagination behavior, or the structure of returned results. For a search tool with zero annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Search for Steam apps by name') and adds essential scope clarification ('full Steam catalog'). Every word earns its place with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description provides adequate purpose and scope but lacks behavioral transparency and result format details. For a search tool with 2 parameters and 100% schema coverage, it meets minimum viability but leaves agents guessing about authentication, limits, and output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters well-documented in the schema. The description adds no parameter-specific information beyond implying the query matches against app names, which is already covered in the schema. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Search for Steam apps by name') and the resource ('Steam apps'), with explicit scope ('full Steam catalog'). It distinguishes from siblings like get_game_details or get_owned_games by focusing on catalog-wide name-based search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through 'searches the full Steam catalog', suggesting this is for broad discovery rather than user-specific data. However, it lacks explicit guidance on when to use this versus alternatives like get_game_details for specific apps or get_owned_games for user's library.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
34 tool updates
v0.4.0- First observed
check_app_update - First observed
get_achievement_summary - First observed
get_achievements - First observed
get_badge_progress - First observed
get_badges - First observed
get_csgo_inventory - First observed
get_dota2_inventory - First observed
get_friends_list - First observed
get_game_details - First observed
get_game_news - First observed
get_game_schema - First observed
get_game_stats - First observed
get_global_achievement_percentages - First observed
get_global_game_stats - First observed
get_inventory - First observed
get_owned_games - First observed
get_perfect_games - First observed
get_player_bans - First observed
get_player_count - First observed
get_player_summary - First observed
get_recently_played - First observed
get_servers_at_address - First observed
get_steam_level - First observed
get_tf2_inventory - First observed
get_trade_history - First observed
get_trade_offer - First observed
get_trade_offers - First observed
get_trade_offers_summary - First observed
get_user_groups - First observed
get_wishlist - First observed
get_wishlist_item_count - First observed
is_playing_shared_game - First observed
resolve_vanity_url - First observed
search_apps
TDQS
Most tools have clearly distinct purposes targeting specific resources like achievements, inventories, player data, or trade operations. However, some overlap exists between inventory tools (e.g., get_inventory vs. game-specific inventories like get_csgo_inventory) and between trade-related tools (get_trade_offers vs. get_trade_offers_summary), which could cause minor confusion.
All tools follow a consistent verb_noun naming pattern with clear, descriptive names. The pattern is uniformly applied across all 34 tools, using verbs like 'get', 'check', 'resolve', and 'search' followed by specific nouns, making them predictable and easy to understand.
With 34 tools, the count feels excessive for a Steam API server, leading to potential bloat and complexity. While Steam has many features, the server could benefit from consolidation or better scoping, as some tools (e.g., multiple trade-related tools) might be redundant or overly granular for typical agent use cases.
The tool set provides comprehensive coverage of the Steam domain, including player profiles, games, achievements, inventories, trades, and community features. It supports CRUD-like operations where applicable (e.g., fetching data) and covers key workflows without obvious gaps, ensuring agents can handle most Steam-related tasks effectively.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Steam Web API: profiles, owned games, achievements, app news, player counts.
Steam profiles, SteamID conversion, bans, FACEIT stats, friends and comparisons. Free, no API key.
Live Steam market data for AI agents: top sellers, deals, player counts. Paid per call via x402.
Live Steam Market API docs, schemas, products, games, markets and endpoint search.
Related MCP Servers
- AlicenseAqualityBmaintenanceExposes Steam Web API tools as MCP resources for Claude Code, Claude Desktop, and Gemini CLI, enabling profile lookups, game searches, achievement tracking, and more.11181MIT
- AlicenseAqualityCmaintenanceIntegrates with Steam Web API to enable querying user profiles, game libraries, store data, and community features like reviews and workshop items.16MIT
- AlicenseAqualityAmaintenanceEnables interaction with Steam: search games, get store details, reviews, prices, discounts, news, and player profiles, libraries, and achievements via the Steam Web API.252234MIT
- AlicenseNot gradedqualityDmaintenanceProvides Steam Web API integration for querying owned games, player achievements, app news, and store details. Part of the Pipeworx MCP gateway enabling natural language queries to Steam data.13MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/sharkusmanch/steam-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server