Entertainment & culture — film, TV, music and books. 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 (120-180 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, and error handling is minimal. The server lacks pagination guidance despite accepting 'limit' parameters. No tool annotations (readOnlyHint, idempotentHint) despite all being read-only operations.
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 entertainment & culture feeds (id, title, category, source, description). Optionally filter by category (books, entertainment) or keyword. Pass an id to read_feed.
Read a curated entertainment & culture feed by its id (from list_feeds). Returns normalized items (title, link, published, summary). Optionally filter items by keyword.
Parameter descriptions lack actionable constraints. 'limit' accepts 1-50 but no enum/min/max in schema; 'category' accepts 'books' or 'entertainment' but no enum constraint; 'query' is free-form with no format guidance. LLMs cannot validate inputs without formal constraints.
Output schemas are completely undocumented. Callers cannot know what fields to expect from list_feeds (returns categories, count, feeds array) or read_feed (returns feed, via, total_matching, count, items). LLMs must infer structure from code.
No tool annotations despite all three tools being read-only. Missing readOnlyHint would help agents understand these are safe to retry and have no side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Error handling is minimal. Code throws generic errors ('Unknown feed', 'Unknown tool', 'Pass a valid feed url') with no recovery guidance. No distinction between retryable vs user-fixable errors. LLMs receive no actionable next steps.
Pagination is incomplete. Tools accept 'limit' but return no 'next_cursor' or 'total_count' to enable multi-page iteration. Large result sets could exhaust context without proper pagination metadata.