Skip to main content
Glama

Quote a revision of a run

quote_revision
Read-only

Quote a video revision's cost before spending credits by passing a run ID plus changes or a document; pay the quoted total only if it delivers, otherwise nothing.

Instructions

Price a revision WITHOUT spending credits: pass run_id and exactly one of changes or document. A revision that delivers is charged its quoted total; one that fails is charged nothing. While paid edits are closed it answers editing_disabled and charges nothing.

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": {
      "run_id": "<run_id>"
    },
    "name": "quote_revision"
  }
}

Input Schema

NameRequiredDescriptionDefault
run_idYes
changesNo
documentNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.45.0
    • removedInput schema / properties / changes / description
      Removed value: -"Shots to generate anew over the run as it is: each a shot_id and the operation to generate for it."
    • removedInput schema / properties / document / description
      Removed value: -"The whole edited document, as the run's draft holds it; retimes, deletions and uploads go this way."
    • addedInput schema / properties / run_id / $ref
      Added value: +"#/$defs/d2"
    • removedInput schema / properties / run_id / description
      Removed value: -"The run to revise: a succeeded make_faceless run, an original or a revision."
    • removedInput schema / properties / run_id / pattern
      Removed value: -"^run_[a-zA-Z0-9]+$"
    • removedInput schema / properties / run_id / type
      Removed value: -"string"
  2. Changed36 schema fields changedv0.39.0
    • addedInput schema / $defs
      Added value: +{
      +  "d0": {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "mode": {
      +            "const": "retake",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "mode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "description": {
      +            "maxLength": 600,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "mode": {
      +            "const": "new_picture",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "mode",
      +          "description"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "instruction": {
      +            "maxLength": 600,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "mode": {
      +            "const": "edit_picture",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "mode",
      +          "instruction"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "mode": {
      +            "const": "animate",
      +            "type": "string"
      +          },
      +          "motion": {
      +            "maxLength": 300,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "mode"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "d1": {
      +    "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
      +    "type": "string"
      +  },
      +  "d2": {
      +    "pattern": "^run_[a-zA-Z0-9]+$",
      +    "type": "string"
      +  },
      +  "d3": {
      +    "exclusiveMinimum": 0,
      +    "type": "integer"
      +  }
      +}
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedInput schema / properties / changes / items / additionalProperties
      Removed value: -false
    • addedInput schema / properties / changes / items / properties / operation / $ref
      Added value: +"#/$defs/d0"
    • removedInput schema / properties / changes / items / properties / operation / oneOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "mode": {
      -        "const": "retake",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "description": {
      -        "maxLength": 600,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "mode": {
      -        "const": "new_picture",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "description"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "instruction": {
      -        "maxLength": 600,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "mode": {
      -        "const": "edit_picture",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "instruction"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "mode": {
      -        "const": "animate",
      -        "type": "string"
      -      },
      -      "motion": {
      -        "maxLength": 300,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode"
      -    ],
      -    "type": "object"
      -  }
      -]
    • addedInput schema / properties / changes / items / properties / shot_id / $ref
      Added value: +"#/$defs/d1"
    • removedInput schema / properties / changes / items / properties / shot_id / pattern
      Removed value: -"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
    • removedInput schema / properties / changes / items / properties / shot_id / type
      Removed value: -"string"
    • removedInput schema / properties / document / additionalProperties
      Removed value: -false
    • addedInput schema / properties / document / properties / discarded / items / $ref
      Added value: +"#/$defs/d2"
    • removedInput schema / properties / document / properties / discarded / items / pattern
      Removed value: -"^run_[a-zA-Z0-9]+$"
    • removedInput schema / properties / document / properties / discarded / items / type
      Removed value: -"string"
    • addedInput schema / properties / document / properties / duration_frames / $ref
      Added value: +"#/$defs/d3"
    • removedInput schema / properties / document / properties / duration_frames / exclusiveMinimum
      Removed value: -0
    • removedInput schema / properties / document / properties / duration_frames / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / document / properties / duration_frames / type
      Removed value: -"integer"
    • removedInput schema / properties / document / properties / shots / items / additionalProperties
      Removed value: -false
    • changedInput schema / properties / document / properties / shots / items / properties / asset / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "from": {
      -        "const": "source",
      -        "type": "string"
      -      },
      -      "shot_id": {
      -        "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "from",
      -      "shot_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "from": {
      -        "const": "candidate",
      -        "type": "string"
      -      },
      -      "run_id": {
      -        "pattern": "^run_[a-zA-Z0-9]+$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "from",
      -      "run_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "from": {
      -        "const": "upload",
      -        "type": "string"
      -      },
      -      "upload_id": {
      -        "pattern": "^upl_[a-f0-9]{32}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "from",
      -      "upload_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "from": {
      -        "const": "generate",
      -        "type": "string"
      -      },
      -      "operation": {
      -        "oneOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "mode": {
      -                "const": "retake",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "mode"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "description": {
      -                "maxLength": 600,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "mode": {
      -                "const": "new_picture",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "mode",
      -              "description"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "instruction": {
      -                "maxLength": 600,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "mode": {
      -                "const": "edit_picture",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "mode",
      -              "instruction"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "mode": {
      -                "const": "animate",
      -                "type": "string"
      -              },
      -              "motion": {
      -                "maxLength": 300,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "mode"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "from",
      -      "operation"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "from": {
      +        "const": "source",
      +        "type": "string"
      +      },
      +      "shot_id": {
      +        "$ref": "#/$defs/d1"
      +      }
      +    },
      +    "required": [
      +      "from",
      +      "shot_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "from": {
      +        "const": "candidate",
      +        "type": "string"
      +      },
      +      "run_id": {
      +        "$ref": "#/$defs/d2"
      +      }
      +    },
      +    "required": [
      +      "from",
      +      "run_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "from": {
      +        "const": "upload",
      +        "type": "string"
      +      },
      +      "upload_id": {
      +        "pattern": "^upl_[a-f0-9]{32}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "from",
      +      "upload_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "from": {
      +        "const": "generate",
      +        "type": "string"
      +      },
      +      "operation": {
      +        "$ref": "#/$defs/d0"
      +      }
      +    },
      +    "required": [
      +      "from",
      +      "operation"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / document / properties / shots / items / properties / end_frame / $ref
      Added value: +"#/$defs/d3"
    • removedInput schema / properties / document / properties / shots / items / properties / end_frame / exclusiveMinimum
      Removed value: -0
    • removedInput schema / properties / document / properties / shots / items / properties / end_frame / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / document / properties / shots / items / properties / end_frame / type
      Removed value: -"integer"
    • addedInput schema / properties / document / properties / shots / items / properties / id / $ref
      Added value: +"#/$defs/d1"
    • removedInput schema / properties / document / properties / shots / items / properties / id / pattern
      Removed value: -"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
    • removedInput schema / properties / document / properties / shots / items / properties / id / type
      Removed value: -"string"
    • removedInput schema / properties / document / properties / shots / items / properties / media_offset_frames / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / document / properties / shots / items / properties / start_frame / maximum
      Removed value: -9007199254740991
    • addedInput schema / properties / document / properties / source_run_id / $ref
      Added value: +"#/$defs/d2"
    • removedInput schema / properties / document / properties / source_run_id / pattern
      Removed value: -"^run_[a-zA-Z0-9]+$"
    • removedInput schema / properties / document / properties / source_run_id / type
      Removed value: -"string"
    • removedInput schema / properties / document / properties / timebase / additionalProperties
      Removed value: -false
    • addedInput schema / properties / document / properties / timebase / properties / fps / $ref
      Added value: +"#/$defs/d3"
    • removedInput schema / properties / document / properties / timebase / properties / fps / exclusiveMinimum
      Removed value: -0
    • removedInput schema / properties / document / properties / timebase / properties / fps / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / document / properties / timebase / properties / fps / type
      Removed value: -"integer"
    • addedInput schema / properties / document / properties / transitions
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "at": {
      +          "anyOf": [
      +            {
      +              "const": "scene_changes",
      +              "type": "string"
      +            },
      +            {
      +              "items": {
      +                "$ref": "#/$defs/d1"
      +              },
      +              "maxItems": 500,
      +              "minItems": 1,
      +              "type": "array"
      +            }
      +          ],
      +          "default": "scene_changes"
      +        },
      +        "look": {
      +          "enum": [
      +            "flash",
      +            "light_leak"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "look"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  3. Addedv0.28.0

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description adds real value with the charging model (quoted total on delivery, nothing on failure) and the editing_disabled outcome. It does not explain what the quote response contains or how long a quote remains valid, which matters for a pricing tool.

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 cost-saving guarantee, then the argument constraint, then the billing and gating behavior. No filler and no repetition of the title.

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?

The tool has a deeply nested schema (change operations with four modes, plus a full document object) and no output schema, yet the description says nothing about the quote returned or the constraints on the changes/document payloads. The billing and editing_disabled facts are helpful but the calling surface remains under-explained for this complexity.

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 0% and the schema does not encode the mutual exclusivity of changes and document, so the description's 'exactly one of changes or document' rule is genuinely additive. However it never explains what each form means (a list of shot operations vs a full timeline document), leaving the two largest, most nested parameters semantically opaque.

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?

States a specific verb and resource ('Price a revision') and foregrounds the key differentiator, 'WITHOUT spending credits', which implicitly separates it from the sibling revise_run. It never names revise_run explicitly, so the sibling distinction relies on inference rather than a direct pointer.

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?

Gives clear invocation conditions: pass run_id and exactly one of changes or document, plus what happens when paid edits are closed (editing_disabled, no charge). It lacks an explicit statement of when to prefer revise_run instead, so the when-not guidance is incomplete.

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