Skip to main content
Glama
CarlDog

servarr-mcp

by CarlDog

servarr-mcp

code confidence · claude-opus-4-8[1m] · 2026-07-07 · details

An MCP server for the Servarr stack — Sonarr, Radarr, Lidarr, Readarr, and Prowlarr — packaged as a Docker container. Lets an MCP client (Claude Desktop, etc.) browse, search, and manage whichever *arr apps you're running: library reads plus add/edit, queue management, interactive release grabbing, and search/refresh commands. Every tool carries MCP annotations (readOnlyHint, destructiveHint, idempotentHint) so clients can distinguish and gate the write surface.

Apps are optional: configure only the ones you actually run, and only those tools register.

Tools

Sonarr (TV)

Read:

Tool

Description

sonarr_list_series

List all TV series tracked by Sonarr

sonarr_get_series

Series details by ID

sonarr_lookup_series

Search TVDB for a new series to add

sonarr_list_episodes

List episodes for a series

sonarr_get_episode

Episode details by ID

sonarr_calendar

Upcoming episodes

sonarr_queue

Current download queue

sonarr_list_import_lists

Compact/redacted import-list inspection

sonarr_list_notifications

Compact/redacted notification and event inspection

sonarr_manual_import_candidates

Discover bounded manual-import candidates with episode/file context

sonarr_history

Recent history (newest first)

sonarr_history_series

History for one series

sonarr_wanted_missing

Monitored episodes with no file

sonarr_wanted_cutoff

Episodes below their quality cutoff

sonarr_release_search

Live indexer search for candidate releases

sonarr_get_command

Poll an async command's status

sonarr_health

Health check results

sonarr_diskspace

Disk space per root folder

sonarr_list_quality_profiles

Quality profiles

sonarr_list_root_folders

Root folders

sonarr_list_tags

Tags

Write:

Tool

Description

sonarr_add_series

Add a series to the library

sonarr_edit_series

Edit a tracked series (monitoring, profile, etc.)

sonarr_grab_release

Grab a release from sonarr_release_search results

sonarr_manual_import

Confirm-gated import of one exact candidate into explicit episode ids

sonarr_queue_remove

Remove one queue item or a confirm-gated batch of up to 100

sonarr_set_import_list_state

Confirm-gated automatic-add state update

sonarr_set_notification_manual_interaction

Confirm-gated manual-interaction event update

sonarr_queue_regrab

Force re-grab of a stuck queue item

sonarr_history_mark_failed

Mark a history record failed (triggers re-search)

sonarr_search_missing

Trigger a search for missing episodes

sonarr_search_series

Trigger a search for a whole series

sonarr_search_season

Trigger a search for one season

sonarr_search_episode

Trigger a search for specific episodes

sonarr_refresh_series

Refresh series metadata and rescan disk

Radarr (movies)

Read:

Tool

Description

radarr_list_movies

All movies tracked by Radarr

radarr_get_movie

Movie details by ID

radarr_lookup_movie

Search TMDB for a new movie to add

radarr_lookup_tmdb

Look up a movie by TMDB ID

radarr_lookup_imdb

Look up a movie by IMDb ID

radarr_calendar

Upcoming movie releases

radarr_queue

Current download queue

radarr_list_import_lists

Compact/redacted import-list inspection

radarr_list_notifications

Compact/redacted notification and event inspection

radarr_manual_import_candidates

Discover bounded manual-import candidates with movie/file context

radarr_history

Recent history (newest first)

radarr_history_movie

History for one movie

radarr_wanted_missing

Monitored movies with no file

radarr_wanted_cutoff

Movies below their quality cutoff

radarr_release_search

Live indexer search for candidate releases

radarr_get_command

Poll an async command's status

radarr_health

Health check results

radarr_diskspace

Disk space per root folder

radarr_list_quality_profiles

Quality profiles

radarr_list_root_folders

Root folders

radarr_list_tags

Tags

Write:

Tool

Description

radarr_add_movie

Add a movie to the library

radarr_edit_movie

Edit a tracked movie (monitoring, profile, etc.)

radarr_grab_release

Grab a release from radarr_release_search results

radarr_manual_import

Confirm-gated import of one exact candidate into an explicit movie id

radarr_queue_remove

Remove one queue item or a confirm-gated batch of up to 100

radarr_set_import_list_state

Confirm-gated provider/automatic-add state update

radarr_set_notification_manual_interaction

Confirm-gated manual-interaction event update

radarr_queue_regrab

Force re-grab of a stuck queue item

radarr_history_mark_failed

Mark a history record failed (triggers re-search)

radarr_search_missing

Trigger a search for missing movies

radarr_search_movie

Trigger a search for specific movies

radarr_refresh_movie

Refresh movie metadata and rescan disk

Lidarr (music)

Read:

Tool

Description

lidarr_list_artists

All artists tracked by Lidarr

lidarr_get_artist

Artist details by ID

lidarr_lookup_artist

Search for a new artist to add

lidarr_list_albums

List albums (optionally per-artist)

lidarr_get_album

Album details by ID

lidarr_get_track

Track details

lidarr_list_trackfiles

Track files on disk

lidarr_queue

Current download queue

lidarr_list_import_lists

Compact/redacted import-list inspection

lidarr_list_notifications

Compact/redacted notification and event inspection

lidarr_manual_import_candidates

Discover bounded manual-import candidates with album/track context

lidarr_history

Recent history

lidarr_history_artist

History for one artist

lidarr_wanted_missing

Monitored albums with no files

lidarr_wanted_cutoff

Albums below their quality cutoff

lidarr_release_search

Live indexer search for candidate releases

lidarr_get_command

Poll an async command's status

lidarr_health

Health check results

lidarr_diskspace

Disk space per root folder

lidarr_list_quality_profiles

Quality profiles

lidarr_list_metadata_profiles

Metadata profiles

lidarr_list_root_folders

Root folders

lidarr_list_tags

Tags

Write:

Tool

Description

lidarr_add_artist

Add an artist to the library

lidarr_edit_artist

