MCP server for fetching Steam Community Market data including item prices, price history, and item search functionality
SteamTools MCP has 2 tools with basic schemas and minimal descriptions. Tool names follow verb_noun convention (get_, search_), which is good. However, descriptions are extremely terse (under 50 characters each), parameter descriptions lack depth, and output schemas are completely undocumented. Error handling returns structured objects but provides no guidance on recovery actions. Input schemas exist and have type definitions, preventing a complete failure, but lack the detail needed for production use. Parameter 'max_results' has a default (10) which is good, but lacks min/max bounds documentation. The caching and rate-limiting logic in the implementation is sound, but none of this sophistication is exposed to the LLM via tool descriptions or parameter guidance.
Get Steam market data for a specific item
Search Steam market items
Tool descriptions are critically short (under 50 chars) and lack context for LLM selection. 'Get Steam market data for a specific item' does not explain WHEN to call this vs search_steam_items, what data is returned, or what a successful response contains.
No parameter descriptions provided. 'appid' and 'item_name' are cryptic to an LLM, is appid a string or integer? What format? How does 'item_name' differ from search_term? LLMs cannot infer from names alone.
Output schemas are completely undocumented. The implementation returns nested objects (current_price, last_10_days_prices, error), but LLMs have no way to know this structure. They cannot plan downstream steps or extract fields reliably.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 46 | 2024-11-05+ | v1 |
Error responses include raw field data but no recovery guidance. When 'error' is present in the response, the LLM does not know whether to retry, ask the user, or try a different tool. E.g., 'Item not found or no longer available' should suggest: 'Try search_steam_items() with a partial name.'
Parameter 'max_results' has a default (10) but lacks bounds documentation. The rubric baseline requires min/max constraints to prevent LLMs from passing absurd values. What is the server-side limit? 1 - 100? 1 - 1000?
Tool naming distinction is unclear. Both tools operate on the same resource (Steam items). 'get_steam_item_data' suggests fetching details of a KNOWN item; 'search_steam_items' finds items by term. But the tool descriptions do not make this distinction explicit, inviting LLM confusion about when to use each.