Skip to main content
Glama

Job status

get_job_status
Read-onlyIdempotent

Check one async generation job and, once it has finished, get its result URLs. Use it after any tool that returns a job identifier and names a kind for it. Pass that returned string as jobId (some generation responses name it job_id or taskId); do not call this tool if the job id is missing, or when generation already returned a synchronous result. The response shape and status values depend on kind. Read-only, spends no credits. kind names the tool that returned jobId: generate_image and edit_image "image", generate_video "video", extend_video "video_extend", generate_music "music", remix_music "music_remix", generate_music_video "music_video", separate_stems "stems", generate_midi "midi", beat_sync "beat_sync", create_ad_creative "ad_creative", start_composition "composition", a video analysis "analyze_video", and create_character_reference "character_reference": pass its requestId as jobId with the same seriesId, name and outfit; it answers { ready: false } or { ready: true, referenceUri, previewUrl }. run_flow is polled with get_flow_run, and generate_episode with its own "status" action. seriesId is the flowId of the Flow Studio flow that holds the series (from list_flows).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "kind": "<kind>",
      "jobId": "<jobId>",
      "context": "<context>",
      "llm_model": "<llm_model>"
    },
    "name": "get_job_status"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindYes
nameNoKind "character_reference" only, and required for it: the character's exact name, as passed to create_character_reference.
jobIdYesRequired non-empty job identifier returned by the generation tool (jobId, job_id, or taskId; for kind "character_reference", the requestId). Do not call until you have an actual id; never pass undefined or a placeholder.
outfitNoKind "character_reference" only: the outfit passed to create_character_reference. Default everyday.
contextYesExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution."
seriesIdNoKind "character_reference" only, and required for it: the series the character belongs to.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / jobId / description
      Previous value: -"Required non-empty job identifier returned by the generation tool (jobId, job_id, or taskId). Do not call until you have an actual id; never pass undefined or a placeholder."New value: +"Required non-empty job identifier returned by the generation tool (jobId, job_id, or taskId; for kind \"character_reference\", the requestId). Do not call until you have an actual id; never pass undefined or a placeholder."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "video",
      -  "image",
      -  "music",
      -  "music_remix",
      -  "music_video",
      -  "analyze_video",
      -  "ad_creative",
      -  "beat_sync",
      -  "composition",
      -  "midi",
      -  "stems",
      -  "video_extend"
      -]New value: +[
      +  "video",
      +  "image",
      +  "music",
      +  "music_remix",
      +  "music_video",
      +  "analyze_video",
      +  "ad_creative",
      +  "beat_sync",
      +  "composition",
      +  "midi",
      +  "stems",
      +  "video_extend",
      +  "character_reference"
      +]
    • addedInput schema / properties / name
      Added value: +{
      +  "description": "Kind \"character_reference\" only, and required for it: the character's exact name, as passed to create_character_reference.",
      +  "type": "string"
      +}
    • addedInput schema / properties / outfit
      Added value: +{
      +  "description": "Kind \"character_reference\" only: the outfit passed to create_character_reference. Default everyday.",
      +  "enum": [
      +    "everyday",
      +    "spacesuit"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / seriesId
      Added value: +{
      +  "description": "Kind \"character_reference\" only, and required for it: the series the character belongs to.",
      +  "minLength": 1,
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / jobId / description
      Added value: +"Required non-empty job identifier returned by the generation tool (jobId, job_id, or taskId). Do not call until you have an actual id; never pass undefined or a placeholder."
    • addedInput schema / properties / jobId / minLength
      Added value: +1
  3. Changed1 schema field changed
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "video",
      -  "image",
      -  "music",
      -  "music_remix",
      -  "music_video",
      -  "analyze_video",
      -  "ad_creative",
      -  "beat_sync",
      -  "composition",
      -  "midi",
      -  "stems",
      -  "video_extend",
      -  "batch_video"
      -]New value: +[
      +  "video",
      +  "image",
      +  "music",
      +  "music_remix",
      +  "music_video",
      +  "analyze_video",
      +  "ad_creative",
      +  "beat_sync",
      +  "composition",
      +  "midi",
      +  "stems",
      +  "video_extend"
      +]
  4. First observed

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false; the description's 'Read-only, spends no credits' largely restates that. It does add real signal beyond the annotations — the response shape and status values vary by kind, and the character_reference case is spelled out as `{ ready: false }` or `{ ready: true, referenceUri, previewUrl }`. It still doesn't enumerate what the other kinds return, or what to do on failure/expiry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the do-not-call conditions are front-loaded, which is right, but the long inline mapping of thirteen kinds to tool names is dense prose that would read better as a list, and it pushes the character_reference and seriesId guidance into a trailing run-on. Size is justified by the breadth of kinds, but the structure is not.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With eight parameters, four of them required, and no output schema, the description carries the full burden of describing return values — and it only says the shape 'depends on kind' while detailing a single kind. For a polling tool, the absence of typical status values or terminal-state behavior leaves a real gap.

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 88%, so the baseline is 3, and the description earns above that by explaining that the returned identifier may be named jobId, job_id or taskId, that `kind` names the originating tool, and that seriesId is the flowId of the Flow Studio flow obtainable from list_flows. The analytics-only parameters (context, llm_model, conversation_id) are left entirely to the schema, which is acceptable at this coverage level.

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 — check one async generation job and retrieve its result URLs once finished — and makes the polling semantics explicit. It goes further by naming exactly which sibling tools produce which `kind`, and by routing `run_flow` and `generate_episode` elsewhere, so an agent can distinguish it from every relevant alternative.

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 positive conditions (after any tool that returns a job identifier), negative conditions (don't call when the id is missing, or when generation already returned a synchronous result), and concrete alternatives (get_flow_run for run_flow, the 'status' action for generate_episode). The kind-to-tool table removes any ambiguity about whether this tool applies.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.