Edit a tracked artist (monitoring, profiles, etc.)

lidarr_grab_release

Grab a release from lidarr_release_search results

lidarr_manual_import

Confirm-gated import with explicit artist/album/release/track ids and replacement choice

lidarr_queue_remove

Remove one queue item or a confirm-gated batch of up to 100

lidarr_set_import_list_state

Confirm-gated automatic-add state update

lidarr_queue_regrab

Force re-grab of a stuck queue item

lidarr_history_mark_failed

Mark a history record failed (triggers re-search)

lidarr_search_missing

Trigger a search for missing albums

lidarr_search_artist

Trigger a search for an artist's albums

lidarr_search_album

Trigger a search for specific albums

lidarr_refresh_artist

Refresh artist metadata and rescan disk

Readarr (books)

Read:

Tool

Description

readarr_list_authors

All authors tracked by Readarr

readarr_get_author

Author details by ID

readarr_lookup_author

Search for a new author to add

readarr_list_books

List books (optionally per-author)

readarr_get_book

Book details by ID

readarr_queue

Current download queue

readarr_list_import_lists

Compact/redacted import-list inspection

readarr_list_notifications

Compact/redacted notification and event inspection

readarr_manual_import_candidates

Discover bounded manual-import candidates with book/edition context

readarr_history

Recent history

readarr_history_author

History for one author

readarr_wanted_missing

Monitored books with no files

readarr_wanted_cutoff

Books below their quality cutoff

readarr_release_search

Live indexer search for candidate releases

readarr_get_command

Poll an async command's status

readarr_health

Health check results

readarr_diskspace

Disk space per root folder

readarr_list_quality_profiles

Quality profiles

readarr_list_metadata_profiles

Metadata profiles

readarr_list_root_folders

Root folders

readarr_list_tags

Tags

Write:

Tool

Description

readarr_add_author

Add an author to the library

readarr_edit_author

Edit a tracked author (monitoring, profiles, etc.)

readarr_grab_release

Grab a release from readarr_release_search results

readarr_manual_import

Confirm-gated import with explicit author/book/edition ids and replacement choice

readarr_queue_remove

Remove one queue item or a confirm-gated batch of up to 100

readarr_set_import_list_state

Confirm-gated automatic-add state update

readarr_queue_regrab

Force re-grab of a stuck queue item

readarr_history_mark_failed

Mark a history record failed (triggers re-search)

readarr_search_missing

Trigger a search for missing books

readarr_search_author

Trigger a search for an author's books

readarr_search_book

Trigger a search for specific books

readarr_refresh_author

Refresh author metadata and rescan disk

Prowlarr (indexer manager)

Read-only:

Tool

Description

prowlarr_list_indexers

All configured indexers

prowlarr_indexer_stats

Per-indexer query/grab stats

prowlarr_indexer_status

Indexer health / disabled status

prowlarr_search

Search across enabled indexers

prowlarr_history

Recent history (queries, grabs)

prowlarr_health

Health check results

Related MCP server: Arr-MCP

Configuration

Each app uses two environment variables. Set both for an app to enable its tools; leave them unset to skip the app entirely.

App

URL var

API key var

Default port

Sonarr

SONARR_URL

SONARR_API_KEY

8989

Radarr

RADARR_URL

RADARR_API_KEY

7878

Lidarr

LIDARR_URL

LIDARR_API_KEY

8686

Readarr

READARR_URL

READARR_API_KEY

8787

Prowlarr

PROWLARR_URL

PROWLARR_API_KEY

9696

API keys are found under each app's Settings → General → API Key.

At least one app must be configured or the server exits with an error.

Same-host deployments

When the *arr apps run on the same Docker host as this container (typical home-lab setup), don't use the host's hostname (e.g. my-nas) in the *_URL vars — Docker's DNS context can't resolve the host's own name from inside a container. Use http://host.docker.internal:<port> instead. The provided docker-compose.yml already maps host.docker.internal to the host gateway via extra_hosts, so this works on Linux Docker too (not just Docker Desktop).

Run with Docker

docker build -t servarr-mcp .
docker run -i --rm \
  -e SONARR_URL=http://192.168.1.50:8989 -e SONARR_API_KEY=... \
  -e RADARR_URL=http://192.168.1.50:7878 -e RADARR_API_KEY=... \
  -e PROWLARR_URL=http://192.168.1.50:9696 -e PROWLARR_API_KEY=... \
  servarr-mcp

Published image

After each push to main, GitHub Actions builds and pushes a multi-arch image to GHCR:

ghcr.io/carldog/servarr-mcp:latest (linux/amd64 + linux/arm64)

Pull instead of building locally:

docker pull ghcr.io/carldog/servarr-mcp:latest
docker run -i --rm \
  -e SONARR_URL=... -e SONARR_API_KEY=... \
  ghcr.io/carldog/servarr-mcp:latest

Run with Docker Compose (HTTP, long-lived)

The compose file runs the server in HTTP mode (Streamable HTTP) for long-lived deployment via Portainer or Compose. It pulls the published image from ghcr.io/carldog/servarr-mcp:latest.

# Set whichever app credentials apply:
export SONARR_URL=http://192.168.1.50:8989; export SONARR_API_KEY=...
export RADARR_URL=http://192.168.1.50:7878; export RADARR_API_KEY=...
# ... (other apps as needed)
export HOST_PORT=3002  # optional, defaults to 3002

docker compose up

The MCP endpoint will be at http://<host>:${HOST_PORT}/mcp.

Deploy via Portainer (Stack from Git)

  1. In Portainer, Stacks → Add Stack → Repository.

  2. Repository URL: https://github.com/CarlDog/servarr-mcp

  3. Compose path: docker-compose.yml

  4. Environment variables: set whichever <APP>_URL/<APP>_API_KEY pairs apply, plus optionally HOST_PORT.

  5. Deploy. Healthcheck reaches green within ~10 seconds.

