Skip to main content
Glama

Diagnose a missing or unplayable item

diagnose
Read-only

Identifies why a movie, show, or artist is not playable by tracing request, download, index, import, and scan stages, then names the first cause, remedy, and next steps.

Instructions

Why is this not playable? Walks the chain (requested, managed, monitored, downloaded, indexed, imported, scanned) and names the first thing that explains it, with a remedy and, where a tool call fixes it, next_steps to offer the user; this tool never runs them. Give a title as query, or service plus id when you already hold an exact item. A title not in the library is looked up in Cleanuparr, download-client history and the library event log, so a removed release can still be explained. A step it could not check sets certain: false, and the summary says what was missed. With Reclaimerr it says when a cleanup rule deleted or will delete the title; with Bazarr it notes missing subtitles. A Lidarr artist is walked too (tracks on disk, queue, indexers, media server): playable means at least one track, and get_media_details lists its albums. Field reference: arr://docs/diagnose.

Input Schema

NameRequiredDescriptionDefault
idNo
userNoWhose watch state to consider. Defaults to the configured default_user; any other value requires allow_other_users.
queryNoA title — how a person actually asks.
serviceNoWith `id`: an exact item, when one is already in hand.
instanceNoWhich instance (e.g. "4k") when several of this service exist. Omit it when there is one.

Output Schema

NameRequiredDescriptionDefault
queryYes
stepsYes
historyNo
verdictYes
degradedYes
resolvedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv1.74.0
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • changedInput schema / properties / instance / description
      Previous value: -"Which instance, when several of this service are configured — for example \"4k\" or \"hd\". Omit it when there is only one. If several are configured and you omit it, the call is refused and the names are listed."New value: +"Which instance (e.g. \"4k\") when several of this service exist. Omit it when there is one."
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / properties / history / description
      Removed value: -"Only when nothing in the library matched: the download-history row behind each release whose name matches, newest first."
    • removedOutput schema / properties / resolved / description
      Removed value: -"What the title resolved to. Absent when nothing matched."
    • removedOutput schema / properties / steps / description
      Removed value: -"The chain, in the order it runs: requested, managed, monitored, downloaded, indexed, imported, scanned."
    • removedOutput schema / properties / verdict / properties / certain / description
      Removed value: -"False when a step could not be checked. Report the verdict as provisional and say what was missed rather than guessing across the hole."
    • removedOutput schema / properties / verdict / properties / next_steps / description
      Removed value: -"The call that would act on `remedy`. Offer it to the person and say what it would do; do not run it. A write previews first and asks for confirmation."
    • removedOutput schema / properties / verdict / properties / stage / description
      Removed value: -"The first stage that explains the absence, or `playable`."
  2. First observedv0.1.0

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation it discloses non-obvious behaviour: the ordered check chain, the cross-service fallback for titles no longer in the library, the `certain: false` marker when a step could not be checked, and service-specific extras (Reclaimerr deletion verdicts, Bazarr subtitle notes, Lidarr artist semantics). The explicit statement that it never executes `next_steps` resolves the main ambiguity an agent could have about a read-only tool that emits remediations.

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?

Front-loaded with the question the tool answers, then progressively narrower detail. It is dense and every clause carries information, but the long compound sentence with the parenthesised chain and the field reference at the end is heavy to parse. Slight trimming would improve scanability without losing content.

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 multi-backend diagnosis tool with an output schema, the description covers the check ordering, fallbacks, uncertainty signalling and the key return fields (`remedy`, `next_steps`, `certain`) that drive how the agent should respond. Nothing needed to call it correctly or interpret a 'could not check' result is missing.

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 80%, so the schema already documents `user`, `service`, `instance` and `query` reasonably. The description adds real meaning for `query` (a human-style title rather than a slug) and the `service`+`id` pairing, but says nothing about the `user` parameter or the `allow_other_users` gate, leaving that entirely 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?

Opens with the concrete user question ("Why is this not playable?") and states a specific mechanism: walks the chain from requested through scanned and names the first failing link with a remedy. That is clearly distinguishable from the sibling getters (get_queue, get_history, get_wanted) and from action tools like trigger_search.

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?

Gives explicit invocation shapes: a title via `query`, or `service` plus `id` when an exact item is in hand, and notes the title falls back to Cleanuparr, download-client history and the event log. It also impliedly draws the boundary from action tools by saying it never runs the suggested steps. It stops short of naming a sibling as an alternative or an explicit when-not-to-use case.

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