balldontlie.io NBA stats (free API key required)
This server has critical definition gaps across all 8 tools. Tool names lack action verbs (teams, players, games instead of list_teams, get_player, search_games), making intent ambiguous. Descriptions are extremely terse (1-2 words: 'All teams.', 'Players.', 'Stats.'), well below the 10-character minimum and far short of the 194-char baseline for production tools. Most parameters lack descriptions entirely: 'query', 'team_ids', 'cursor', 'per_page', 'seasons', 'dates', 'postseason', 'player_ids', 'game_ids' have no guidance on format, constraints, or purpose. Output schemas are completely undocumented, LLMs cannot plan downstream calls or extract needed fields. No error handling guidance. The server exposes API key handling via _apiKey parameter (security risk). Overall, this reads like a minimal proof-of-concept rather than a production-ready tool suite.
Single game.
Games.
Single player.
Players.
Season averages.
Stats.
Single team.
Tool names lack action verbs. Use list_teams, get_team, search_players, get_player, search_games, get_game, get_season_averages, search_stats instead of bare nouns. LLMs infer intent from verb-first naming.
Descriptions are 1-2 words ('All teams.', 'Players.', 'Stats.'). Minimum 10 chars required; baseline is 194 chars. Expand to explain WHAT the tool does, WHEN to use it, and what it returns. E.g., 'Retrieve all NBA teams. Use this to discover team IDs before filtering games or players by team.'
Parameters lack descriptions. 'query', 'team_ids', 'cursor', 'per_page', 'seasons', 'dates', 'postseason', 'player_ids', 'game_ids' have no guidance on format, constraints, or purpose. Add descriptions for every parameter: e.g., 'query: Player name substring (case-insensitive)', 'per_page: Results per page (1-100, default 25)', 'dates: Array of YYYY-MM-DD strings'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 28 | 2026-07-28+ | v2 |
All teams.
Output schemas are completely undocumented. LLMs cannot plan downstream calls or extract needed fields. Document what each tool returns: e.g., 'teams returns {id, abbreviation, city, conference, division, name}'. Include pagination info (total_count, next_cursor) for list tools.
API key exposed as _apiKey parameter. This is a security risk, credentials should never appear in tool parameters (they get logged). Use server-side secret injection via PLATFORM_BALLDONTLIE_KEY environment variable only, and validate it at startup.