Skip to main content
Glama

Search for a subtitle

trigger_subtitle_search

Queues a Bazarr subtitle search for a movie or episode in one language, targeting missing tracks by default or replacing an existing one with search_anyway. Previews first and returns without waiting.

Instructions

Asks Bazarr to go looking for one language of subtitles for one item it already tracks — the "it is missing Dutch subs and I do not want to wait for the next round" action. Takes kind, id and language exactly as get_subtitles reports them. By default it only searches for something Bazarr lists as missing; search_anyway: true searches regardless, which is how you replace a subtitle you already have but do not want (for an episode outside that list, pass series_id too). This queues a search and returns immediately; it does not wait, and finding a subtitle is not guaranteed. Previews first; confirm to run it.

Input Schema

NameRequiredDescriptionDefault
idYesThe item's id as get_subtitles reports it, as an integer string. For an episode this is the episode id, not the series id.
kindYesWhich of the two lists get_subtitles reported the item in.
forcedNoSearch for a forced subtitle track.
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.
serviceYes
instanceNoWhich instance (e.g. "4k") when several of this service exist. Omit it when there is one.
languageYesThe two-letter code from the item's `missing` list — "nl", "en".
series_idNoThe Sonarr series id. Only needed with search_anyway for an episode Bazarr does not list as missing, since the missing list is otherwise where the series id comes from.
search_anywayNoSearch even when Bazarr does not list this item — or this language — as missing. The "I have Dutch subs and they are wrong" case; it may replace a subtitle you already have.
hearing_impairedNoSearch for a hearing-impaired subtitle track.

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."
    • removedInput schema / properties / series_id / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / series_id / minimum
      Removed value: --9007199254740991
    • removedInput schema / properties / service / description
      Removed value: -"bazarr."
    • 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: +[
      +  "bazarr"
      +]
    • 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.6/5.0
Behavior4/5

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

Adds substantial behavior beyond the annotations: the search is queued and returns immediately, success is not guaranteed, and search_anyway may overwrite an existing subtitle. That replacement warning is the most important disclosure here and sits in mild tension with destructiveHint=false, which is worth flagging to the agent but is a scoped, opt-in flag rather than a contradiction of the tool's overall profile.

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 action and the motivating scenario, then conditions, then the confirm mechanics. Dense and largely waste-free, though the parenthetical about series_id and the em-dash asides make it busier than necessary.

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 an 11-parameter mutation with thin annotations, the description covers timing, failure modes, the dry_run/confirm contract, and how to source its arguments from a sibling tool. With an output schema present it rightly spends no words on return values.

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 91%, so the schema carries most parameter meaning. The description still adds real value by tying kind/id/language to what get_subtitles reports and by explaining why series_id is only needed with search_anyway for unlisted episodes — a rationale the schema states only in compressed form.

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+scope: "Asks Bazarr to go looking for one language of subtitles for one item it already tracks." It is clearly distinguished from the sibling get_subtitles (which reports) and from the generic trigger_search, and the quoted user situation pins the intent further.

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?

Explicit when-to-use ("it is missing Dutch subs and I do not want to wait for the next round"), explicit default behavior (only searches items Bazarr lists as missing) versus search_anyway, plus the special case requiring series_id. It also states the preview-then-confirm sequence an agent must follow.

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