MMetadata /docs
Docs/Tools/fix_flexible_creative

fix_flexible_creative

Apply a free-text AI edit to a flexible creative's BACKGROUND image and return the edited image URL.

Writes creative

Creates or changes something in the account. Put it behind whatever review your agent uses.

What it does

Apply a free-text AI edit to a flexible creative's BACKGROUND image and return the edited image URL. Instruction-based image-to-image edit (like edit_brand_creative), scoped to the background so the crisp editable text/logo layers are never touched. It edits a flat image the same way, such as a library creative with its text baked in. WARNING: on a flat image the baked-in text is repainted with the rest and can come back altered or unreadable; to change a layered creative's text, change its text layers instead.

USE FOR: "remove the glare", "make the sky warmer", "clean up the left side", "swap the desk for a laptop".

OUTPUT: the URL of a NEW image, at the source image's pixel size (longest edge at most 2000 px) whenever the model paints a shape close to the source's (every channel canvas), stored temporarily outside the creatives library. Nothing is edited in place: the source image, and the library creative and id it came from, stay exactly as they were. The editor swaps the new image in as a flexible creative's background. To keep an edit of a library image, upload the new URL with upload_image_creative, which gives it a NEW library id.

BRAND CHARACTERS: an image made here records the brand characters it shows, and an edit of it keeps them: each one is drawn from its reference sheet and checked, and a result that loses one comes back as an error instead of an image. Pass `characters` only to change them: [] drops them all, a list keeps only those names.

Arguments

ArgumentTypeNotes
image_source string required URL of the background image to edit (PNG/JPG/WebP). Typically the flexible creative's current background.
edit_instruction string required Natural-language description of the fix(es). Can combine several changes in one request.
domain string required Company domain for brand context (e.g. 'metadata.io').
characters array The brand characters the edit must keep. Omit to keep the ones the image shows; [] drops them all, a list keeps only those names.

Request

Request template, not a complete runnable example. Replace placeholders, empty objects, arrays, and zero values with valid account-specific inputs. Read required fields and nested constraints in the full schema. Confirm the account, connected channels, and referenced assets before calling a write tool.

curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
  -H "Authorization: $METADATA_PAT" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"fix_flexible_creative","arguments":{"image_source":"<image_source>","edit_instruction":"<edit_instruction>","domain":"<domain>"}}}'

Response

No recorded response. This tool writes to the account, so it is never executed to build these docs. The request is an illustrative template. Fill required fields and check the current schema before calling it. No response is fabricated.

Other creative tools:

Browse the tool catalog · machine-readable index