meta_create_campaign
Create a Meta campaign from a conversation. It always arrives paused.
Ask for a new campaign on a Meta advertiser, with its objective and its budget. AdCrunch creates it paused, so it spends nothing until you activate it.
Create a sales campaign called Spring Prospecting on Northwind, with a daily budget of 50 euros.
The agent calls meta_create_campaign, then get_mutation_status, and you see the id of the new paused campaign. Change what runs on Meta walks the whole campaign, from the Page to the activation.
Reference
Create a campaign on a live Meta ad account. It is always created PAUSED and cannot be created active — nothing spends until you separately activate it with meta_set_status. Set exactly one campaign budget: dailyBudget or lifetimeBudget. The campaign budget turns on Advantage campaign budget (CBO). The ad sets of the campaign share that budget. AdCrunch cannot create a campaign with no campaign budget yet. Meta refuses such a campaign. Runs asynchronously: returns a workflowId immediately — call get_mutation_status with it to get the new campaign’s id. Budgets are in whole units of the ad account currency: 10.5 is 10.50, never 1050.
Input
| Argument | Type | Required | Description |
|---|---|---|---|
advertiserId |
string | yes | Advertiser account ID (acc_<id>). Must belong to the active organization — find one with list_advertisers. |
dailyBudget |
number, more than 0 | no | Campaign-level daily budget in whole units of the ad account currency (10.5 is 10.50). Setting either budget turns on Advantage campaign budget. Set exactly one of this or lifetimeBudget. AdCrunch cannot create a campaign with no campaign budget yet. |
lifetimeBudget |
number, more than 0 | no | Campaign-level lifetime budget in whole units of the ad account currency (10.5 is 10.50). Set exactly one of this or dailyBudget. AdCrunch cannot create a campaign with no campaign budget yet. |
name |
string, at least 1 character | yes | Campaign name, as it will appear in Ads Manager. Use something the user would recognize. |
objective |
one of OUTCOME_AWARENESS, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_TRAFFIC, OUTCOME_APP_PROMOTION |
yes | What the campaign optimizes toward. This constrains which optimization goals its ad sets may use, so pick it from what the user actually wants (e.g. OUTCOME_SALES for purchases, OUTCOME_TRAFFIC for site visits). |
specialAdCategories |
array of (one of NONE, EMPLOYMENT, HOUSING, CREDIT, ISSUES_ELECTIONS_POLITICS, ONLINE_GAMBLING_AND_GAMING, FINANCIAL_PRODUCTS_SERVICES) |
no | Regulated categories this campaign falls under, which Meta requires you to declare — employment, housing, credit, politics, gambling, or financial products. Declaring one restricts targeting. Omit (or pass ["NONE"]) when none applies; do not guess, ask the user. Default: []. |
Output
A successful call returns this object in structuredContent.
| Field | Type | Always present | Description |
|---|---|---|---|
workflowId |
string | yes | The id of the change. The change has not reached Meta yet. Give this id to get_mutation_status to find out how the change ended. |
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_foundmissing_write_accessforbiddeninvalid_requestinternal_error
Scope
The token must hold mutation:write. 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.
- Writes. The tool can change data.
- Destructive. The tool can make a change that you cannot undo. A client can ask you to confirm before it calls the tool.
- Not idempotent. A second call with the same arguments can change more.
- Open world. The tool reaches a system outside AdCrunch, such as an ad platform.
Example
The arguments:
{
"advertiserId": "acc_1485443900032333",
"dailyBudget": 50,
"name": "Spring Prospecting",
"objective": "OUTCOME_SALES"
}
The result, in structuredContent:
{
"workflowId": "3f9c2b7e-8a41-4d6e-9b05-c1e7a2d4f860"
}