Use with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "servarr": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "SONARR_URL", "-e", "SONARR_API_KEY",
        "-e", "RADARR_URL", "-e", "RADARR_API_KEY",
        "-e", "PROWLARR_URL", "-e", "PROWLARR_API_KEY",
        "servarr-mcp"
      ],
      "env": {
        "SONARR_URL": "http://192.168.1.50:8989",
        "SONARR_API_KEY": "...",
        "RADARR_URL": "http://192.168.1.50:7878",
        "RADARR_API_KEY": "...",
        "PROWLARR_URL": "http://192.168.1.50:9696",
        "PROWLARR_API_KEY": "..."
      }
    }
  }
}

Repeat the -e and env block patterns for whichever apps you run.

Local development

npm install
cp .env.example .env  # then edit
SONARR_URL=... SONARR_API_KEY=... npm run dev

Security

  • The container runs as a non-root user (servarr).

  • API keys are passed via env vars — never bake them into the image.

  • A .githooks/pre-commit runs gitleaks on every commit. Activate it once per clone: git config core.hooksPath .githooks.

Available Tools

29 tools
sonarr_add_seriesSonarr: Add SeriesA

Add a new series to Sonarr by TVDB id. Internally calls /series/lookup to fetch the full series metadata, then POSTs /series with the merged body. Returns the created SeriesResource. Workflow: call sonarr_lookup_series first to get the tvdbId, sonarr_list_quality_profiles for quality_profile_id, sonarr_list_root_folders for root_folder_path. Note: search_for_missing_episodes defaults to false here — Sonarr's server-side default is true, which may immediately hit indexers; flip explicitly if you want that.

ParametersJSON Schema
NameRequiredDescriptionDefault
tvdb_idYesThe TVDB id of the series to add (from sonarr_lookup_series).
quality_profile_idYesQuality profile id (from sonarr_list_quality_profiles).
root_folder_pathYesRoot folder path (from sonarr_list_root_folders).
monitoredNoTrack this series for missing episodes (default true).
season_folderNoOrganize episodes into per-season subfolders (default true).
monitorNoWhich episodes to monitor on add (default 'all').
search_for_missing_episodesNoTrigger a search for missing episodes immediately on add (default false).

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses internal calls (/series/lookup then POST /series) and the return type (SeriesResource). Reveals that server-side default for search_for_missing_episodes is true, which may cause immediate indexer hits. Adds significant context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact yet comprehensive paragraph. Every sentence contributes: purpose, internal workflow, return, and a crucial behavioral note. No verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers prerequisites, internal process, return type, and a key default behavior pitfall. Despite no output schema, the description provides enough context for correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 7 parameters are described in the schema (100% coverage). The description adds workflow context: tvdb_id from lookup, quality_profile_id from list, root_folder_path from list. Also explains the behavioral implication of search_for_missing_episodes default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action (Add a new series), the resource (series), and the identifier (TVDB id). Distinguishes from sibling tools like sonarr_edit_series by specifying 'add' versus 'edit'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly prescribes a workflow: look up series first, then get quality profile and root folder. Also notes a behavioral nuance about search_for_missing_episodes default, guiding when to override.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_calendarSonarr: CalendarA
Read-only

Get upcoming/recent episodes from Sonarr's calendar within an ISO date window. Use for 'what's airing this week?' queries. Movies live in radarr_calendar; Lidarr/Readarr/Prowlarr have no calendar surface.

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoISO date — start of window
endNoISO date — end of window

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows it's safe. The description adds the date window constraint and that it returns episodes, but does not elaborate on other behavioral aspects like pagination or limits. For a simple read tool, this is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, immediately states the action and resource, and provides sibling differentiation. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two parameters, no output schema), the description covers essential information: what it does, when to use it, and how it differs from related tools. No major gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters as ISO dates with 100% coverage. The description only mentions 'ISO date window' without adding further detail. Thus, no additional value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get upcoming/recent episodes from Sonarr's calendar within an ISO date window.' It also distinguishes itself from sibling tools by noting that movies belong to radarr_calendar and other arr apps have no calendar, preventing misuse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly suggests use cases ('what's airing this week?') and provides boundaries (movies elsewhere, no calendar for others). It does not explicitly list alternatives but gives clear context for when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_diskspaceSonarr: Disk SpaceA
Read-only

Get per-mount disk space (free/total bytes) seen by Sonarr. Useful for 'where do I have room to add this?' decisions; pair with sonarr_list_root_folders to map paths to capacity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose behavioral traits beyond what annotations already provide (readOnlyHint=true). It adds no details about side effects, rate limits, or other behaviors, but the annotations already clarify it is a safe read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the core purpose and then providing usage context. Every word serves a purpose with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with zero parameters and a simple output (free/total bytes), the description covers all necessary context, including return value and suggested companion tool. No output schema exists, but the description implies what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is 100%. The description adds no parameter information, but since there are none, the baseline of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('per-mount disk space') indicating exactly what the tool does. It also distinguishes itself from siblings by mentioning its use case and pairing with another tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool ('for decisions about where to add content') and suggests pairing with sonarr_list_root_folders. However, it does not explicitly state when not to use it, but for a simple read tool this is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_edit_seriesSonarr: Edit SeriesA
DestructiveIdempotent

Edit settings on an existing Sonarr series. Internally GETs the current SeriesResource, applies your changes, and PUTs the full resource back. Pass only the fields you want to change — others are preserved. WARNING: changing root_folder_path moves files on disk; watch your storage and download client.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Sonarr series id (from sonarr_list_series).
monitoredNoToggle whether Sonarr tracks this series for new episodes.
quality_profile_idNoChange the quality profile (from sonarr_list_quality_profiles).
root_folder_pathNoChange the root folder (from sonarr_list_root_folders). WARNING: this moves the series files on disk.
season_folderNoToggle the per-season subfolder organization.
tagsNoReplace the tag id list (from sonarr_list_tags). Full replacement, not append.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral details beyond annotations: the internal GET+PUT process, preservation of unchanged fields, and explicit warning about root_folder_path moving files. Annotations already indicate destructive hint, but description adds specific context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three well-structured sentences: purpose, process/guidance, and warning. No filler; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers essential aspects (process, side effects, parameter usage) for a simple edit tool. No output schema but return values are likely straightforward given the operation. Minor gap: doesn't mention if the full updated resource is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds useful group-level guidance ('pass only fields you want to change') and clarifies tags behavior ('full replacement, not append'), raising it to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Edit settings on an existing Sonarr series' with a specific verb and resource, and it distinguishes from sibling tools like sonarr_add_series and sonarr_get_series.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: internally GETs and PUTs, pass only changed fields, and warns about root_folder_path moving files. However, it does not explicitly state when not to use this tool or list alternatives, so a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_get_commandSonarr: Get Command StatusA
Read-only

