← All MCP tools

MCP tool

submit_creative

Submit an existing creative to a channel adapter for approval/trafficking (the adapter must have the "creative" capability — see list_connections). Returns the submission status and any adapter feedback.

Input

Pass fields from this schema as the tool arguments. Runtime ownership, product scope and readiness checks still apply.

Input JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "creativeId": {
      "type": "string",
      "description": "creative id to submit"
    },
    "agentStepId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "pending execute-step id that consumed the exact approved action"
    },
    "expectedActionDigest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "description": "SHA-256 digest returned for the exact approved action"
    },
    "adapterKey": {
      "type": "string",
      "description": "adapter key, e.g. \"stackadapt\", \"vistar\""
    },
    "channel": {
      "description": "override channel (defaults to the creative’s channel)",
      "type": "string",
      "enum": [
        "ctv",
        "audio",
        "tv",
        "cinema",
        "dooh",
        "search",
        "social"
      ]
    }
  },
  "required": [
    "creativeId",
    "agentStepId",
    "expectedActionDigest",
    "adapterKey"
  ]
}

REST mapping and authority

The tool wraps this REST endpoint. The mapping identifies path/query/body transformations and approval or idempotency headers.

Request contract
{
  "method": "POST",
  "path": "/api/v1/creatives/{creativeId}/submit",
  "pathFields": [
    "creativeId"
  ],
  "pathSchema": {
    "type": "object",
    "properties": {
      "creativeId": {
        "type": "string",
        "description": "creative id to submit"
      }
    },
    "additionalProperties": false,
    "required": [
      "creativeId"
    ]
  },
  "pathEncoding": "encodeURIComponent for each path field",
  "governedAction": "creative.submit",
  "headers": {
    "x-chorus-agent-step-id": "agentStepId",
    "x-chorus-agent-action-digest": "expectedActionDigest"
  },
  "bodySchema": {
    "type": "object",
    "properties": {
      "adapterKey": {
        "type": "string",
        "description": "adapter key, e.g. \"stackadapt\", \"vistar\""
      },
      "channel": {
        "description": "override channel (defaults to the creative’s channel)",
        "type": "string",
        "enum": [
          "ctv",
          "audio",
          "tv",
          "cinema",
          "dooh",
          "search",
          "social"
        ]
      }
    },
    "additionalProperties": false,
    "required": [
      "adapterKey"
    ]
  },
  "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.

Output JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "submission": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "submission"
  ],
  "additionalProperties": {}
}

Safety annotations

MCP annotations
{
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": false,
  "openWorldHint": true
}

Annotations help a client present the tool. The API independently enforces authorization and exact action approvals. Error and retry guidance →

submit_creative | AdBuyMCP docs