MCP tool
revise_creative
Rewrite a generated DOOH creative in your own words and re-render it through the same layout, brand kit and legal strip. Supply only the fields you want to change; the rest carry over from the creative you are revising. The result is a NEW versioned creative linked by sourceCreativeId — the original is never mutated, because it may already be trafficking. Copy is clamped to the format limits (a six-sheet cannot show more) and any field that had to be trimmed is named in clampedFields, so shortening it yourself keeps the wording exact. The clearance precheck re-runs on the revised copy, so an edit cannot dodge it. DOOH only — the storyboard channels would need the copy re-timed against scene durations, which is a different operation and is not pretended here.
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": {
"creativeId": {
"type": "string",
"minLength": 1,
"description": "generated DOOH creative to revise, e.g. cr-1a2b3c4d"
},
"headline": {
"description": "replacement headline",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"subline": {
"description": "replacement subline",
"type": "string",
"minLength": 1,
"maxLength": 300
},
"cta": {
"description": "replacement call to action",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"mandatories": {
"description": "replacement legal lines; max 4 of 60 characters, never truncated",
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
}
},
"required": [
"creativeId"
]
}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/{creativeId}/revise",
"pathFields": [
"creativeId"
],
"pathSchema": {
"type": "object",
"properties": {
"creativeId": {
"type": "string",
"minLength": 1,
"description": "generated DOOH creative to revise, e.g. cr-1a2b3c4d"
}
},
"additionalProperties": false,
"required": [
"creativeId"
]
},
"pathEncoding": "encodeURIComponent for each path field",
"governedAction": null,
"headers": {},
"bodySchema": {
"type": "object",
"properties": {
"headline": {
"description": "replacement headline",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"subline": {
"description": "replacement subline",
"type": "string",
"minLength": 1,
"maxLength": 300
},
"cta": {
"description": "replacement call to action",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"mandatories": {
"description": "replacement legal lines; max 4 of 60 characters, never truncated",
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
}
},
"additionalProperties": false
},
"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": {
"creativeId": {
"type": "string"
},
"creative": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"creativeId",
"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 →