Skip to main content
Glama

Request a film or series

request_media

Asks Seerr to queue a movie or series for approval and quota tracking, with a preview step before confirming the request.

Instructions

Asks Seerr for a film or series, the way a household member would through its web UI — it enters the approval queue and counts against that user's quota. This is the tool for "request X". It is not add_media: add_media writes straight into Radarr or Sonarr, skipping approval and quota entirely, and needs that service's own write permission. media_id is a TMDB id — take one from search_media, lookup_media or discover_media (an IMDb tt… id is not one: look it up as imdb:tt… to get its TMDB id); Seerr resolves the TVDB id itself. For a series, seasons defaults to every season. user names whose quota and approval trail it lands in, and requesting as anyone but the configured default user needs services.seerr.allow_other_users. Previews first; confirm to create the request.

Input Schema

NameRequiredDescriptionDefault
userNoWhose request this is. Defaults to services.seerr.default_user; naming anyone else needs services.seerr.allow_other_users.
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.
seasonsNoWhich seasons to request, for a series. Omit to request every season. Refused on a movie rather than ignored.
media_idYesThe TMDB id. Not a Radarr, Sonarr or Jellyfin id — those will not resolve.
media_typeYesmovie or tv.

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. Changed20 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."
    • removedInput schema / properties / media_id / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / media_id / minimum
      Removed value: --9007199254740991
    • removedInput schema / properties / seasons / items / maximum
      Removed value: -9007199254740991
    • 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.4/5.0
Behavior3/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description goes well beyond them, disclosing the approval queue, quota accounting, the permission gate for other users, and the preview-then-confirm mutation pattern. This is strong added context on top of thin annotations, but it stops short of describing what the resulting request object or failure modes look like.

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?

Dense but front-loaded: identity and the add_media contrast come first, then id semantics, then the preview/confirm step. It is one long paragraph with heavy parentheticals, which costs a little scannability but almost every clause carries information.

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 mutating, quota-affecting tool with a preview/confirm flow, it covers the alternative, the permission prerequisite, id provenance, season defaults, and user attribution; return values are covered by the output schema, so nothing an agent needs to call it correctly 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?

Schema coverage is already 100%, yet the description adds real meaning: media_id must be a TMDB id, an IMDb tt… id must be resolved via lookup as imdb:tt…, Seerr resolves TVDB itself, and seasons defaults to all seasons and is refused on a movie. Only the confirm/dry_run semantics are left 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?

States a specific verb and resource ("Asks Seerr for a film or series") and immediately frames the scope as an end-user web-UI request that enters an approval queue. It explicitly contrasts itself with the nearest sibling, add_media, so an agent can route between them without opening either schema.

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?

Gives an explicit selection rule ("This is the tool for 'request X'") plus a when-not rule naming add_media and its differing behavior (writes to Radarr/Sonarr, skips approval and quota, needs that service's write permission). It also names the prerequisite services.seerr.allow_other_users for non-default users.

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