A monorepo-based MCP server providing tools for managing media services including Prowlarr, Sonarr, Gotify, Overseerr, Radarr, Tautulli, SABnzbd, qBittorrent, Plex, and TMDB
20 tools with basic schemas and descriptions, but significant quality gaps. Tool names follow verb_noun convention (list, get, create, update, delete, send, check) which is good. However, descriptions are generic and often under 50 chars (e.g., 'List all resources with metadata', 'Check service health status'). Parameter descriptions exist but are minimal (10-20 chars typical). No output schemas documented anywhere. Error handling guidance absent. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Parameter constraints missing (e.g., 'limit' and 'offset' have no min/max bounds; 'priority' in gotify:messages:send has no enum). No evidence of idempotency guarantees or confirmation patterns for destructive ops. Schemas are present but sparse, many params lack type constraints beyond basic types.
Create a new application
List all applications
Create a new client
List all clients
Check Gotify server health
Delete messages older than specified days
Delete a message by ID
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields. Every tool lacks return type documentation.
Numeric parameters (limit, offset, timeout, priority, days) lack min/max bounds. LLMs can pass absurd values (limit=999999, timeout=0, priority=1000) causing API failures or timeouts.
Destructive tools (delete, cleanup) lack confirmation or dry-run patterns. No guidance on recovery if agent makes a mistake. service:resources:delete and gotify:messages:cleanup can cause data loss without safeguards.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
List messages with optional pagination
Send a new message
Get Gotify statistics
Execute a command
Check command execution status
Check service health status
Create a new resource
Delete a resource
Get detailed information about a specific resource
List all resources with metadata
Update an existing resource
Get enhanced service statistics
Validate service configuration
Tool descriptions are generic and under 50 chars (e.g., 'List all resources with metadata', 'Check Gotify server health'). Descriptions lack WHEN to use, prerequisites, or dependencies. LLMs cannot distinguish similar tools.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Risk field exists in metadata but is not exposed to LLM via tool schema. Agents cannot reason about side effects.