MCP tool
upload_creative
Upload the buyer’s existing creative bytes to a permitted campaign channel. Provide the original file as base64, its MIME type and supplier format; the API verifies and stores the asset and returns the created creative. File size is at most 20 MiB decoded. Uploading is separate from provider approval or booking: inspect the resulting precheck/readiness and attach the creative before requesting supplier booking. Inline HTTP uploads must fit the configured MCP body limit.
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": {
"campaignId": {
"type": "string",
"minLength": 1
},
"channel": {
"type": "string",
"enum": [
"ctv",
"audio",
"tv",
"cinema",
"dooh",
"search",
"social"
]
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"format": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"copyText": {
"type": "string",
"maxLength": 20000
},
"audioDelivery": {
"type": "object",
"properties": {
"tagline": {
"type": "string",
"minLength": 2,
"maxLength": 40
},
"destinationUrl": {
"type": "string",
"format": "uri"
},
"callToAction": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"language": {
"type": "string",
"minLength": 2,
"maxLength": 16
}
},
"required": [
"tagline",
"destinationUrl",
"callToAction",
"language"
],
"additionalProperties": false
},
"fileName": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"mediaType": {
"type": "string",
"enum": [
"image/jpeg",
"image/png",
"video/mp4",
"video/webm",
"audio/mpeg",
"audio/wav"
]
},
"base64": {
"type": "string",
"minLength": 4,
"maxLength": 27962028,
"pattern": "^[A-Za-z0-9+/]*={0,2}$"
}
},
"required": [
"campaignId",
"channel",
"name",
"format",
"fileName",
"mediaType",
"base64"
],
"additionalProperties": false
}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/upload",
"pathFields": [],
"pathSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"pathEncoding": "encodeURIComponent for each path field",
"governedAction": null,
"headers": {},
"bodySchema": {
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"minLength": 1
},
"channel": {
"type": "string",
"enum": [
"ctv",
"audio",
"tv",
"cinema",
"dooh",
"search",
"social"
]
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"format": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"copyText": {
"type": "string",
"maxLength": 20000
},
"audioDelivery": {
"type": "object",
"properties": {
"tagline": {
"type": "string",
"minLength": 2,
"maxLength": 40
},
"destinationUrl": {
"type": "string",
"format": "uri"
},
"callToAction": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"language": {
"type": "string",
"minLength": 2,
"maxLength": 16
}
},
"required": [
"tagline",
"destinationUrl",
"callToAction",
"language"
],
"additionalProperties": false
},
"fileName": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"mediaType": {
"type": "string",
"enum": [
"image/jpeg",
"image/png",
"video/mp4",
"video/webm",
"audio/mpeg",
"audio/wav"
]
},
"base64": {
"type": "string",
"minLength": 4,
"maxLength": 27962028,
"pattern": "^[A-Za-z0-9+/]*={0,2}$"
}
},
"additionalProperties": false,
"required": [
"campaignId",
"channel",
"name",
"format",
"fileName",
"mediaType",
"base64"
]
},
"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": false
}Annotations help a client present the tool. The API independently enforces authorization and exact action approvals. Error and retry guidance →