FastMCP server for interacting with Seerr media request management system
The server defines 3 tools with reasonable naming and descriptions, but has significant gaps in schema completeness, parameter documentation, and error handling. Tool names follow verb-noun conventions (seerr_*), which is good. However, parameter schemas lack type annotations for some fields, descriptions contain example values (violating best practices), and error responses are minimal. The server demonstrates basic tool composition but falls short of production-grade quality.
Get a paginated list of movie requests that satisfy the filter arguments. Args: status (Optional[str]): Filter by media availability status (e.g., "pending", "available", "approved"). Valid values: "all", "approved", "available", "pending", "processing", "unavailable", "failed". Defaults to all if omitted or invalid. start_date (Optional[str]): Filter for requests created on or after this date, formatted as 'YYYY-MM-DDTHH:MM:SS.mmmZ'. take (Optional[int]): The number of results to return (page size). Defaults to 7. skip (Optional[int]): The number of results to skip (for pagination). Defaults to 0.
Get the status of the Seerr server. No arguments required.
Get a paginated list of TV show requests that satisfy the filter arguments. Args: status (Optional[str]): Filter by media availability status (e.g., "pending", "available", "approved"). Valid values: "all", "approved", "available", "pending", "processing", "unavailable", "failed". Defaults to all if omitted or invalid. start_date (Optional[str]): Filter for requests created on or after this date, formatted as 'YYYY-MM-DDTHH:MM:SS.mmmZ'. take (Optional[int]): The number of results to return (page size). Defaults to 7. skip (Optional[int]): The number of results to skip (for pagination). Defaults to 0.
Parameter descriptions contain example values (e.g., 'pending', 'available', 'approved') instead of enum constraints. LLMs treat examples as literal valid values and may hallucinate undocumented options.
No output schema documented for any tool. Tool callers cannot predict response structure, forcing LLMs to parse unstructured results. seerr_movie_requests and seerr_tv_requests return lists of formatted results, but the response format is not formally declared.
Error handling is minimal. seerr_movie_requests and seerr_tv_requests catch exceptions and return a generic error dict, but do not guide recovery (no actionable messages, no retry guidance). seerr_status returns status text but no error structure for failure cases.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Naming ambiguity in filter parameters. Both seerr_movie_requests and seerr_tv_requests use 'status' to mean 'media availability status', but the parameter description also mentions 'approved' and 'pending' which could be confused with request status vs. media status. This mapping is not explicitly documented in the tool description.
Date parameter format is specified as ISO 8601 ('YYYY-MM-DDTHH:MM:SS.mmmZ') in the description, but no validation or error message is provided if the format is wrong. LLMs will attempt format conversion on the fly, risking incorrect date strings.
Pagination is implemented (take, skip parameters) but no total count or next_cursor is returned. The LLM cannot determine if more results are available or how many total items exist, making pagination incomplete.
Tools make N+1 API calls when fetching details (get_movie_details or get_tv_details for each result). No indication that LLMs should expect or understand this overhead, and no batch variant is offered.