MCP server for Yahoo Fantasy Sports (baseball, football)
Strong schema definitions with comprehensive parameter descriptions and proper JSON Schema typing. All 12 tools have clear, action-oriented names (verb_noun pattern) and detailed descriptions (100-300 chars). Input schemas are well-structured with type constraints, enums, patterns, and min/max bounds. However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. Error handling guidance is absent. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Parameter descriptions are excellent (detailed constraints, examples of valid values), but lack explicit guidance on when to use each tool vs. similar ones (e.g., yahoo_search_free_agents vs. yahoo_get_waivers distinction).
League rules and configuration
Head-to-head matchup details
Quick lookup of who owns a player
Stats for a specific player (includes ownership)
View any team's roster in the league
Current/past week matchups
League standings
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting) for downstream tool chaining or data extraction. Responses must include league_id, team_id, player_id, and other IDs needed by follow-up tools.
No tool annotations despite all tools being read-only. Missing readOnlyHint annotation prevents LLMs from understanding that these tools are safe to call without confirmation and do not modify state.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 70 | <=2025-11-25 | v2 |
All rostered (taken) players across the league
League transaction history (adds, drops, trades)
Players currently on waivers
The leagues the authenticated account belongs to
Search available free agents
No error recovery guidance. Tool descriptions lack hints for common failure modes (e.g., 'If league_id is invalid, call yahoo_list_my_leagues to discover valid leagues'). Error responses likely lack actionable next steps.
Ambiguous tool selection. yahoo_search_free_agents and yahoo_get_waivers both search available players with overlapping sort/filter parameters. Descriptions do not clarify when to use each (FA vs. W status distinction is buried in parameter docs).
Pagination not explicitly documented. Tools like yahoo_search_free_agents and yahoo_get_taken_players accept 'count' but no offset/cursor. Unclear if results are paginated or if count is a hard limit.