Poll the status of an async command queued by sonarr_search_*, sonarr_refresh_series, etc. Returns the current CommandResource (status: queued|started|completed|failed, exception, started/ended timestamps).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe command id returned by the trigger tool (CommandResource.id).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description confirms it's a read operation. It adds behavioral detail about the returned data (status, timestamps). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states purpose and scope, second details return value. No extraneous text, front-loaded with key info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple polling tool with one parameter and no output schema, the description fully explains usage and return value, making it complete given the context and sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage for the single parameter. The description adds meaningful context by stating the id comes from a trigger tool, aiding correct usage beyond the schema's basic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool polls the status of an async command, specifically mentioning the triggering tools and the returned CommandResource fields. This distinguishes it from sibling tools that trigger commands or perform other actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to poll status of commands queued by specific tools, implying when to use. No explicit when-not-to-use or alternatives, but the purpose is clear given the context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_get_episodeSonarr: Get EpisodeA
Read-only

Get full details for a single Sonarr episode by ID — air date, overview, file info, monitored state, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Sonarr episode ID

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds value by specifying the kind of data returned (full details including specific fields), which goes beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys purpose and scope, front-loading the core action and key data fields. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required param, no output schema), the description fully covers what the tool does and what it returns. Sibling tools like sonarr_list_episodes provide obvious alternatives for listing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the single parameter 'id' with a description 'The Sonarr episode ID'. The description reiterates this with 'by ID' but adds no new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get full details for a single Sonarr episode by ID' and lists specific details (air date, overview, file info, monitored state). It distinguishes from siblings like sonarr_list_episodes and sonarr_search_episode.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly notes that the tool requires an episode ID, making its use case clear. It does not, however, exclude or contrast with alternatives when the user has multiple episodes or lacks an ID.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_get_seriesSonarr: Get SeriesA
Read-only

Get full details for a Sonarr series by id — overview, cast, seasons, episode counts, file paths. Drill-down companion to sonarr_list_series and sonarr_lookup_series.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Sonarr series ID

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare `readOnlyHint: true`, indicating a safe read operation. The description adds value by listing the response fields (overview, cast, file paths), but does not elaborate on other behavioral traits like error handling or rate limits. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no superfluous words. Information is front-loaded with the primary action and content list, followed by a succinct sibling context. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema, rich annotations), the description sufficiently covers purpose, usage, and expected output. There are no gaps that hinder an agent's understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single required parameter 'id' described as 'The Sonarr series ID'. The description does not add additional meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'full details for a Sonarr series by id', listing the included data (overview, cast, seasons, etc.). It distinguishes itself from sibling tools as a 'drill-down companion' to `sonarr_list_series` and `sonarr_lookup_series`, making its specific role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly frames the tool as a 'drill-down companion', conveying that it provides more detail after using list or lookup tools. While it doesn't formally state when not to use, the context is sufficiently clear for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_grab_releaseSonarr: Grab ReleaseA

HIGH RISK. Immediately queues a download from the indexer for the given release. Pass the release object verbatim from sonarr_release_search output — Sonarr looks the release up server-side by guid+indexerId, so the cache must still be warm (re-run release_search if the grab fails with a 'not found' error). If the release was rejected by the quality profile, set should_override to true to grab anyway.

ParametersJSON Schema
NameRequiredDescriptionDefault
releaseYesThe ReleaseResource object returned by sonarr_release_search. Pass it verbatim — guid + indexerId are what Sonarr keys on; other fields (including episodeId / episodeIds for episode-targeted grabs) ride along.
should_overrideNoForce-grab a release even if the quality profile rejected it (default false). Mirrors Sonarr's UI 'Override and Download' button.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Warns 'HIGH RISK', explains server-side lookup and cache dependency, and override behavior. Annotations indicate mutation (readOnlyHint=false) but description adds valuable runtime context. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no fluff, with critical warning first. Each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but mutation tool adequately covers failure scenario and recovery. For two-param tool with its risks explained, this is complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters (100%), and description adds: release must be verbatim from search, guid+indexerId key, other fields ride along. should_override explained as UI mirror. Adds real value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'grab' and resource 'release', with action 'queues a download'. Distinguishes from sibling sonarr_release_search which searches, not grabs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to pass release verbatim from sonarr_release_search, and advises re-running release_search if grab fails. Mentions when to use should_override. Lacks explicit 'when not to use' but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_healthSonarr: HealthA
Read-only

Get aggregated Sonarr health warnings (indexer down, low disk, etc.). Summary view; for actionable per-indexer failure detail (which indexers, since when, why) use prowlarr_indexer_status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only. Description adds that it provides aggregated warnings (summary view), which clarifies the output nature. Could mention what happens with no warnings but adequate for a simple read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the tool's purpose, no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description covers purpose, scope, and an alternative. Could specify return format but overall complete for a simple health summary tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline is 4. The description does not need to add parameter info, and schema coverage is irrelevant here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets aggregated Sonarr health warnings, provides examples (indexer down, low disk), and distinguishes from a sibling tool (prowlarr_indexer_status) by specifying this is a summary view.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly explains when to use this tool (for summary view) and when not (for actionable per-indexer detail), and directly names the alternative tool to use for detail.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_historySonarr: HistoryA
Read-only

