Skip to main content
Glama

Cancel a cloud export

cancel_render
Idempotent

Cancel an owned pending or running cloud export and give back the credits set aside for it. Completed exports remain available. Repeated cancellation is safe.

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": {
      "jobId": "<jobId>"
    },
    "name": "cancel_render"
  }
}

Input Schema

NameRequiredDescriptionDefault
jobIdYes

Output Schema

NameRequiredDescriptionDefault
idYes
notesNo
phaseYes
outputNo
statusYes
endCardNo
artifactYes
attemptsYes
branchIdYes
loudnessNo
progressYes
revisionYes
admissionNo
createdAtYes
errorCodeYes
projectIdYes
streamUrlNo
updatedAtYes
resolutionYes
totalFramesYes
errorMessageNo
phaseProgressYes
framesCompletedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / endCard
      Added value: +{
      +  "properties": {
      +    "seconds": {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "startSeconds": {
      +      "minimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "startSeconds",
      +    "seconds"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / notes
      Added value: +{
      +  "items": {
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "minItems": 1,
      +  "type": "array"
      +}
  2. Changed3 schema fields changed
    • changedOutput schema / properties / artifact / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "bytes": {
      -        "exclusiveMinimum": 0,
      -        "maximum": 9007199254740991,
      -        "type": "integer"
      -      },
      -      "downloadUrl": {
      -        "format": "uri",
      -        "type": "string"
      -      },
      -      "expiresAt": {
      -        "format": "date-time",
      -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "bytes",
      -      "expiresAt",
      -      "downloadUrl"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "bytes": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      },
      +      "downloadUrl": {
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "expiresAt": {
      +        "format": "date-time",
      +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "bytes",
      +      "expiresAt",
      +      "downloadUrl"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / createdAt / pattern
      Previous value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    • changedOutput schema / properties / updatedAt / pattern
      Previous value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
  3. Changed1 schema field changed
    • addedOutput schema / properties / loudness
      Added value: +{
      +  "properties": {
      +    "endSeconds": {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "integratedLufs": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "momentaryLufs": {
      +      "items": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "type": "array"
      +    },
      +    "peakDb": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "rangeLu": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "startSeconds": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "stepSeconds": {
      +      "const": 0.5,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "startSeconds",
      +    "endSeconds",
      +    "stepSeconds",
      +    "momentaryLufs",
      +    "integratedLufs",
      +    "rangeLu",
      +    "peakDb"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A3.9/5.0
Behavior3/5

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

Beyond the annotations, the description discloses the credit-release effect and the ownership requirement (auth scope), which are genuinely useful. However, 'Repeated cancellation is safe' simply restates idempotentHint=true, and nothing is said about what happens on an invalid, already-cancelled, or completed job beyond the fact that completed ones survive. With annotations already covering the mutation/safety profile, this is a modest but real addition.

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?

Three short sentences, front-loaded with the action and its effect, then the precondition, then the idempotency note. No filler, and each sentence sits in a logical order.

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?

Return details are handled by the output schema and the safety profile by annotations, so the description only needs to cover target validity and side effects — both present. The remaining gap is practical orientation: the agent is not told where the jobId comes from or what error state to expect when cancelling a stale job.

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

Parameters2/5

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

There is one required parameter with 0% schema description coverage; the schema only supplies type, uuid format, and a pattern. The description never mentions jobId, where to obtain it (e.g., from a render listing), or what an invalid id does. Only the word 'owned' implicitly constrains which identifier is acceptable, which is thin compensation for the coverage gap.

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?

The description gives a specific verb (cancel) and a specific resource (an owned pending or running cloud export), plus a side effect (credits released). It is clearly distinguishable from the read/list siblings (read_render, list_renders) and from the initiating tool (render_video), so an agent can select it without opening any schema.

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?

Usage context is stated clearly: the target must be owned and pending or running, and the sentence 'Completed exports remain available' tells the agent this tool is the wrong choice for finished jobs. It stops short of naming the alternative sibling for inspecting or listing exports, so the routing guidance is clear but not exhaustive.

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.