MCP tool
request_booking_amendment
Record a local request to reduce an existing confirmed supplier budget cap, shorten its flight or retain a subset of already quoted inventory. No supplier write, payment or release occurs. Reuse the idempotency key after timeout. Staff must quote it, the buyer must approve the exact digest in the web UI, and staff must verify the supplier outcome. Expanded budgets, flights, inventory and replacement creative need a new booking.
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
},
"bookingLineId": {
"type": "string",
"minLength": 1
},
"expectedLineVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"idempotencyKey": {
"type": "string",
"minLength": 8,
"maxLength": 128
},
"changes": {
"type": "object",
"properties": {
"budgetCapMinor": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"inventoryIds": {
"minItems": 1,
"maxItems": 500,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"note": {
"type": "string",
"minLength": 10,
"maxLength": 20000
}
},
"required": [
"note"
],
"additionalProperties": false
}
},
"required": [
"campaignId",
"bookingLineId",
"expectedLineVersion",
"idempotencyKey",
"changes"
],
"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/campaigns/{campaignId}/booking-amendments",
"pathFields": [
"campaignId"
],
"pathSchema": {
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false,
"required": [
"campaignId"
]
},
"pathEncoding": "encodeURIComponent for each path field",
"governedAction": null,
"headers": {},
"bodySchema": {
"type": "object",
"properties": {
"bookingLineId": {
"type": "string",
"minLength": 1
},
"expectedLineVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"idempotencyKey": {
"type": "string",
"minLength": 8,
"maxLength": 128
},
"changes": {
"type": "object",
"properties": {
"budgetCapMinor": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"inventoryIds": {
"minItems": 1,
"maxItems": 500,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"note": {
"type": "string",
"minLength": 10,
"maxLength": 20000
}
},
"required": [
"note"
],
"additionalProperties": false
}
},
"additionalProperties": false,
"required": [
"bookingLineId",
"expectedLineVersion",
"idempotencyKey",
"changes"
]
},
"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": {
"amendment": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"replayed": {
"type": "boolean"
}
},
"required": [
"amendment",
"replayed"
],
"additionalProperties": {}
}Safety annotations
{
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
}Annotations help a client present the tool. The API independently enforces authorization and exact action approvals. Error and retry guidance →