Skip to main content
Glama

Stack health

stack_health
Read-only

Checks every configured service’s health, versions, disk space, failing checks, scan status, permissions, and recent commands; returns partial results with a degraded list when a service is down.

Instructions

Health of every configured service: version, disk space, failing health checks, last library scan, and what each instance may do (permissions, whose ids are the valid instance values). Answers partially, with a degraded list, when a service is down. commands follows up trigger_search and trigger_scan: queued, running, and finished in the last 15 minutes, so a command not listed has finished (Whisparr's are not reported). detail: "full" adds options (the quality profiles, root folders and tags add_media and update_media need: read them here, never guess), seedingRules (client, indexer and Cleanuparr seed limits and removal rules), Reclaimerr cleanup (what will be deleted or moved, and when), and each service's recent warnings and errors in logs; check lastSeen, since an old line may no longer apply. API keys are never returned. Field reference: arr://docs/stack_health.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum items to return. Defaults to 50, hard maximum 500.
detailNoHow much per-item detail to return. Defaults to standard.standard

Output Schema

NameRequiredDescriptionDefault
logsNo
disksYes
scansYes
cleanupNo
optionsNo
commandsNo
degradedYes
failuresYes
servicesYes
endpointsNo
permissionsNo
seedingRulesNo
cleanuparrRemovalsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed48 schema fields changedv1.74.0
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / properties / cleanup / description
      Removed value: -"What Reclaimerr is set to delete, soonest first, its rules and whether auto-delete runs. Only at `detail: \"full\"`."
    • removedOutput schema / properties / cleanuparrRemovals / description
      Removed value: -"When Cleanuparr removes a download and what the removal does. Only at `detail: \"full\"`, with Cleanuparr configured."
    • removedOutput schema / properties / commands / description
      Removed value: -"Queued or running tasks, plus anything finished in the last fifteen minutes. Absent at `minimal`."
    • removedOutput schema / properties / disks / description
      Removed value: -"Free space per root folder."
    • removedOutput schema / properties / disks / properties / items / description
      Removed value: -"The window of results. What an item carries depends on the tool and on `detail`."
    • removedOutput schema / properties / disks / properties / offset / description
      Removed value: -"How many were skipped. `offset + returned < total` means there is another page."
    • removedOutput schema / properties / disks / properties / offset / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / disks / properties / offset / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / disks / properties / returned / description
      Removed value: -"How many are in `items`."
    • removedOutput schema / properties / disks / properties / returned / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / disks / properties / returned / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / disks / properties / total / description
      Removed value: -"How many matched in total — the whole list, never the window. Compare against `returned` before reporting a count to anyone."
    • removedOutput schema / properties / disks / properties / total / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / disks / properties / total / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / disks / properties / truncated / description
      Removed value: -"True when this is not the whole list — including on the last page of a paged walk, where the rest is behind you rather than ahead."
    • removedOutput schema / properties / endpoints / description
      Removed value: -"Where each instance lives. Never a credential."
    • removedOutput schema / properties / failures / description
      Removed value: -"Health checks the services themselves are reporting."
    • removedOutput schema / properties / failures / properties / items / description
      Removed value: -"The window of results. What an item carries depends on the tool and on `detail`."
    • removedOutput schema / properties / failures / properties / offset / description
      Removed value: -"How many were skipped. `offset + returned < total` means there is another page."
    • removedOutput schema / properties / failures / properties / offset / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / failures / properties / offset / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / failures / properties / returned / description
      Removed value: -"How many are in `items`."
    • removedOutput schema / properties / failures / properties / returned / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / failures / properties / returned / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / failures / properties / total / description
      Removed value: -"How many matched in total — the whole list, never the window. Compare against `returned` before reporting a count to anyone."
    • removedOutput schema / properties / failures / properties / total / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / failures / properties / total / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / failures / properties / truncated / description
      Removed value: -"True when this is not the whole list — including on the last page of a paged walk, where the rest is behind you rather than ahead."
    • removedOutput schema / properties / logs / description
      Removed value: -"Recent warnings and errors from each Radarr, Sonarr, Prowlarr, Seerr and Bazarr log, identical lines folded with a count. Only at `detail: \"full\"`."
    • removedOutput schema / properties / logs / properties / items / description
      Removed value: -"The window of results. What an item carries depends on the tool and on `detail`."
    • removedOutput schema / properties / logs / properties / lines / description
      Removed value: -"Per instance, how many log lines were `read` and the `total` the log holds. `total` above counts folded rows from those lines, not the log."
    • removedOutput schema / properties / logs / properties / offset / description
      Removed value: -"How many were skipped. `offset + returned < total` means there is another page."
    • removedOutput schema / properties / logs / properties / offset / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / logs / properties / offset / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / logs / properties / returned / description
      Removed value: -"How many are in `items`."
    • removedOutput schema / properties / logs / properties / returned / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / logs / properties / returned / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / logs / properties / total / description
      Removed value: -"How many matched in total — the whole list, never the window. Compare against `returned` before reporting a count to anyone."
    • removedOutput schema / properties / logs / properties / total / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / logs / properties / total / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / logs / properties / truncated / description
      Removed value: -"True when this is not the whole list — including on the last page of a paged walk, where the rest is behind you rather than ahead."
    • removedOutput schema / properties / options / description
      Removed value: -"Quality profiles, root folders and tags each Radarr, Sonarr, Whisparr and Lidarr instance has. Only at `detail: \"full\"`."
    • removedOutput schema / properties / permissions / description
      Removed value: -"What each instance may do. Absent at `minimal` — a permission is not a fault."
    • removedOutput schema / properties / scans / description
      Removed value: -"When each library was last scanned. Never truncated — bounded by the number of services."
    • removedOutput schema / properties / seedingRules / description
      Removed value: -"Client seed limits, indexer seed criteria, and where they disagree. Only at `detail: \"full\"`."
    • removedOutput schema / properties / services / description
      Removed value: -"One row per configured instance: reachable, version, latency."
  2. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint, but the description adds substantial behavior: it returns a partial answer with a `degraded` list when a service is down, API keys are never returned, Whisparr commands are omitted, and log lines may be stale so `lastSeen` should be checked. These are exactly the caveats an agent needs to interpret results correctly.

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 core purpose, then layered by mode (`commands`, then `detail: "full"`), and every clause carries real information. It is dense and semicolon-heavy, which slightly impairs scanability, but there is 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 two-parameter read tool with an output schema and readOnly annotation, the description covers degraded-service behavior, command lifecycle, sensitive-field exclusions, and what the full-detail mode unlocks. It even points to a field reference for the remainder, leaving no material gap before invocation.

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, but the description goes beyond it: `detail: "full"` is unpacked into the specific sections it adds (`options`, `seedingRules`, `cleanup`, `logs`) and paired with the instruction to read media-related config here rather than guess. `limit` is left to the schema, which already documents it fully.

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 a specific verb+resource framing ("Health of every configured service") and enumerates the returned facets: version, disk space, failing health checks, last library scan, permissions, plus the `commands` queue view. An agent can distinguish this from siblings like `diagnose`, `get_queue`, or `get_indexers` without opening a schema.

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 concrete when-to-use context: `commands` is the follow-up to `trigger_search`/`trigger_scan`, and absence from that list means the command finished. Also instructs reading `options` here rather than guessing before add_media/update_media. It stops short of explicit exclusions (e.g., when to prefer `diagnose` over this), so not a full 5.

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