Sports Feeds MCP. Sports — leagues, results and sports news. CF-robust RSS / Atom / RDF reader over a curated, edge-verified registry; on a Cloudflare egress block it falls back to the rss2json proxy.
Three tools with clear verb-noun naming (list_feeds, read_feed, fetch_feed) and reasonable descriptions (100-150 chars). All tools have input schemas with type definitions and required fields properly marked. However, parameter descriptions lack actionable constraints (no enums, ranges, or format specs). Output schemas are undocumented, LLMs cannot predict response structure. Error handling is minimal (only basic validation). No tool annotations (readOnlyHint, idempotentHint). Parameter 'limit' lacks min/max bounds despite accepting 1-50. The 'query' parameter across all tools lacks format guidance.
Fetch and normalize any RSS / Atom / RDF feed by URL. CF-robust: fetches directly and falls back to a proxy if the source blocks the gateway. Use list_feeds first for curated sources.
List the curated sports feeds (id, title, category, source). Optionally filter by category (sports) or keyword. Pass an id to read_feed.
Read a curated sports feed by its id (from list_feeds). Returns normalized items (title, link, published, summary). Optionally filter items by keyword.
Output schemas undocumented. LLMs cannot predict response structure (fields, types, nesting). Callers must infer from implementation.
Parameter 'limit' lacks min/max bounds in schema. Description says '1-50' but no JSON Schema minValue/maxValue. LLMs may pass invalid values.
Parameter 'query' (keyword filter) lacks format guidance. No description of what constitutes a valid query, case sensitivity, or special character handling.
No tool annotations (readOnlyHint, idempotentHint). All three tools are read-only and idempotent but this is not declared in schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Error handling minimal. callTool() throws generic Error objects with no recovery guidance. LLMs cannot determine if errors are retryable or user-fixable.