Skip to main content
Glama

Upscale media

upscale_media
Destructive

Upscale images and videos to higher resolutions with AI. Use a URL for any media or a task_id for Veo/Grok generations.

Instructions

Upscale an image or a video. Pass exactly one source: image_url (Topaz image upscale — any image; multiplier via upscale_factor, preset/face_enhancement via provider_options), video_url (Topaz video upscale — any video; target size via resolution; preset/target_fps/frame_interpolation via provider_options), or task_id with model 'veo-upscale' / 'grok-upscale' (model-internal upscalers that ONLY work on their own model's completed generations). For any media not generated by Veo/Grok, use the URL inputs — Topaz works on everything.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
waitNoDefault true: wait for the job and return the finished result. Set false to get the task_id back immediately and poll with get_task — use for long jobs (high-quality video, full songs) or when the connection might time out.
modelNoOnly with task_id: 'veo-upscale' or 'grok-upscale' (full ids accepted too). Omit for URL inputs (Topaz is used). 'grok-upscale' only works on a task_id from xai/grok-imagine-video — NOT from xai/grok-imagine-1.5-video. For anything else, pass the finished video's URL and let Topaz do it.
task_idNotask_id of a completed generation, for the model-internal upscalers. Requires model 'veo-upscale' (Veo generations) or 'grok-upscale' (Grok Imagine generations).
image_urlNoImage to upscale (public https URL) — routed to Topaz image upscale, works on any image.
video_urlNoVideo to upscale (public https URL) — routed to Topaz video upscale, works on any video.
resolutionNoVIDEO target size, e.g. '1080p' or '4k' (defaults to '4k' when omitted). Allowed values differ between Topaz video and veo-upscale. For IMAGE upscaling use upscale_factor instead.
callback_urlNoOptional webhook URL. When set, the tool returns immediately with the task_id and UnificAlly POSTs the result to this URL when the task finishes. Webhook body: { task_id, status: 'completed'|'failed', data: { video_url | image_url | audio_url | ... }, error_message? } — note the media arrives under 'data', not 'output'. Use for long jobs instead of waiting.
confirm_costNoOnly relevant if the operator enabled a spend guard. When a call exceeds the configured confirm threshold it returns a quote; retry with confirm_cost: true to proceed. Safe to ignore otherwise.
upscale_factorNoIMAGE upscale factor for image_url, e.g. '2x'. This is a multiplier, not an output size — distinct from generate_image's resolution.
provider_optionsNoEscape hatch for model-specific fields not exposed as named parameters (e.g. Kling multi_shots, Flux steps). Merged into the API 'input' payload. Rejected: fields the tool already manages (prompt, media URLs, task_id, ...) and reserved routing/billing/auth keys (model, callback_url, dry_run, api_key, authorization) — switch models with the 'model' parameter, not here. See https://docs.unifically.com for per-model fields.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare destructive/openWorld/non-idempotent, and the description adds routing behavior plus the model-internal upscaler constraint (task_id only works on its own model's completed generations). It does not itself mention cost gating or the wait/webhook flow, but those are covered by schema descriptions, so the tool-level text adds real context without contradicting the hints.

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?

Front-loads the core action and the key routing rule, then uses parentheticals efficiently to separate image, video, and task_id behavior. Dense but every clause carries routing or constraint information; only minor style inflation from the repeated 'Topaz' explanations.

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 10-param, all-optional tool with no output schema, the description covers routing, wait behavior, and model restrictions, and annotations carry the safety profile. It does not summarize what a wait=true call returns, though that is a minor gap given the rich schema text.

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 baseline is 3; the description earns above baseline by stating the mutual-exclusivity constraint not encoded in the schema (exactly one of image_url / video_url / task_id) and by clarifying that upscale_factor is a multiplier while resolution is a video target size. Cross-parameter semantics are made explicit.

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+resource ('Upscale an image or a video') and then enumerates the three mutually exclusive input paths with their routing targets. An agent can immediately distinguish this from generate_image / generate_video / edit_video siblings.

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?

Explicitly states 'Pass exactly one source' and gives the selection rule for each path, including the exclusion 'For any media not generated by Veo/Grok, use the URL inputs — Topaz works on everything.' This is a genuine when-to-use/when-not decision matrix.

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