generate_flexible_brand_creative
Generate an EDITABLE, layered brand creative: a clean AI background scene (no baked text) plus AI-placed, editable text/CTA/logo layers.
Writes creative
Creates or changes something in the account. Put it behind whatever review your agent uses.
What it does
Generate an EDITABLE, layered brand creative: a clean AI background scene (no baked text) plus AI-placed, editable text/CTA/logo layers. Returns a structured layout document (JSON), NOT a flat image — the UI renders it in an editor the user can rearrange before saving. USE FOR: - The DEFAULT for a standalone creative the user will review, refine, or use — "make me a creative", "design an ad", "give me options", "a creative I can tweak/edit". - Any request where the user should be able to move/retype the headline, restyle the CTA, swap the logo, add layers, or regenerate the background before finalizing. DIFFERENT FROM generate_brand_creative: PREFER THIS for standalone creative requests. generate_brand_creative bakes headline + CTA into the pixels and returns one finished PNG; use that flat tool only when building an ad / feeding a campaign inline (the flat image flows straight into an ad, with no human edit-and-save step) or when a finished flat image is explicitly requested. COPY DISCIPLINE: fewer layers = a cleaner layout the user can actually edit. Default to headline + cta (add subheadline only when it genuinely earns its place); pass body / disclaimer ONLY when the user explicitly asked for that copy. RETURNS: a layered document — canvas dimensions, background image URL, brand colors/logo, and an ordered list of layers (headline, subheadline, body, cta, disclaimer, logo) with normalized positions and styling.
Arguments
| Argument | Type | Notes | |
|---|---|---|---|
domain |
string | required | Company domain for brand DNA (e.g. 'metadata.io'). No protocol. |
instructions |
string | required | Natural-language direction for the background scene and overall creative (e.g. 'clean B2B scene for an AI analytics launch'). |
platform |
string | Target platform (sets the default aspect ratio). Default: 'linkedin'. one of: linkedin, facebook, instagram, reddit, display, general |
|
aspect_ratio |
string | Canvas shape, overriding the one 'platform' implies. Pass this whenever the user names a size or shape: '1:1' for square (e.g. 1080x1080), '16:9' for wide/landscape, '9:16' for a full-height story, '4:5' for portrait. Omit to keep the platform's default shape. one of: 1:1, 16:9, 9:16, 4:5 |
|
headline |
string | Headline copy to place as an editable layer. | |
subheadline |
string | Optional subheadline copy. | |
body |
string | Optional supporting body copy. Pass ONLY when the user explicitly asked for body copy — extra layers crowd the layout. | |
cta |
string | Optional call-to-action button text (e.g. 'Learn more'). | |
disclaimer |
string | Optional fine-print/disclaimer copy. Pass ONLY when the user explicitly asked for a disclaimer. | |
include_logo |
boolean | Add a brand logo layer (resolved from the brand kit). Default: true. |
Request
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":"generate_flexible_brand_creative","arguments":{"domain":"<domain>","instructions":"<instructions>"}}}'
Response
No recorded response. This tool writes to the account, so it is never executed to build these docs.
The request above is still the exact shape to send. Nothing on this page is invented.
Related
Other creative tools: