Overview
With campaign_id: where that campaign stands (its stage, as stage_id draft, sent, plan_ready, approved, paid, running, complete or cancelled, the current plan with its lines, dates, prices and each line's post stage, and the order once signed). Without it: every campaign of yours with its stage.
- Server
https://app.distribution.tech/api/mcp- Scope
campaigns:read- Changes data
- No, a read
- REST endpoint
- GET /campaigns, GET /campaigns/{id}
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
campaign_id | string (uuid) | No | One campaign. Leave out to list them all. |
include_archived | boolean | No | The list leaves archived campaigns out unless this is true. |
Call with curl
The server speaks streamable HTTP, so one JSON-RPC tools/call request runs the tool. Set DISTRIBUTION_API_KEY to a key from Developers with the campaigns:read scope; the arguments shown are the required ones.
curl -X POST "https://app.distribution.tech/api/mcp" \
-H "Authorization: Bearer $DISTRIBUTION_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "campaign_status",
"arguments": {}
}
}'Result
The answer's structuredContent follows the tool's output schema (the same JSON is in its text content). It has these fields:
| Name | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | |
campaign | string | Yes | |
created_at | string (date-time) | Yes | |
refunded_at | string (date-time) or null | Yes | When the order was refunded; null unless it was. |
archived_at | string (date-time) or null | Yes | When the brand archived the campaign; null for a live one. An archived campaign's stage reads Archived, and renaming it or setting its creator guidelines is refused (409 conflict, reason archived). |
intent_status | one of "draft", "ready", null | Yes | |
plan_status | one of "awaiting_approval", "approved", null | Yes | |
open_change | boolean | Yes | |
stage | one of "Draft", "Sent", "Plan ready", "Approved", "Paid", "Running", "Complete", "Cancelled", "Archived" | Yes | |
stage_id | one of "draft", "sent", "plan_ready", "approved", "paid", "running", "complete", "cancelled" | Yes | draft (not sent), sent (no plan yet), plan_ready (a plan waits for approval), approved (signed, not paid), paid (the brand's payment cleared, no post started), running (a post is scheduled, live or delayed), complete (every post has its proof), cancelled (the order was cancelled or refunded). |
plan | null or object | Yes | |
order | null or object | Yes | |
creator_guidelines | null or object | Yes |
{
"id": "<uuid>",
"campaign": "<string>",
"created_at": "<date-time>",
"refunded_at": "<date-time>",
"archived_at": "<date-time>",
"intent_status": "draft",
"plan_status": "awaiting_approval",
"open_change": false,
"stage": "Draft",
"stage_id": "draft",
"plan": {
"id": "<uuid>",
"version": 0,
"status": "awaiting_approval",
"launch_window_start": "<date>",
"launch_window_end": "<date>",
"currency": "<string>",
"sent_at": "<date-time>",
"approved_at": "<date-time>",
"total_cents": 0,
"lines": [
{
"id": "<uuid>",
"channel": "<string>",
"channel_label": "<string>",
"slot": "<string>",
"scheduled_date": "<date>",
"price_cents": 0,
"status": "planned",
"stage_id": "planned",
"stage": "Planned",
"proposal": {
"state": "sending",
"creator_handle": "<string>",
"replaced_handle": "<string>",
"updated_at": "<date-time>"
}
}
],
"lines_by_status": {},
"lines_by_stage": {
"planned": 0,
"offered": 0,
"creator_confirmed": 0,
"scheduled": 0,
"live": 0,
"proof_attached": 0,
"cancelled": 0
}
},
"order": {
"payment_state": "<string>",
"total_cents": 0,
"currency": "<string>",
"signed_at": "<date-time>",
"paid_at": "<date-time>"
},
"creator_guidelines": {
"pitch": "<string>",
"key_messages": [
"<string>"
],
"references": [
"<uri>"
],
"voice": "<string>",
"dos": [
"<string>"
],
"donts": [
"<string>"
]
}
}Other tools
inventory: Network coverageresolve_audience: Resolve an audienceevidence: Proof of deliveryresults: Resultsbrain_get: Company contextcreators_search: Find creatorscreator_get: One creatorcreator_ask_price: Ask for a priceplan_quote: Quote a plancreate_campaign: Start a campaignplan_add_creator: Add a creatorplan_remove_creator: Remove a creatorplan_move_dates: Move a plan's datesplan_swap_creator: Swap a creatorset_creator_guidelines: Set the creator guidelinesapprove_plan: Approve and get the pay linkarchive_campaign: Archive a campaignrename_campaign: Rename a campaigndelete_campaign: Delete a draft campaignfeedback_send: Send feedbackfeedback_list: Your feedback
Get access
Keys are created in Developers once your brand is approved. Connect an agent to ask for access, then read the agent guide for the full flow.