Skip to main content
Glama

Get job

job.get
Read-onlyIdempotent

Status, progress and, once completed, the result of long-running calls (media.import, media.analyze, create.*, export.video, qa.check). Same record as tasks/get. status_message says what it is doing, or where it stands in the queue; for names the media or timeline. wait_seconds (up to 50) answers when any job asked for finishes, fails or is cancelled, or when the wait runs out (then with its progress), so one call waits instead of many polls. seconds_left and starts_in_seconds come only when progress so far allows. job_ids reads many and answers {jobs, not_found}, each result in brief (result_summary: lists cut to their first items, with what was cut) unless result is full; result summary does the same for one job. A job whose progress stops for minutes ends with a stalled error, freeing its slot.

Input Schema

NameRequiredDescriptionDefault
job_idNoOne job: the answer is that job
resultNoDefault full for one job_id; summary for job_ids, so a check on many stays small (full gives them whole)
job_idsNoMany jobs at once (up to 100): the answer is {jobs, not_found}
wait_secondsNoWait up to this long (at most 50 s) for any job asked for to finish (its status changes); progress along the way does not end the wait; 0 answers at once

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / wait_seconds / description
      Previous value: -"Wait up to this long (at most 50 s) for any job asked for to change status, progress or status message; 0 answers at once"New value: +"Wait up to this long (at most 50 s) for any job asked for to finish (its status changes); progress along the way does not end the wait; 0 answers at once"
  2. Changed3 schema fields changed
    • addedInput schema / properties / result
      Added value: +{
      +  "description": "Default full for one job_id; summary for job_ids, so a check on many stays small (full gives them whole)",
      +  "enum": [
      +    "full",
      +    "summary",
      +    "none"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / wait_seconds
      Added value: +{
      +  "default": 0,
      +  "description": "Wait up to this long (at most 50 s) for any job asked for to change status, progress or status message; 0 answers at once",
      +  "maximum": 50,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "created_at": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "properties": {
      -          "code": {
      -            "enum": [
      -              "bad_request",
      -              "no_audio",
      -              "not_found",
      -              "expired",
      -              "media_not_ready",
      -              "media_offline",
      -              "engine_error",
      -              "render_failed",
      -              "interrupted",
      -              "cancelled",
      -              "credential_required",
      -              "credential_invalid",
      -              "output_exists",
      -              "path_not_allowed",
      -              "limit_exceeded",
      -              "quota_exceeded",
      -              "subscription_required",
      -              "email_unverified",
      -              "service_unavailable",
      -              "server_busy"
      -            ],
      -            "type": "string"
      -          },
      -          "detail": {
      -            "additionalProperties": {},
      -            "propertyNames": {
      -              "type": "string"
      -            },
      -            "type": "object"
      -          },
      -          "hint": {
      -            "type": "string"
      -          },
      -          "message": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "code",
      -          "message"
      -        ],
      -        "type": "object"
      -      },
      -      "job_id": {
      -        "description": "Job handle; the same value is the MCP task id",
      -        "pattern": "^j_[0-9a-z]{26}$",
      -        "type": "string"
      -      },
      -      "progress": {
      -        "maximum": 1,
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "result": {
      -        "description": "The tool's structured result once completed"
      -      },
      -      "status": {
      -        "enum": [
      -          "working",
      -          "completed",
      -          "failed",
      -          "cancelled"
      -        ],
      -        "type": "string"
      -      },
      -      "status_message": {
      -        "description": "What it is doing; while it waits, its place in the queue and what it waits for (a job slot, a render slot or the sandbox)",
      -        "type": "string"
      -      },
      -      "tool": {
      -        "type": "string"
      -      },
      -      "updated_at": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "job_id",
      -      "tool",
      -      "status",
      -      "created_at",
      -      "updated_at"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "jobs": {
      -        "description": "The jobs found, in the order asked",
      -        "items": {
      -          "properties": {
      -            "created_at": {
      -              "type": "string"
      -            },
      -            "error": {
      -              "properties": {
      -                "code": {
      -                  "enum": [
      -                    "bad_request",
      -                    "no_audio",
      -                    "not_found",
      -                    "expired",
      -                    "media_not_ready",
      -                    "media_offline",
      -                    "engine_error",
      -                    "render_failed",
      -                    "interrupted",
      -                    "cancelled",
      -                    "credential_required",
      -                    "credential_invalid",
      -                    "output_exists",
      -                    "path_not_allowed",
      -                    "limit_exceeded",
      -                    "quota_exceeded",
      -                    "subscription_required",
      -                    "email_unverified",
      -                    "service_unavailable",
      -                    "server_busy"
      -                  ],
      -                  "type": "string"
      -                },
      -                "detail": {
      -                  "additionalProperties": {},
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "hint": {
      -                  "type": "string"
      -                },
      -                "message": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "code",
      -                "message"
      -              ],
      -              "type": "object"
      -            },
      -            "job_id": {
      -              "description": "Job handle; the same value is the MCP task id",
      -              "pattern": "^j_[0-9a-z]{26}$",
      -              "type": "string"
      -            },
      -            "progress": {
      -              "maximum": 1,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "result": {
      -              "description": "The tool's structured result once completed"
      -            },
      -            "status": {
      -              "enum": [
      -                "working",
      -                "completed",
      -                "failed",
      -                "cancelled"
      -              ],
      -              "type": "string"
      -            },
      -            "status_message": {
      -              "description": "What it is doing; while it waits, its place in the queue and what it waits for (a job slot, a render slot or the sandbox)",
      -              "type": "string"
      -            },
      -            "tool": {
      -              "type": "string"
      -            },
      -            "updated_at": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "job_id",
      -            "tool",
      -            "status",
      -            "created_at",
      -            "updated_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "not_found": {
      -        "description": "Ids with no job of yours (finished jobs are kept 7 days)",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "jobs",
      -      "not_found"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "created_at": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "properties": {
      +          "code": {
      +            "enum": [
      +              "bad_request",
      +              "no_audio",
      +              "not_found",
      +              "expired",
      +              "media_not_ready",
      +              "media_offline",
      +              "engine_error",
      +              "render_failed",
      +              "interrupted",
      +              "stalled",
      +              "cancelled",
      +              "credential_required",
      +              "credential_invalid",
      +              "output_exists",
      +              "path_not_allowed",
      +              "limit_exceeded",
      +              "quota_exceeded",
      +              "subscription_required",
      +              "email_unverified",
      +              "service_unavailable",
      +              "server_busy"
      +            ],
      +            "type": "string"
      +          },
      +          "detail": {
      +            "additionalProperties": {},
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          "hint": {
      +            "type": "string"
      +          },
      +          "message": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "for": {
      +        "description": "What it is for, known from the start",
      +        "properties": {
      +          "inputs": {
      +            "description": "Media it is made from",
      +            "items": {
      +              "description": "Media handle from media.import or a create.* tool",
      +              "pattern": "^m_[0-9a-z]{26}$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "type": "string"
      +          },
      +          "media_id": {
      +            "description": "The media it imports, makes or reads",
      +            "pattern": "^m_[0-9a-z]{26}$",
      +            "type": "string"
      +          },
      +          "media_ids": {
      +            "description": "Stems it makes",
      +            "items": {
      +              "description": "Media handle from media.import or a create.* tool",
      +              "pattern": "^m_[0-9a-z]{26}$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "preset": {
      +            "type": "string"
      +          },
      +          "timeline_id": {
      +            "description": "Timeline handle; every edit returns a new one",
      +            "pattern": "^tl_[0-9a-f]{32}$",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "job_id": {
      +        "description": "Job handle; the same value is the MCP task id",
      +        "pattern": "^j_[0-9a-z]{26}$",
      +        "type": "string"
      +      },
      +      "progress": {
      +        "maximum": 1,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "result": {
      +        "description": "The tool's structured result once completed"
      +      },
      +      "result_summary": {
      +        "description": "result \"summary\": the result in brief; result \"full\" has all of it",
      +        "properties": {
      +          "cut": {
      +            "additionalProperties": {
      +              "type": "number"
      +            },
      +            "description": "Path of each cut (a.b.0.c): its full length",
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          "value": {
      +            "description": "Lists cut to 5 items, long text cut"
      +          }
      +        },
      +        "required": [
      +          "value",
      +          "cut"
      +        ],
      +        "type": "object"
      +      },
      +      "seconds_left": {
      +        "description": "Running: seconds left at its recent rate of progress, once it has moved steadily (later steps may differ)",
      +        "type": "number"
      +      },
      +      "starts_in_seconds": {
      +        "description": "Queued next in line: seconds until a slot should free, when every job holding one has seconds_left",
      +        "type": "number"
      +      },
      +      "status": {
      +        "enum": [
      +          "working",
      +          "completed",
      +          "failed",
      +          "cancelled"
      +        ],
      +        "type": "string"
      +      },
      +      "status_message": {
      +        "description": "What it is doing; while it waits, its place in the queue and what it waits for (a job slot, a render slot or the sandbox)",
      +        "type": "string"
      +      },
      +      "tool": {
      +        "type": "string"
      +      },
      +      "updated_at": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "job_id",
      +      "tool",
      +      "status",
      +      "created_at",
      +      "updated_at"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "jobs": {
      +        "description": "The jobs found, in the order asked",
      +        "items": {
      +          "properties": {
      +            "created_at": {
      +              "type": "string"
      +            },
      +            "error": {
      +              "properties": {
      +                "code": {
      +                  "enum": [
      +                    "bad_request",
      +                    "no_audio",
      +                    "not_found",
      +                    "expired",
      +                    "media_not_ready",
      +                    "media_offline",
      +                    "engine_error",
      +                    "render_failed",
      +                    "interrupted",
      +                    "stalled",
      +                    "cancelled",
      +                    "credential_required",
      +                    "credential_invalid",
      +                    "output_exists",
      +                    "path_not_allowed",
      +                    "limit_exceeded",
      +                    "quota_exceeded",
      +                    "subscription_required",
      +                    "email_unverified",
      +                    "service_unavailable",
      +                    "server_busy"
      +                  ],
      +                  "type": "string"
      +                },
      +                "detail": {
      +                  "additionalProperties": {},
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "hint": {
      +                  "type": "string"
      +                },
      +                "message": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "code",
      +                "message"
      +              ],
      +              "type": "object"
      +            },
      +            "for": {
      +              "description": "What it is for, known from the start",
      +              "properties": {
      +                "inputs": {
      +                  "description": "Media it is made from",
      +                  "items": {
      +                    "description": "Media handle from media.import or a create.* tool",
      +                    "pattern": "^m_[0-9a-z]{26}$",
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "kind": {
      +                  "type": "string"
      +                },
      +                "media_id": {
      +                  "description": "The media it imports, makes or reads",
      +                  "pattern": "^m_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "media_ids": {
      +                  "description": "Stems it makes",
      +                  "items": {
      +                    "description": "Media handle from media.import or a create.* tool",
      +                    "pattern": "^m_[0-9a-z]{26}$",
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "preset": {
      +                  "type": "string"
      +                },
      +                "timeline_id": {
      +                  "description": "Timeline handle; every edit returns a new one",
      +                  "pattern": "^tl_[0-9a-f]{32}$",
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "job_id": {
      +              "description": "Job handle; the same value is the MCP task id",
      +              "pattern": "^j_[0-9a-z]{26}$",
      +              "type": "string"
      +            },
      +            "progress": {
      +              "maximum": 1,
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "result": {
      +              "description": "The tool's structured result once completed"
      +            },
      +            "result_summary": {
      +              "description": "result \"summary\": the result in brief; result \"full\" has all of it",
      +              "properties": {
      +                "cut": {
      +                  "additionalProperties": {
      +                    "type": "number"
      +                  },
      +                  "description": "Path of each cut (a.b.0.c): its full length",
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "value": {
      +                  "description": "Lists cut to 5 items, long text cut"
      +                }
      +              },
      +              "required": [
      +                "value",
      +                "cut"
      +              ],
      +              "type": "object"
      +            },
      +            "seconds_left": {
      +              "description": "Running: seconds left at its recent rate of progress, once it has moved steadily (later steps may differ)",
      +              "type": "number"
      +            },
      +            "starts_in_seconds": {
      +              "description": "Queued next in line: seconds until a slot should free, when every job holding one has seconds_left",
      +              "type": "number"
      +            },
      +            "status": {
      +              "enum": [
      +                "working",
      +                "completed",
      +                "failed",
      +                "cancelled"
      +              ],
      +              "type": "string"
      +            },
      +            "status_message": {
      +              "description": "What it is doing; while it waits, its place in the queue and what it waits for (a job slot, a render slot or the sandbox)",
      +              "type": "string"
      +            },
      +            "tool": {
      +              "type": "string"
      +            },
      +            "updated_at": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "job_id",
      +            "tool",
      +            "status",
      +            "created_at",
      +            "updated_at"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "not_found": {
      +        "description": "Ids with no job of yours (finished jobs are kept 7 days)",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "jobs",
      +      "not_found"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the read-only and idempotent annotations, the description discloses important behavior: wait_seconds can block until any requested job finishes, fails, or is cancelled; progress does not end the wait; stalled jobs eventually error out; and result summaries truncate lists. These details materially help an agent predict what a call will do.

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?

The description is front-loaded with the core purpose, but it is a dense run-on paragraph with semicolon-separated clauses and some repetition of schema parameter details. It is informative but could be structured more cleanly for faster scanning.

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?

Given the output schema, rich annotations, and full schema coverage, the description is complete enough for an agent to call the tool correctly. It covers waiting behavior, batch reads, result summarization, and stalled-job handling without needing to explain return values in detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents job_id, result defaults, job_ids batch behavior, and wait_seconds semantics. The description largely restates those parameter meanings rather than adding substantial new parameter-level guidance, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns status, progress, and completed results for long-running jobs, with concrete examples like media.import and export.video. It is clear what the tool does, though it does not explicitly contrast itself with job.list or job.cancel.

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?

It explains the main usage context: checking long-running calls, waiting instead of polling repeatedly, and reading many jobs at once via job_ids. It does not explicitly state when to use job.list or job.cancel instead, so the alternative-selection guidance is not complete.

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.