← All MCP tools

MCP tool

request_campaign_booking

Request supplier booking for exactly the preview the buyer approved. Show the media split, maximum commitment, creative and flight before asking for approval. Use the campaign.booking.request governed action and exact execute-step authority. This records a durable booking request with a 12-hour supplier confirmation window; it does not fabricate supplier acceptance. Reuse the idempotency key after a timeout and poll get_campaign_bookings. Confirmation is a human-only Operator action, and an expired response window never authorizes automatic retry or acceptance.

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": {
    "campaignId": {
      "type": "string",
      "minLength": 1
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128
    },
    "expectedSnapshotDigest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "approvalConfirmed": {
      "type": "boolean",
      "const": true,
      "description": "true only after the buyer explicitly approved this exact preview"
    },
    "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"
    }
  },
  "required": [
    "campaignId",
    "idempotencyKey",
    "expectedSnapshotDigest",
    "approvalConfirmed",
    "agentStepId",
    "expectedActionDigest"
  ],
  "additionalProperties": false
}

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/campaigns/{campaignId}/bookings",
  "pathFields": [
    "campaignId"
  ],
  "pathSchema": {
    "type": "object",
    "properties": {
      "campaignId": {
        "type": "string",
        "minLength": 1
      }
    },
    "additionalProperties": false,
    "required": [
      "campaignId"
    ]
  },
  "pathEncoding": "encodeURIComponent for each path field",
  "governedAction": "campaign.booking.request",
  "headers": {
    "x-chorus-agent-step-id": "agentStepId",
    "x-chorus-agent-action-digest": "expectedActionDigest"
  },
  "bodySchema": {
    "type": "object",
    "properties": {
      "idempotencyKey": {
        "type": "string",
        "minLength": 8,
        "maxLength": 128
      },
      "expectedSnapshotDigest": {
        "type": "string",
        "pattern": "^[a-f0-9]{64}$"
      },
      "approvalConfirmed": {
        "type": "boolean",
        "const": true,
        "description": "true only after the buyer explicitly approved this exact preview"
      }
    },
    "additionalProperties": false,
    "required": [
      "idempotencyKey",
      "expectedSnapshotDigest",
      "approvalConfirmed"
    ]
  },
  "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": {
    "booking": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "booking"
  ],
  "additionalProperties": {}
}

Safety annotations

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

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

request_campaign_booking | AdBuyMCP docs