Get recent Sonarr history (newest first). For per-resource scope use sonarr_history_series. To re-trigger a search for a wrong-grab event, use sonarr_history_mark_failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoRecords to return (default 20)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate `readOnlyHint=true` and `openWorldHint=false`. The description adds that results are 'newest first', which is a behavioral detail beyond annotations. No contradictions; description adds some value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no wasted words. Every sentence provides essential information about scope and alternatives.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The simple tool (one optional parameter, no output schema) is adequately described for typical use. Missing details about return format, but given no output schema and common understanding of 'history', it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter `page_size` fully described. The tool description adds no further meaning to the parameter, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get recent Sonarr history (newest first)', providing a specific verb and resource. It also distinguishes from sibling tools like `sonarr_history_series` and `sonarr_history_mark_failed`, making the tool's scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this tool (general history) vs. per-resource scope (`sonarr_history_series`), and when to use `sonarr_history_mark_failed` for wrong-grab events, providing clear context and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_history_mark_failedSonarr: Mark History FailedA
DestructiveIdempotent

Mark a Sonarr history entry as failed. Triggers Sonarr to re-search for a replacement on the next interval. Useful when an episode imported as the wrong cut/quality/release. Returns a confirmation; no body from the *arr API.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Sonarr history record id (from sonarr_history or sonarr_history_series).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes the trigger effect (re-search on next interval) and return behavior (confirmation, no body from API). Annotations indicate destructiveness and idempotence; description adds context without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: action, consequence, return value. No repetition or filler. Front-loaded with the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with annotations and no output schema, the description fully explains what it does, when to use it, and what to expect as a result. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers the single 'id' parameter with description. The description adds useful context about its source ('from sonarr_history or sonarr_history_series'), but this is supplementary to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('Mark a Sonarr history entry as failed') and the resource type. It distinguishes from sibling tools like sonarr_queue_regrab by specifying the context of wrong cut/quality/release.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear use case: 'Useful when an episode imported as the wrong cut/quality/release.' Does not explicitly mention when not to use or alternatives, but the context is strong enough for typical scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_history_seriesSonarr: Series HistoryA
Read-only

Get history scoped to a single series — every grab/import/upgrade/delete event. Much narrower than sonarr_history, which is server-wide and routinely runs into hundreds of thousands of records.

ParametersJSON Schema
NameRequiredDescriptionDefault
series_idYesThe Sonarr series ID.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is clear. The description adds value by listing the specific event types (grab/import/upgrade/delete) and the scoping constraint, going beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no extraneous information. The first sentence defines purpose and scope; the second provides usage guidance. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and no output schema. The description adequately covers purpose, scope, and when to use. It could mention return format or ordering, but given the low complexity, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for `series_id`. The tool description does not add further parameter meaning beyond what the schema provides, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get history scoped to a single series') and specifies the resource ('every grab/import/upgrade/delete event'). It explicitly distinguishes from the sibling `sonarr_history` tool, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: use this tool for series-scoped history, and contrasts it with `sonarr_history` which is server-wide and larger. This helps the agent choose correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_list_episodesSonarr: List EpisodesA
Read-only

List every episode for a Sonarr series. Returns episode ids you can drill into with sonarr_get_episode or pass to sonarr_release_search / sonarr_search_episode.

ParametersJSON Schema
NameRequiredDescriptionDefault
series_idYesThe Sonarr series ID

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds value by explaining the return value (episode IDs) and how they can be used, which goes beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the core purpose, and contains no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (single parameter, no output schema, read-only), the description is complete. It explains the action, the scope of results, and how to use the output with other tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, and the parameter description in the schema already explains 'series_id' as 'The Sonarr series ID'. The tool description does not add additional information about the parameter beyond the schema, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'every episode for a Sonarr series'. It also distinguishes from the sibling tool 'sonarr_get_episode' by noting that it returns episode IDs for further drilling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context on when to use this tool: to list all episodes. It also suggests next steps by mentioning that the returned episode IDs can be used with 'sonarr_get_episode', 'sonarr_release_search', or 'sonarr_search_episode'. However, it does not explicitly mention when not to use it or alternative tools for different purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_list_quality_profilesSonarr: List Quality ProfilesA
Read-only

List Sonarr quality profiles. The id is required as qualityProfileId when adding a series.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate `readOnlyHint: true`. The description adds a minor behavioral detail about the `id` usage but does not contradict annotations or provide significant new behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that are front-loaded. No unnecessary words, every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and read-only annotations, the description is complete. It explains the purpose and how to use the returned data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100% (vacuously). With zero parameters, baseline is 4. Description does not need to add parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List Sonarr quality profiles' with a specific verb and resource. It also explains the usage of the `id` field when adding a series, adding value beyond just naming the tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implicit guidance by mentioning the `id` is used as `qualityProfileId` for adding series, but does not explicitly differentiate from siblings or state when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_list_root_foldersSonarr: List Root FoldersA
Read-only

List Sonarr root folders (where series are stored on disk). The path is required as rootFolderPath when adding a series.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description correctly confirms a read-only operation. It adds behavioral context by explaining what root folders represent and linking to the add_series workflow, but it does not describe the return format or potential errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and contains no redundant information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description does not explain what the output contains (e.g., list of paths, names, or full objects), leaving a gap in completeness. However, the tool is simple and the annotations cover the read-only aspect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters (0 params), so baseline is 4. The description adds no parameter details but correctly implies no inputs are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's verb ('List') and resource ('Sonarr root folders'), with an explanation of their purpose ('where series are stored on disk'). It distinguishes from siblings like sonarr_list_series by specifying the resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description hints at usage by noting that the returned path is needed for adding a series, but does not explicitly specify when to use this tool vs alternatives, nor does it provide context for exclusion or comparison with sibling list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_list_seriesSonarr: List SeriesA
Read-only

