Skip to main content
Glama

Cancel job

job.cancel
DestructiveIdempotent

Stop a job, queued or running, within seconds: its engines are killed and its slot goes to the next job. Finished jobs are left as they are.

Input Schema

NameRequiredDescriptionDefault
job_idYesJob handle; the same value is the MCP task id

Output Schema

NameRequiredDescriptionDefault
forNoWhat it is for, known from the start
toolYes
errorNo
job_idYesJob handle; the same value is the MCP task id
resultNoThe tool's structured result once completed
statusYes
progressNo
created_atYes
updated_atYes
seconds_leftNoRunning: seconds left at its recent rate of progress, once it has moved steadily (later steps may differ)
result_summaryNoresult "summary": the result in brief; result "full" has all of it
status_messageNoWhat 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)
starts_in_secondsNoQueued next in line: seconds until a slot should free, when every job holding one has seconds_left

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedOutput schema / properties / error / properties / code / enum
      Previous value: -[
      -  "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"
      -]New value: +[
      +  "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"
      +]
    • addedOutput schema / properties / for
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / result_summary
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / seconds_left
      Added value: +{
      +  "description": "Running: seconds left at its recent rate of progress, once it has moved steadily (later steps may differ)",
      +  "type": "number"
      +}
    • addedOutput schema / properties / starts_in_seconds
      Added value: +{
      +  "description": "Queued next in line: seconds until a slot should free, when every job holding one has seconds_left",
      +  "type": "number"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Goes well past the destructiveHint/idempotentHint annotations by stating the actual mechanics: engines are killed, the slot is released to the next job, and terminal jobs are unaffected. That last clause effectively documents no-op semantics for already-finished jobs, which the annotations cannot express.

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

Conciseness5/5

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

Two short sentences, zero filler, with the scope constraint and the effect front-loaded before the edge-case clause. Every clause carries information an agent would otherwise have to guess.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description covers scope, timing, and side effects. It leaves open whether cancellation is reversible and what error or result occurs when the job is already terminal.

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?

Only one parameter and the schema already documents it fully at 100% coverage, including the pattern and the note that it doubles as the MCP task id. The description adds no additional meaning about job_id, so baseline 3 applies.

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?

Specific verb plus resource ("Stop a job") with an explicit scope qualifier ("queued or running") and a concrete timing claim ("within seconds"). An agent can immediately tell this apart from job.get or job.list, which read state rather than terminate work.

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?

"Finished jobs are left as they are" is an implicit when-not condition that prevents pointless calls on completed jobs. It does not name sibling alternatives (job.get/job.list for status checks), so it stops short of full routing guidance.

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.