Skip to main content
Glama

Upscale an image or a video

upscale_media

Make a sharper, larger copy of an image or a video, as a new asset. Use it before export on every picture smaller than the film's frame: a generated 720p clip or a 1K image in a 1080p film is stretched to fill the frame and comes out soft, and the upscaled copy keeps its detail. It keeps the framing and what the picture shows. target film (null) makes it just large enough to fill the film's frame; 2x and 4x multiply each side. A video is upscaled up to 15 seconds a call: pass startSeconds and endSeconds for the part a clip plays, and upscale a longer clip in parts. The new video keeps the source's length, frame rate and sound. Put the new asset on the clip in place of the old one, with the same at and duration: a whole video keeps the clip's offset; a part starts at startSeconds, so play it at offset 0 where that part played. A picture with a transparent background comes back without it: upscale first, then remove_background. A new image does not need it: make it with generate_image at imageSize 2K instead. It answers at once with a Job ID and the media is made in the background: start every generation you need, keep working, then call wait_for_jobs with all their Job IDs to get each Asset ID for patch_film. Uses credits by the pixels it makes: an image filled to 1920x1080 uses 1 credit; a video 19 credits a second at 1920x1080 and 24 frames a second, so a 5-second clip uses 95 credits (30 frames a second: 118).

Input Schema

NameRequiredDescriptionDefault
targetYesfilm (null): just large enough to fill the film's frame, the right size before export. 2x or 4x: each side two or four times, for a deep punch-in or a crop of a small part.
assetIdYesThe image or video asset to upscale: a ready asset smaller than the film's frame. Use the IDs search_assets gives.
projectIdYesThe project this call runs on without changing the open project. null (or leaving it out) uses the open project. wait_for_jobs takes the projectId of the calls that started the jobs.
endSecondsYesSource second of a video where the part to upscale ends. null for both upscales the whole video. null for an image.
startSecondsYesSource second of a video where the part to upscale starts, with endSeconds: the part a clip plays (its offset to offset + duration), up to 15 seconds. null for both upscales the whole video. null for an image.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, the description discloses critical behavior: the call returns a Job ID immediately, media is generated in the background, and wait_for_jobs must be used later to get Asset IDs. It also describes preservation of framing, length, frame rate and sound, the 15-second per-call video limit, transparent-background loss, and credit costs.

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

Conciseness4/5

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

The description is front-loaded with purpose and use case, and most sentences carry actionable detail. It is long and dense, but the length is largely justified by the tool's workflow, cost, timing, and replacement semantics.

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?

For a complex asynchronous media tool with no output schema, the description covers the return shape (Job ID), follow-up step (wait_for_jobs), credit implications, temporal limits, and how to apply the resulting asset. Nothing essential for correct invocation is missing.

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 structured descriptions already define each parameter. The tool description adds useful interpretation for target ('film' vs 2x/4x) and the startSeconds/endSeconds workflow, including how to reattach the upscaled part with the correct offset.

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 states a specific verb and resource: 'Make a sharper, larger copy of an image or a video, as a new asset.' It immediately distinguishes the tool from generation and background removal, and the title reinforces the same scope.

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?

It explicitly says when to use it ('before export on every picture smaller than the film's frame') and names alternatives for adjacent cases: 'A new image does not need it: make it with generate_image at imageSize 2K instead' and 'upscale first, then remove_background.' It also explains how to handle longer videos in parts.

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.