List TV series tracked by Sonarr as a paged result. Default returns slim fields per series (id, title, year, monitored, tvdbId, imdbId, tmdbId, qualityProfileId, tags, path, network, status, ended, nextAiring, previousAiring, runtime, seasonFolder, statistics — statistics carries seasonCount / episodeFileCount / episodeCount / sizeOnDisk); set verbose=true for the full SeriesResource. Sonarr's upstream /series returns the entire library in one shot — paging here is server-side. For full details on one series (including all seasons), use sonarr_get_series. To find a series NOT yet tracked, use sonarr_lookup_series (TVDB metadata).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, 1-indexed (default 1).
page_sizeNoItems per page (default 50, max 200). If verbose=true, prefer a smaller value to stay under the MCP response cap.
verboseNoReturn the full SeriesResource per item (heavy: seasons[], images, alternateTitles, overview). Default false returns slim fields only.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds behavioral details beyond that: default slim fields, paging is server-side, and that verbose returns heavier data. No contradictions; description enriches annotation context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is moderately concise, front-loading purpose and then listing fields and notes. Every sentence adds value, though the field list is somewhat long. No wasted words, but could be shortened slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description explains the return fields in detail (listing slim fields and noting what verbose adds). Also covers paging behavior and sibling tools. Highly complete for a paged list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage, and the description adds context for each parameter: page default 1, page_size default 50 max 200, verbose meaning and side effects. The hint to use smaller page_size with verbose adds value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists TV series tracked by Sonarr as a paged result, and distinguishes from 'sonarr_get_series' (full details) and 'sonarr_lookup_series' (find untracked). The verb 'list' plus resource and paging detail make the purpose highly specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use this tool (listing series) and when not ('For full details on one series, use sonarr_get_series' and 'To find a series NOT yet tracked, use sonarr_lookup_series'). Also gives tips on page_size versus verbose to avoid MCP cap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_list_tagsSonarr: List TagsA
Read-only

List Sonarr tags (label + id pairs). Useful for scoping queries by tag (e.g. 'show me everything tagged kids') and for setting tag ids on add/edit operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, indicating no side effects. The description adds context on how tags are used (scoping, add/edit) but does not elaborate on response size or pagination. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that starts with the core action and resource, then provides usage context. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no parameters and no output schema, the description fully captures what the tool does, what it returns (label+id pairs), and why it's useful (tag scoping and setting IDs). The annotations cover safety, making this complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters with 100% coverage, so no additional parameter details are needed. The description adds no parameter info, which is appropriate given no parameters exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'Sonarr tags (label + id pairs)'. It distinguishes this tool from siblings like sonarr_list_series and sonarr_list_quality_profiles by specifying what is listed and for what purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool: for scoping queries by tag and for setting tag IDs during add/edit operations. It provides a concrete example ('show me everything tagged kids') but does not explicitly exclude cases where it should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_lookup_seriesSonarr: Lookup Series (TVDB)A
Read-only

Fuzzy search TVDB for a series to potentially add. Returns SeriesResource with tvdbId etc., suitable for sonarr_add_series. Searches TVDB's catalogue, NOT your tracked library — use sonarr_list_series / sonarr_get_series for what's already tracked.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesSearch term

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint and openWorldHint. The description adds that it performs fuzzy search, returns SeriesResource with tvdbId, and searches TVDB's catalogue, providing helpful behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with front-loaded purpose. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully covers the tool's purpose, scope, output, and relationship to siblings. No output schema needed as the description mentions the return type. Complete for a simple lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the term parameter described as 'Search term'. The description does not add extra meaning to the parameter, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Fuzzy search TVDB for a series to potentially add' with a specific verb and resource, and distinguishes itself from sibling tools like sonarr_list_series and sonarr_get_series by clarifying it searches TVDB's catalogue, not the tracked library.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use (to look up series to add) and when not to (for tracked library, use sonarr_list_series/sonarr_get_series). Also hints at follow-up action with sonarr_add_series.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_queueSonarr: QueueA
Read-only

Get the current Sonarr download queue, paged. Default returns the first 20 records. Bump page_size or step through pages when the queue is large.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-indexed page number (default 1).
page_sizeNoRecords per page (default 20, max 100).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint: true is consistent with the description's 'Get' operation. The description adds value by detailing default pagination and suggesting strategy for large queues, though it omits authentication or rate limit details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first for purpose, second for paging. No wasted words; information is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers core functionality and paging but lacks details on the structure of returned queue items. With no output schema, this is adequate for a simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaningful strategic guidance on handling large queues (e.g., bump page_size or step through pages), which goes beyond the schema defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the clear verb 'Get' and specifies the resource 'current Sonarr download queue', distinguishing it from sibling queue manipulation tools like sonarr_queue_regrab and sonarr_queue_remove.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions paging behavior and provides strategic advice for large queues, but it does not explicitly state when to use this tool versus related queue tools such as sonarr_queue_regrab or sonarr_queue_remove.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_queue_regrabSonarr: Re-grab Queue ItemA

Force Sonarr to re-grab a stuck queue item from the indexer. Useful when a download is hung or the file is corrupt. Returns the updated queue entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Sonarr queue item id (from sonarr_queue).

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false. The description adds context that it 'forces a re-grab from the indexer' and 'returns the updated queue entry,' but it does not disclose potential side effects (e.g., duplicate downloads) or network impact. With annotations covering basic safety, the description adds moderate value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences (20 words) efficiently convey purpose, usage context, and return value. The first sentence is action-oriented, and no unnecessary information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter, the description covers purpose, when to use, and return value. No output schema exists, but 'Returns the updated queue entry' is sufficient. The tool is low complexity, so completeness is high.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description in the schema is clear ('The Sonarr queue item id (from sonarr_queue)'). The tool description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 're-grab' and clearly identifies the resource 'stuck queue item'. It distinguishes from sibling tools like sonarr_queue (list), sonarr_queue_remove (remove), and sonarr_grab_release (grab release) by focusing on re-grabbing stuck items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides when-to-use context: 'when a download is hung or the file is corrupt.' However, it does not mention when NOT to use it or compare with alternatives like sonarr_queue_remove, so it lacks explicit exclusions or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_queue_removeSonarr: Remove from QueueA
DestructiveIdempotent

