MCP server for managing movie watchlists with AI-powered recommendations
This server has 13 tools with solid naming conventions (all start with action verbs: search_, discover_, add_, remove_, get_, mark_, set_) and complete parameter schemas visible in the codebase. However, there are notable gaps: (1) Output schemas are not documented for any tool, the rubric requires documentation of what fields are returned so LLMs can chain calls. (2) Several parameter descriptions are minimal or generic. (3) Error handling guidance is present but inconsistent across tools. (4) No tool annotations (readOnlyHint/destructiveHint) despite clear risk distinctions (READ_ONLY vs WRITE). The server follows good naming patterns and has structured input schemas, placing it in the 'fair to good' range, but lacks the output schema documentation and error recovery guidance expected of A-grade tools.
Add a movie to the user's personal watchlist
Discover movies with advanced filtering options including genres, ratings, release dates, and more
Get comprehensive details for a movie including title, overview, cast, crew, images, ratings, genres, and runtime from TMDB
Retrieve the user's current preferences for genres, actors, directors, and moods
Get AI-powered movie recommendations based on user's preferences, watch history, and watchlist using LLM analysis
Retrieve all movies the user has watched with ratings and notes
Output schemas not documented for any tool. The rubric (section D) requires documentation of return types so LLMs can plan downstream calls and extract correct fields. Currently only input schemas are visible; return structure is undocumented.
No tool annotations (destructiveHint/readOnlyHint) despite clear risk labels in the specification. WRITE tools (add_to_watchlist, mark_as_watched, set_preferences) should be annotated as destructive; READ_ONLY tools should have readOnlyHint=true. This enables safer agent planning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | C | 66 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 47 | 2024-11-05+ | v1 |
Retrieve the user's complete watchlist with all movies and metadata
Mark a single movie as watched and optionally add a personal rating and notes
Mark multiple movies as watched in a single operation
Remove a movie from the user's personal watchlist
Remove a specific item from a user preference array (e.g., remove one actor from favorite_actors)
Search for movies by title, with optional filters for release year, language, and other criteria
Set or update user preferences including favorite genres, actors, directors, and viewing moods
Error handling lacks recovery guidance in tool descriptions. The rubric (section E, pattern:recovery-guide) requires error responses to tell the LLM what to do next (e.g., 'User not found. Try search_users() with a partial name'). Current descriptions do not include this guidance.
set_preferences parameter 'preferences' uses generic 'object' type with vague description. The rubric (section C) requires clear parameter types and constraints. This should define an enum or structured type listing valid preference keys (favorite_genres, favorite_actors, etc.) and their expected value types.
mark_as_watched_batch parameter 'movies' array lacks detailed schema for array elements. Description says 'Array of objects with tmdb_id, optional rating (1-5), and optional notes' but does not specify JSON structure or type constraints for each element. LLMs cannot reliably construct valid payloads without explicit schema.
No pagination parameters documented for tools returning lists (get_watchlist, get_watched_movies, get_recommendations). The rubric (section D, pattern:paginated-result) requires page/offset, limit, and total count in responses to prevent context window exhaustion. Current tool descriptions do not mention pagination support.