Skip to main content
Glama

Retouch one object in an image (masked edit)

vivid_retouch

Edit one object or area of an image while every other pixel stays byte-identical. Target it by plain-text description, region box, or mask; returns a new asset id and download URL.

Instructions

Edit ONLY one object/area of an image and leave every other pixel untouched — e.g. "the ring on the left hand" → "make it a plain yellow gold band". Say WHERE with target (plain text: the tool locates it with a two-pass labelled-grid vision step, ~40–60 s), or region {x,y,w,h} as fractions of the frame, or a mask image (white = edit). A square crop around the target goes to the edit model at full resolution and the original bytes are composited back outside a feathered region, so the rest of the photo is byte-identical. Models: nano-banana (default, 6 credits), seedream (4), grok (3), z-image (2, true mask inpaint — needs region or mask). Returns the new asset id + download URL; chain with vivid_compare_product to verify against the SKU and feed its fixPrompt back here.

Input Schema

NameRequiredDescriptionDefault
maskNoMask image (white = edit, black = keep), any size: local path, URL or asset id.
modelNonano-banana
promptYesWhat the target should become. Be concrete about material, colour, shape; the tool adds the "change nothing else" constraints.
regionNoExplicit bounding box, fractions of width/height (top-left origin). Skips the locate step.
sourceYesAsset id (32 hex), VIVID temp URL, other URL or local file path of the image to edit.
targetNoPlain-text description of the object/area to edit, e.g. "the ring on the ring finger".
filenameNoName of the new asset in the gallery.
outputDirNoAlso download the result into this local directory.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.36.0

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnly=false, destructive=false, openWorld=true, idempotent=false, so the mutation profile is partly covered. The description still adds genuinely valuable behavior: the ~40–60 s two-pass locate cost for `target`, per-model credit costs, the crop-and-composite pipeline that keeps unchanged pixels byte-identical, and the return value (new asset id + URL). That is meaningful disclosure beyond the annotations.

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-loaded with the core invariant (edit only one object, everything else untouched) and packed with useful specifics rather than filler. It is a single dense paragraph, though — the alternatives, cost table, and return info would be easier to scan as separate sentences.

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?

With no output schema, the description correctly supplies the return shape (new asset id + download URL) and the sensible follow-up chain via vivid_compare_product. For an 8-parameter, nested-schema, 88%-covered tool this covers everything an agent needs to call it correctly.

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 88%, so the baseline is 3, and the description earns above that by adding economics and routing semantics the schema lacks entirely: model credit costs (6/4/3/2) and the fact that z-image requires region or mask, plus the latency implication of using `target` rather than `region`. It does not describe filename/outputDir, which is a minor omission.

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 (edit one object/area of an image) plus the defining constraint (every other pixel untouched), with a concrete before/after example. That scope makes it clearly distinct from siblings like vivid_generate_image, which regenerate whole frames.

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?

Explains the three ways to specify location (target, region, mask) and which model needs region/mask, and routes the agent to vivid_compare_product afterwards with fixPrompt fed back. It never states the negative case explicitly — e.g. that a full-frame restyle should go to vivid_generate_image instead — which keeps it off a 5.

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