campaign_plan_get
Fetch one campaign plan with its line items in full, the money figures, and whatever each line has already created.
Fetches a single Campaign Plan and everything on it.
Input
| Field | Type | Required | Description |
|---|---|---|---|
campaign_plan_name |
string |
yes | The plan slug. |
Output
The plan, its three money figures, and its Line Items in full — there is no line_item_get, because there would be nothing left to fetch.
Each line carries four facts that are derived rather than stored:
| Field | What it tells you |
|---|---|
provider |
Which provider sells this channel, or null when none we integrate with does. |
executable |
Whether it could be executed at all today. Only meta can. |
effectiveStartDate / effectiveEndDate |
The window that actually applies, after inheriting the plan’s. |
unit |
total or daily — how to read budget. |
executions lists what the line has already created: one row per provider object, each with its native id.
Money is in whole units of currency: 100000 is €100,000.
Example
campaign_plan_get({ campaign_plan_name: 'q4-acquisition' });
// → { campaignPlan: {
// currency: 'EUR', totalBudget: 100000, status: 'approved',
// allocation: { allocated: 60000, unallocated: 40000, unit: 'total', comparable: true },
// lineItems: [{ id: 'lni_…', channel: 'meta', unit: 'total', executions: [] }],
// revision: 4,
// } }
Requires the campaign_plan:read scope.
Reference
Fetch one Campaign Plan by its slug, with its Line Items in full and whatever each has already created. Every line carries four derived facts: which provider sells its channel, whether we can execute it at all today, the window it resolves to after inheriting the plan’s, and whether its amount reads as a total or a daily rate. The plan carries three money figures — the envelope (what you have), the allocated sum (what you have placed) and the remainder. When allocation.comparable is false the lines do not share a unit, so there is no total to state: say “not comparable” rather than adding them. Echo revision back as base_revision when writing. A Campaign Plan is AdCrunch’s own planning document — it is not a campaign on Meta or Google. For those, use list_entities and get_entity.
Input
| Argument | Type | Required | Description |
|---|---|---|---|
campaign_plan_name |
string | yes | The Campaign Plan slug — its stable per-organization handle. |
Failure codes
A failed call has isError set, and structuredContent.error holds one of these codes. Errors describes the shape of a failed call.
not_foundforbiddeninvalid_requestinternal_error
Scope
The token must hold campaign_plan:read. Auth & scopes lists each scope.
Annotations
A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.
- Read-only. The tool changes nothing.
- Closed world. The tool reads and writes the data of AdCrunch only.