Remote MCP server that lets an AI assistant search and request movies and shows in Overseerr or Jellyseerr
Three tools with clear action verbs and well-structured schemas. Descriptions are detailed (120-180 chars) and explain WHEN to use each tool. All parameters have types and descriptions. Input schemas are complete with enums where appropriate. However, output schemas are not documented, LLMs cannot predict what fields to expect from search_media or check_status results. Error handling is minimal; no guidance on recovery or retry logic. Tool composition is sound (search → request → check), but missing pagination for search results and no documented limits on result count.
Check whether a title is already in the library or already requested, before offering to add it. Use this when someone asks if something is available yet.
Add a movie or show to the library after the user confirms which match they want. Pass the tmdb_id and media_type from search_media. For a TV show pass seasons as the word all or a list of season numbers, and the default is all seasons. Requests are approved automatically so the download starts right away.
Search the media catalog for a movie or TV show. Returns up to five matches with a title, year, type, current availability, and a tmdb_id. Use this first, then confirm the closest match with the user before requesting it. Never read the tmdb_id out loud.
Output schemas not documented. LLMs cannot predict what fields search_media returns (title, year, tmdb_id, availability status). Without documented output structure, agents cannot reliably extract data for downstream calls.
No result limits or pagination documented. search_media description says 'returns up to five matches' but no limit parameter exists. If API returns 100+ results, context window bloat and token waste. Pagination (limit, offset, next_cursor) not implemented.
Error handling lacks recovery guidance. seerrFetch() returns generic {ok, status, data, err} but tools do not translate this into actionable LLM guidance. E.g., 'API key invalid' should suggest 'Check SEERR_APIKEY configuration', not a raw error code.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | <=2025-11-25 | v2 |
request_media accepts 'seasons' as a free-form string with complex parsing logic (normalizeSeasons). LLM may pass 'season 1', 'seasons 1-3', 'all', or '1,2,3', all handled, but no enum constraint or format specification in schema. Parsing fallback to 'all' silently masks user intent errors.
check_status description is vague ('Check whether a title is already in the library or already requested'). Does not explain what fields are returned or how to interpret the response. LLM cannot distinguish between 'available', 'downloading', 'requested', or 'not found' without seeing actual output.