Skip to main content
Glama

Change what a library item is set to

update_media
Destructive

Change quality profiles, root folders, monitoring, tags, or book metadata for Radarr, Sonarr, Lidarr, and Grimmory items; preview first, then confirm to apply.

Instructions

Changes settings on an item already in Radarr, Lidarr or Sonarr (quality profile, root folder, monitoring, tags, Radarr's minimum availability, Sonarr's series type, Lidarr's metadata profile), or edits a Grimmory book's title, authors, series, series number and tags, with lock_fields or unlock_fields. The only way to change a Radarr item's monitoring. On Lidarr, id is an artist, monitor_new_items stays with set_monitoring, and a new metadata profile applies at the artist's next refresh, which can remove albums. Takes service and id. Changing root_folder moves the files on disk unless move_files: false. tags replaces the whole set and an unknown tag is refused; stack_health at detail: "full" lists profiles, folders and tags. A locked book field is refused unless the same call unlocks it, and Grimmory may write the change into the book file and rename it. Previews first; confirm to apply. Field reference: arr://docs/update_media.

Input Schema

NameRequiredDescriptionDefault
idYesThe item's id within that service — `acquisition.id` on a get_library or get_media_details record.
tagsNoTag labels or ids that already exist. Replaces the whole set — pass [] to clear it. On a Grimmory book these are its categories: free text that need not exist yet, replacing the set.
titleNoGrimmory books only. The new title.
seriesNoGrimmory books only. The series name. "" clears it.
authorsNoGrimmory books only. The authors; replaces the list.
confirmNoThe token from this tool's preview, passed back verbatim to apply it. Single-use and bound to the previewed arguments.
dry_runNoPreview without a confirm token, for "what would happen if" questions; not the first step of a real change.
serviceYesradarr for a film, sonarr for a series, lidarr for an artist, grimmory for a book.
instanceNoWhich instance (e.g. "4k") when several of this service exist. Omit it when there is one.
monitoredNoMonitor it, or stop. Works on Radarr, Sonarr and Lidarr, where it is the artist’s own flag and the albums keep theirs.
move_filesNoWith root_folder: whether the service moves the files to the new folder. Defaults to true. False only when you have already moved them yourself.
lock_fieldsNoGrimmory books only. Fields to lock after writing, so a metadata refresh leaves them alone.
root_folderNoRoot folder path, or any distinctive part of it. Moves the files there unless move_files is false.
series_typeNoSonarr only: the numbering scheme.
series_numberNoGrimmory books only. The book's number in its series.
unlock_fieldsNoGrimmory books only. Fields to unlock before writing. A locked field is refused unless this call unlocks it.
quality_profileNoProfile name or id to switch to.
metadata_profileNoLidarr only: metadata profile name or id to switch to, which decides the album types and release statuses the artist gets. It applies at the artist’s next refresh, which this does not start. A name that matches none is refused, listing the ones the instance has.
minimum_availabilityNoRadarr only: how early it may grab.

Output Schema

NameRequiredDescriptionDefault
noopYes
tierYes
toolYes
resultNo
targetYes
appliedYes
dry_runYes
effectsYes
serviceYes
summaryYes
audit_idNo
warningsNo
operationYes
uncheckedNo
next_stepsNo
permissionYes
confirm_errorNo
confirm_tokenNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed22 schema fields changedv1.74.0
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • changedInput schema / properties / confirm / description
      Previous value: -"The confirmation token from this same tool's preview of this same operation. Omit it to get a preview and a token; pass the token back verbatim to apply the change. Tokens are single-use, expire, and are bound to the exact operation and arguments previewed."New value: +"The token from this tool's preview, passed back verbatim to apply it. Single-use and bound to the previewed arguments."
    • changedInput schema / properties / dry_run / description
      Previous value: -"Preview only: resolve the target and describe exactly what would happen, then stop. Never mutates anything and never returns a confirmation token. Use this to answer \"what would happen if…\" — not as the first step of actually doing it."New value: +"Preview without a confirm token, for \"what would happen if\" questions; not the first step of a real change."
    • 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."
    • addedInput schema / properties / metadata_profile
      Added value: +{
      +  "description": "Lidarr only: metadata profile name or id to switch to, which decides the album types and release statuses the artist gets. It applies at the artist’s next refresh, which this does not start. A name that matches none is refused, listing the ones the instance has.",
      +  "type": "string"
      +}
    • changedInput schema / properties / monitored / description
      Previous value: -"Monitor it, or stop. Works on Radarr as well as Sonarr."New value: +"Monitor it, or stop. Works on Radarr, Sonarr and Lidarr, where it is the artist’s own flag and the albums keep theirs."
    • changedInput schema / properties / service / description
      Previous value: -"radarr for a film, sonarr for a series, grimmory for a book."New value: +"radarr for a film, sonarr for a series, lidarr for an artist, grimmory for a book."
    • changedInput schema / properties / service / enum
      Previous value: -[
      -  "radarr",
      -  "sonarr",
      -  "whisparr",
      -  "lidarr",
      -  "prowlarr",
      -  "bazarr",
      -  "jellyfin",
      -  "seerr",
      -  "sabnzbd",
      -  "nzbget",
      -  "transmission",
      -  "qbittorrent",
      -  "plex",
      -  "profilarr",
      -  "cleanuparr",
      -  "reclaimerr",
      -  "dispatcharr",
      -  "shelfmark",
      -  "grimmory"
      -]New value: +[
      +  "radarr",
      +  "sonarr",
      +  "lidarr",
      +  "grimmory"
      +]
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / properties / applied / description
      Removed value: -"Whether the change actually happened. False on every preview, refusal and no-op."
    • removedOutput schema / properties / audit_id / description
      Removed value: -"The audit row this call wrote. Every branch writes one, including previews and refusals."
    • removedOutput schema / properties / confirm_error / description
      Removed value: -"Why a presented token was rejected. Present only when one was presented."
    • removedOutput schema / properties / confirm_token / description
      Removed value: -"Present when a preview is awaiting confirmation. Single-use, expiring, bound to this exact operation and arguments."
    • removedOutput schema / properties / dry_run / description
      Removed value: -"Whether this was an explicit preview."
    • removedOutput schema / properties / effects / description
      Removed value: -"Itemised consequences, most severe first. Empty is legitimate for a no-op."
    • removedOutput schema / properties / next_steps / description
      Removed value: -"Present on an applied write when another call is worth offering. Offer it to the person; do not run it."
    • removedOutput schema / properties / noop / description
      Removed value: -"True when the request resolved but there was nothing to do — already monitored, already approved."
    • removedOutput schema / properties / result / description
      Removed value: -"Whatever the service returned, on a write that landed."
    • removedOutput schema / properties / summary / description
      Removed value: -"One sentence, safe to show a human."
    • removedOutput schema / properties / target / description
      Removed value: -"The resolved id the write acts on — what the confirmation token is bound to."
    • removedOutput schema / properties / unchecked / description
      Removed value: -"Present when a service could not be asked, so its absence from `warnings` means nothing."
    • removedOutput schema / properties / warnings / description
      Removed value: -"Present on a preview when another service has something to say about this change. Tell the user before confirming."
  2. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, but the description goes much further: root_folder moves files on disk unless move_files is false, tags replaces the whole set and unknown tags are refused, a new Lidarr metadata profile can remove albums at the next refresh, and Grimmory may write into and rename the book file. That is exactly the beyond-annotation disclosure this dimension rewards.

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?

Purpose and the preview/confirm workflow are front-loaded and nearly every clause carries operational content. The first sentence is an overlong enumeration that packs service-scoped fields into a single run, which hurts scannability slightly, but there is little 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 19-parameter mutation tool with an output schema and destructive annotations, the description covers the destructive side effects, the preview/confirm token flow, per-service constraints, and points to a field reference doc. Nothing an agent needs to call it safely is missing.

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?

With 100% schema coverage the baseline is 3, but the description adds cross-parameter semantics the schema states only in isolation: move_files only matters with root_folder, a locked book field is refused unless the same call unlocks it, and which parameters apply to which service.

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 opening sentence names a specific verb (changes settings), the exact resource (an existing item across Radarr/Lidarr/Sonarr plus Grimmory books), and enumerates the affected fields. It clearly separates this from add_media and from set_monitoring by stating it is the only way to change a Radarr item's monitoring.

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?

It routes the agent explicitly: `monitor_new_items` stays with set_monitoring, stack_health at detail "full" lists profiles/folders/tags, previews come first and confirm applies. It also flags per-service applicability of each field, so an agent knows which combination to pick.

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