MCP tool
generate_creative
Generate channel-appropriate ad creative (copy + renditions) from a brief, grounded in a persona passed directly or inherited from campaignId: e.g. a 30s audio script, DOOH copy, CTV storyboard, responsive search assets, or portable paid-social copy and asset direction. Returns the stored creative, its per-channel renditions, and an automatic clearance precheck. Then use submit_creative to send it to an adapter.
Input
Pass fields from this schema as the tool arguments. Runtime ownership, product scope and readiness checks still apply.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"personaId": {
"description": "persona the creative should speak to; optional when campaignId resolves one",
"type": "string"
},
"channel": {
"type": "string",
"enum": [
"ctv",
"audio",
"tv",
"cinema",
"dooh",
"search",
"social"
],
"description": "channel to generate for"
},
"product": {
"type": "string",
"minLength": 1,
"description": "the product or brand being advertised"
},
"proposition": {
"type": "string",
"minLength": 3,
"description": "the single message the ad should land, e.g. \"Ship code twice as fast\""
},
"tone": {
"default": "bold",
"description": "creative tone",
"type": "string",
"enum": [
"bold",
"premium",
"friendly",
"urgent",
"witty"
]
},
"mandatories": {
"description": "copy elements that must appear verbatim (legal lines, brand taglines); max 4 lines of 60 characters",
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"campaignId": {
"description": "campaign to attach the creative to",
"type": "string"
}
},
"required": [
"channel",
"product",
"proposition"
]
}REST mapping and authority
The tool wraps this REST endpoint. The mapping identifies path/query/body transformations and approval or idempotency headers.
{
"method": "POST",
"path": "/api/v1/creatives/generate",
"pathFields": [],
"pathSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"pathEncoding": "encodeURIComponent for each path field",
"governedAction": null,
"headers": {},
"bodySchema": {
"type": "object",
"properties": {
"personaId": {
"description": "persona the creative should speak to; optional when campaignId resolves one",
"type": "string"
},
"channel": {
"type": "string",
"enum": [
"ctv",
"audio",
"tv",
"cinema",
"dooh",
"search",
"social"
],
"description": "channel to generate for"
},
"campaignId": {
"description": "campaign to attach the creative to",
"type": "string"
},
"brief": {
"type": "object",
"properties": {
"product": {
"type": "string",
"minLength": 1,
"description": "the product or brand being advertised"
},
"proposition": {
"type": "string",
"minLength": 3,
"description": "the single message the ad should land, e.g. \"Ship code twice as fast\""
},
"tone": {
"default": "bold",
"description": "creative tone",
"type": "string",
"enum": [
"bold",
"premium",
"friendly",
"urgent",
"witty"
]
},
"mandatories": {
"description": "copy elements that must appear verbatim (legal lines, brand taglines); max 4 lines of 60 characters",
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
}
},
"additionalProperties": false,
"required": [
"product",
"proposition",
"tone"
]
}
},
"additionalProperties": false,
"required": [
"channel",
"brief"
]
},
"bodyMapping": {
"passthroughOtherFields": true,
"brief": {
"product": "product",
"proposition": "proposition",
"tone": "tone",
"mandatories": "mandatories"
}
},
"responseMapping": "REST JSON is returned as MCP structuredContent and a compatibility text block; privacy-sensitive tools validate their output schema."
}Output
This is the registered MCP output envelope. Nested fields are only modeled where the schema explicitly defines them.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"creative": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"creative"
],
"additionalProperties": {}
}Safety annotations
{
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true
}Annotations help a client present the tool. The API independently enforces authorization and exact action approvals. Error and retry guidance →