Flick has clear, action-verb naming (search, info, sessions, libraries, next_up) and all tools include descriptions. However, parameter descriptions are minimal or absent, output schemas are not documented, and error handling lacks recovery guidance. The server follows basic tool structure but falls short of production-grade quality. All tools are READ_ONLY, reducing risk, but the lack of schema documentation and parameter detail limits LLM reasoning.
Return full metadata for a single library item by its Jellyfin item ID.
List the top-level media libraries (Movies, TV Shows, ...).
List the next unwatched episode for shows you are following.
Search the Jellyfin library by title. Returns movies, shows, episodes, and more.
List active playback sessions: who is watching what, on which device.
Output schemas not documented. Tools return list[dict[str, Any]] or dict[str, Any] with no field descriptions. LLMs cannot plan downstream calls or extract specific fields without trial-and-error.
Parameter descriptions missing or minimal. 'limit' appears in search and next_up with only 'Maximum number of results to return', no mention of valid range (1 - 100?), default behavior, or when to use pagination.
Error handling lacks recovery guidance. JellyfinError exceptions are raised but not caught or translated into actionable messages. LLMs receive raw errors like 'Could not reach Jellyfin at http://...' with no suggestion for next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
No pagination support. search() and next_up() accept a limit but do not return total_count, next_cursor, or offset. Large result sets risk context window exhaustion.
Credentials injected via environment variables (JELLYFIN_API_KEY, JELLYFIN_URL) but no validation or clear error if missing. RuntimeError is raised at tool invocation time, not at server startup, delaying failure detection.