Campaign Staging Draft
Create a pre-deploy campaign draft, preview its GAM ExecutionPlan, then deploy with a confirmation token.
REST endpoints
| Method | Path | Description | Credits |
|---|---|---|---|
| POST | /api/jobs | Create a campaign job as a staging draft | 0 |
| GET | /api/jobs/{id} | Read the staging draft state | 0 |
| POST | /api/jobs/{id}/deployment-plan | Preview the deployment plan | 0 |
| POST | /api/jobs/{id}/deploy | Deploy with a confirmation token | 5 |
| GET | /api/jobs/{id}/forecast | Read the available forecast | 0 |
MCP tools
| Tool | Description | Credits |
|---|---|---|
| campaign(action='create_draft') | Create a campaign staging draft with a 7-day TTL | 0 |
| campaign(action='deploy', dryRun=true) | Deploy preview: mutations, cost, risks and token | 0 |
| campaign(action='deploy', confirmationToken=...) | Deploy the confirmed plan to GAM | 5 |
| campaign(action='read') | Re-read the live projection or the draft depending on the state | 0 |
Examples
Create then preview a draft
{
"tool": "campaign",
"arguments": { "action": "create_draft", "name": "Q3 Acme Corp" }
}
// -> { "jobId": "job_8b2a", "status": "draft", "expireAt": "2026-06-12T00:00:00Z" }
{
"tool": "campaign",
"arguments": { "action": "deploy", "jobId": "job_8b2a", "dryRun": true }
}
// -> { "executionPlan": { "mutations": [...], "estimatedCost": 5, "confirmationToken": "tok_9c3f" } }Notes
- • The staging draft separates the campaign intent from the GAM mutation.
- • The confirmation token is tied to the plan and expires quickly.
- • Without a valid token, the confirmed deploy is refused.
