Skip to main content
Glama

Upscale a video

upscale_video

Start upscaling a video to 1080p, 2k or 4k. Charges credits for the whole video (its length is read from the file) and returns the task. Downloading a large video can take a few minutes. If this call times out or fails, first call list_tasks to see whether the task was created, and retry only with the SAME idempotency_key: a new key charges again.

Input Schema

NameRequiredDescriptionDefault
opsNoOptional enhancement options (deinterlace, stabilize, denoise 0-3, deflicker, fpsMultiplier 2/4/8 with slowMotion, faceRestore, hdr hdr10/hlg, engine anime)
video_urlYesPublic http(s) URL of the video (MP4, MOV or WebM, up to 500MB; up to 1200 seconds at 1080p, 600 seconds at 2k and 4k), or the video_url returned by create_upload
resolutionYesTarget resolution
webhook_urlNoOptional public https:// URL to receive a POST webhook when the task completes or fails
idempotency_keyYesA unique string for this request, e.g. a UUID (printable ASCII, no spaces). Reuse it when retrying the same request.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / webhook_url
      Added value: +{
      +  "description": "Optional public https:// URL to receive a POST webhook when the task completes or fails",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / ops
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional enhancement options (deinterlace, stabilize, denoise 0-3, deflicker, fpsMultiplier 2/4/8 with slowMotion, faceRestore, hdr hdr10/hlg, engine anime)",
      +  "properties": {
      +    "deflicker": {
      +      "type": "boolean"
      +    },
      +    "deinterlace": {
      +      "type": "boolean"
      +    },
      +    "denoise": {
      +      "anyOf": [
      +        {
      +          "const": 0,
      +          "type": "number"
      +        },
      +        {
      +          "const": 1,
      +          "type": "number"
      +        },
      +        {
      +          "const": 2,
      +          "type": "number"
      +        },
      +        {
      +          "const": 3,
      +          "type": "number"
      +        }
      +      ]
      +    },
      +    "engine": {
      +      "enum": [
      +        "flashvsr",
      +        "anime"
      +      ],
      +      "type": "string"
      +    },
      +    "faceRestore": {
      +      "type": "boolean"
      +    },
      +    "fpsMultiplier": {
      +      "anyOf": [
      +        {
      +          "const": 1,
      +          "type": "number"
      +        },
      +        {
      +          "const": 2,
      +          "type": "number"
      +        },
      +        {
      +          "const": 4,
      +          "type": "number"
      +        },
      +        {
      +          "const": 8,
      +          "type": "number"
      +        }
      +      ]
      +    },
      +    "hdr": {
      +      "enum": [
      +        "none",
      +        "hdr10",
      +        "hlg"
      +      ],
      +      "type": "string"
      +    },
      +    "slowMotion": {
      +      "type": "boolean"
      +    },
      +    "stabilize": {
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses credit charging for the entire video, that length is read from the file, that it returns a task (async), and that downloading large videos takes minutes. It does not say how to retrieve the finished result (presumably get_task) or whether a webhook replaces polling, which keeps it from a 5.

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 sentences, front-loaded with the action and outputs, then cost/duration, then failure recovery. No sentence is filler and the most decision-relevant facts come first.

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?

For a credit-charging async job with a nested ops object and no output schema, the description covers cost, limits-by-reference, async return, and retry semantics. The remaining gap is how to obtain the result (poll get_task vs. wait for webhook), which the agent must infer from sibling names.

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 100%, so the schema already documents all five parameters; baseline is 3. The description adds real semantic weight only to idempotency_key (a new key re-charges credits), which is the one parameter whose misuse has a monetary cost.

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 ('Start upscaling a video') plus the exact target outputs (1080p, 2k, 4k). No sibling (create_upload, get_task, list_tasks, get_account) could be confused with it.

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 explicit operational routing: on timeout or failure, call list_tasks first and retry only with the SAME idempotency_key. It also names the consequence of violating that rule (a new key charges again), so the agent knows both when to use the tool and how to recover.

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.

Resources