Remove a single item from Sonarr's download queue. All four flags are exposed because the server-side defaults are not obviously safe — in particular, removeFromClient defaults to true on Sonarr's side, which deletes the file from the download client. This tool defaults remove_from_client to false; flip it explicitly if you want the file gone.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Sonarr queue item id (from sonarr_queue).
remove_from_clientNoTell the download client to delete the download too (default false — flips Sonarr's destructive server-side default of true).
blocklistNoAdd the release to the blocklist so Sonarr doesn't re-grab it (default false).
skip_redownloadNoDon't trigger a re-search for a replacement (default false).
change_categoryNoMove the download to the recycle/'tv-recycle' category in the client (if configured) instead of deleting (default false).

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint true, but description adds crucial context: server-side default removes from client, but this tool defaults to false. Discloses behavioral traits for each flag beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, well-structured paragraph. Each sentence adds value: main action, flag defaults, and explicit warning. Front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple removal tool with no output schema, the description fully covers all flags and their behavioral outcomes. No missing context needed for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds meaning by explaining defaults and their practical implications (e.g., 'flips Sonarr's destructive server-side default of true'). Every parameter's behavior is clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Remove a single item from Sonarr's download queue' with a specific verb and resource. It clearly distinguishes from siblings like sonarr_queue (list) and sonarr_queue_regrab (re-grab).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use this tool and warns about the default behavior of remove_from_client being destructive. Mentions all flags and their defaults, helping decide when to flip them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_refresh_seriesSonarr: Refresh Series MetadataA
Idempotent

Trigger Sonarr to re-pull metadata from TVDB for one series (cast, episode list, artwork). Async — returns the queued CommandResource. Poll status with sonarr_get_command (use the returned id).

ParametersJSON Schema
NameRequiredDescriptionDefault
series_idYesThe Sonarr series ID to refresh.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate non-readOnly, non-destructive, idempotent, and open world. The description adds behavioral context: async execution, return of a CommandResource, and polling instructions. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, no wasted words. Front-loaded with the purpose and key details. Efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (1 param, no output schema, annotations present), the description covers purpose, async behavior, and follow-up action. It is fully adequate for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (series_id) with full schema coverage. The description does not add meaning beyond the schema description ('The Sonarr series ID to refresh'). Baseline 3 applies as schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: 'Trigger Sonarr to re-pull metadata from TVDB for one series' with specific details on what is refreshed (cast, episode list, artwork). It distinguishes from siblings like sonarr_add_series or sonarr_edit_series, as refresh is a unique operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: 'Async — returns the queued CommandResource. Poll status with sonarr_get_command (use the returned id).' This tells the agent how to handle the async nature and follow up. It could mention when to use alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_search_episodeSonarr: Search EpisodesA
Idempotent

Trigger Sonarr to search indexers for one or more specific episodes. Async — returns the queued CommandResource. Poll status with sonarr_get_command (use the returned id).

ParametersJSON Schema
NameRequiredDescriptionDefault
episode_idsYesOne or more Sonarr episode IDs to search.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds value beyond annotations by detailing async behavior, returning a CommandResource, and recommending status polling. No contradiction with annotations; idempotentHint and openWorldHint are consistent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences with critical information front-loaded: action, async behavior, and follow-up instruction. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple one-parameter tool with no output schema, the description adequately covers purpose, async behavior, and result handling. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear description for episode_ids. The description adds no extra meaning beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool triggers a search for episodes, using specific verb 'Trigger' and resource 'episodes'. It distinguishes from siblings like sonarr_search_season or sonarr_search_series by specifying 'one or more specific episodes'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly mentions async nature and instructs to poll status using sonarr_get_command. Provides clear post-invocation guidance, though lacks explicit when-not-to-use comparisons with siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_search_missingSonarr: Search Missing EpisodesA
Idempotent

Trigger Sonarr to search indexers for all monitored, missing episodes. Async — returns the queued CommandResource (id, status); the actual search runs in the background. Poll status with sonarr_get_command (use the returned id).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the async nature of the operation and that the actual search runs in the background. Describes the return value (CommandResource with id and status). Does not contradict annotations (idempotentHint=true is consistent with triggering a potentially idempotent search). No additional side effects or limits are mentioned, but given the simple nature, it's adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is two concise sentences with no superfluous words. Front-loaded with the main action, followed by async details and follow-up instructions. Efficient use of space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no input parameters, no output schema), the description provides all necessary context: what it does, async behavior, return value, and how to monitor progress. It is complete for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so schema coverage is 100%. The description does not need to add parameter meaning. Baseline for 0 parameters is 4, and the description does not detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool triggers a search for all monitored missing episodes. It uses specific verbs ('Trigger Sonarr to search') and resource ('all monitored, missing episodes'), clearly distinguishing it from sibling tools like sonarr_search_episode and sonarr_search_season.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear guidance on usage: it is an async operation that returns a CommandResource, and instructs to poll status with sonarr_get_command using the returned id. It does not explicitly state when not to use it or mention alternatives, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_search_seasonSonarr: Search SeasonA
Idempotent

Trigger Sonarr to search indexers for one season of one series. Async — returns the queued CommandResource. Poll status with sonarr_get_command (use the returned id).

ParametersJSON Schema
NameRequiredDescriptionDefault
series_idYesThe Sonarr series ID.
season_numberYesSeason number (0 for specials).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations by revealing the async nature and the returned CommandResource, instructing polling behavior. Annotations already indicate idempotence and non-read-only, but the description fills in the async detail, which is crucial for correct use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the action in the first sentence and providing critical async workflow in the second. Every word contributes value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no nested objects), the description sufficiently covers purpose, behavior, and follow-up steps. The lack of output schema is mitigated by describing the return type and polling mechanism.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with descriptions for both parameters (series_id and season_number). The description does not add additional semantic context beyond the schema, so it meets the baseline without enhancement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool triggers a search for 'one season of one series', distinguishing it from sibling tools like sonarr_search_episode (single episode) and sonarr_search_series (whole series). The verb 'search' and resource 'season' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises to poll status with 'sonarr_get_command' using the returned ID, providing a clear post-invocation workflow. However, it does not explicitly state when not to use this tool or compare it to alternatives like sonarr_search_missing, which limits guidance slightly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_search_seriesSonarr: Search SeriesA
Idempotent

Trigger Sonarr to search indexers for all monitored, missing episodes of one series. Async — returns the queued CommandResource. Poll status with sonarr_get_command (use the returned id).

ParametersJSON Schema
NameRequiredDescriptionDefault
series_idYesThe Sonarr series ID to search.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses async behavior and the need to poll, adding value beyond annotations. Annotations already indicate non-destructive and idempotent, so the description adequately complements them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no extraneous words. Front-loaded with the core action, then async handling. Efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, clear annotations, and async behavior, the description covers everything needed: what, how, and next steps. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear parameter description. The tool description does not add extra meaning beyond what the schema provides, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it triggers a search for all monitored missing episodes of one series. It specifies the action, scope, and condition, distinguishing it from sibling tools like sonarr_search_episode or sonarr_search_season.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the async nature and directs to poll using sonarr_get_command. While it doesn't list when not to use, the guidance is clear and effective for agents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_wanted_cutoffSonarr: Wanted (Below Cutoff)A
Read-only

List episodes downloaded below cutoff quality — upgrade candidates. Filters to monitored items by default. Items here are upgrade candidates; trigger a re-search with sonarr_search_missing (which also picks up cutoff-unmet items by default).

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoRecords to return (default 20)
monitoredNoOnly monitored items (default true)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description is consistent with annotations (readOnlyHint=true). Adds context about default monitoring filter and relationship to other tools. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. Front-loaded with core purpose, then relevant details. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple tool with full schema coverage and annotations, description is complete. Includes sibling reference and default behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. Description only restates defaults without additional meaning. Baseline score 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'List episodes downloaded below cutoff quality — upgrade candidates.' Verb 'List' and resource 'episodes below cutoff' are specific. Distinguishes from sibling sonarr_search_missing by explaining relationship.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Filters to monitored items by default' and suggests using sonarr_search_missing for re-search, which provides clear when-to-use and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonarr_wanted_missingSonarr: Wanted (Missing)A
Read-only

List episodes that are wanted but not yet downloaded. Filters to monitored items by default. Once you've identified what's missing, trigger an indexer hunt with sonarr_search_missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoRecords to return (default 20)
monitoredNoOnly monitored items (default true)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds that it filters to monitored items by default. This provides useful behavioral context beyond the annotations, without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the core purpose, and includes a helpful follow-up suggestion. Every sentence earns its place without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (2 parameters, no output schema, read-only), the description adequately covers what the tool does and how to use it. It implies the output (list of episodes) but does not detail the return format, but that is acceptable for such a straightforward tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the two parameters. The description only mentions the default filter behavior but does not add significant new meaning beyond the schema fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List episodes that are wanted but not yet downloaded.' It specifies the resource (episodes) and the action (list), and distinguishes from sibling tools like sonarr_search_missing by indicating the follow-up action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: use to identify missing episodes, and mentions the next step with sonarr_search_missing. However, it does not explicitly say when not to use this tool or compare with other listing tools like sonarr_calendar or sonarr_history.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 29 tool updatesv0.1.0
    • First observedsonarr_add_series
    • First observedsonarr_calendar
    • First observedsonarr_diskspace
    • First observedsonarr_edit_series
    • First observedsonarr_get_command
    • First observedsonarr_get_episode
    • First observedsonarr_get_series
    • First observedsonarr_grab_release
    • First observedsonarr_health
    • First observedsonarr_history
    • First observedsonarr_history_mark_failed
    • First observedsonarr_history_series
    • First observedsonarr_list_episodes
    • First observedsonarr_list_quality_profiles
    • First observedsonarr_list_root_folders
    • First observedsonarr_list_series
    • First observedsonarr_list_tags
    • First observedsonarr_lookup_series
    • First observedsonarr_queue
    • First observedsonarr_queue_regrab
    • First observedsonarr_queue_remove
    • First observedsonarr_refresh_series
    • First observedsonarr_release_search
    • First observedsonarr_search_episode
    • First observedsonarr_search_missing
    • First observedsonarr_search_season
    • First observedsonarr_search_series
    • First observedsonarr_wanted_cutoff
    • First observedsonarr_wanted_missing

TDQS

A4.3/5.0
Disambiguation5/5

Each tool targets a distinct action on a specific entity (series, episode, queue, history, etc.), with clear scoping differences (e.g., sonarr_list_series vs sonarr_lookup_series, sonarr_history vs sonarr_history_series). No two tools appear to do the same thing.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'sonarr_' prefix (e.g., sonarr_add_series, sonarr_list_episodes, sonarr_get_command). No mixing of naming conventions.

Tool Count4/5

29 tools for a full-featured media management server is slightly high but justified given the breadth of operations (CRUD, search, queue, history, system). Each tool serves a distinct purpose without unnecessary duplication.

Completeness4/5

Covers core workflows: adding/editing series, managing episodes, queue control, history, health checks, and system info. Missing a delete series tool and some edge-case operations, but the surface is largely complete for typical usage.

Maintenance

ActivityActive
ResponsivenessWithin a week

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for managing a media server stack (Plex, Radarr, Overseerr, Bazarr, Prowlarr, Trakt.tv) using natural language to browse, request, and discover content.
    12
    MIT
  • F
    license
    A
    quality
    A
    maintenance
    MCP server to manage your *ARR media stack (Radarr, Sonarr, Lidarr, Readarr, Prowlarr) for searching, adding, and managing movies, TV shows, music, books, and indexers.
    1
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    A remote MCP server for managing your arr stack (Sonarr, Radarr, qBittorrent, Seerr) via Claude.ai on mobile, enabling you to fix bad downloads, block release groups, request new content, and check trending.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables local LLMs to manage a home media stack including Radarr, Sonarr, Prowlarr, and others.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CarlDog/servarr-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server