Edit a campaign draft
luca_campaigns_draft_updateSave a campaign draft with optimistic concurrency. Send the draft's current updatedAt to prevent overwriting newer edits; conflicts return 409.
Instructions
Save a campaign draft. Read the campaign with luca_campaigns_get first and send its draft.updatedAt as body.expectedDraftUpdatedAt, so this cannot overwrite an edit made since. Without that field Luca refuses the call with a 428. If the draft has changed since you read it, Luca answers 409: read the campaign again and reapply your change.
Luca operation: PATCH /api/campaigns/{id}/draft Required scopes: campaigns:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"id": "<id>",
"body": "<body>"
},
"name": "luca_campaigns_draft_update"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| body | Yes | ||
| workspaceId | No | Optional Luca workspace id override. | |
| workspaceSlug | No | Optional Luca workspace slug override. | |
| idempotencyKey | No | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |