OpenDota API Model Context Protocol server for AI assistants providing access to real-time Dota 2 statistics, match data, player information, and more
The server defines 3 tools with basic schemas and descriptions, but falls short of production quality. All tools have input schemas with type definitions and descriptions, which is a baseline requirement. However, descriptions are minimal (10-33 chars), parameter descriptions lack context about usage and constraints, and there is no documented output schema or pagination support. The tools are read-only and follow a reasonable verb_noun naming pattern, but the definitions lack the depth needed for reliable LLM tool selection and error recovery.
Fetch player information by account ID
Fetch recent matches for a player
Search for a player by name
Descriptions are too short (10-33 characters). Rubric baseline is 194 chars average. LLMs cannot determine when to select these tools instead of alternatives.
No output schema documented. LLMs cannot know what fields to expect in responses, making downstream tool chaining impossible and forcing the LLM to reason about unstructured output.
Parameter descriptions lack usage context. 'account_id' is described only as 'The player account ID' without explaining whether to look up players first, what valid ID ranges are, or whether system IDs vs human names are accepted.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 9 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 45 | - | v1 |
No pagination support visible. get_player_recent_matches accepts a limit parameter with default=5, but no offset/page parameter or next_cursor for iterating large result sets.
search_player accepts only 'query' as a string with no enum constraints or format hints. The parameter description does not clarify whether partial names work, case sensitivity, or what valid input looks like.
No error handling guidance. Tools offer no recovery hints, error categorization, or actionable messages. If get_player_by_id fails with an invalid account_id, the LLM will not know whether to retry, search first, or report a user error.