Skip to main content
Glama

create_campaign

Create a Meta ad campaign with a required name and objective; campaigns start paused by default, and budgets can be set at campaign or ad set level.

Instructions

Create a new ad campaign. Defaults to PAUSED status. Requires name and objective. Budget can be set at campaign or ad set level.

Input Schema

NameRequiredDescriptionDefault
nameYesCampaign name
statusNoCampaign status (default PAUSED)PAUSED
objectiveYesCampaign objective
spend_capNoLifetime spend cap for the campaign, in account currency cents. Once set it cannot be removed, only raised or reset — pass '0' to reset/clear it.
stop_timeNoCampaign stop time (ISO 8601 format)
account_idNoAd account ID to create the campaign in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
start_timeNoCampaign start time (ISO 8601 format)
bid_strategyNoBid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS. Meta defaults new campaigns to LOWEST_COST_WITH_BID_CAP, which requires a bid_amount on every ad set — pass LOWEST_COST_WITHOUT_CAP to avoid that.
daily_budgetNoDaily budget in account currency cents (e.g. '5000' = $50.00)
lifetime_budgetNoLifetime budget in account currency cents
special_ad_categoriesNoJSON array of special ad categories: HOUSING, EMPLOYMENT, FINANCIAL_PRODUCTS_SERVICES, ISSUES_ELECTIONS_POLITICS, NONE. This field is required by Meta on every campaign — pass '[]' or '["NONE"]' if none apply. CREDIT was renamed to FINANCIAL_PRODUCTS_SERVICES; the old name is no longer accepted.
special_ad_category_countryNoJSON array of ISO 3166-1 alpha-2 country codes, e.g. '["US"]'. Required for ISSUES_ELECTIONS_POLITICS (which also requires authorization to run ads in those countries). For HOUSING, EMPLOYMENT, and FINANCIAL_PRODUCTS_SERVICES it is optional and defaults to the ad account's listed tax country if omitted.
is_adset_budget_sharing_enabledNoWhether ad sets under this campaign can share budget with each other. Required on some newer ad accounts — omitting it can cause campaign creation to fail with 'Must specify True or False in is_adset_budget_sharing_enabled'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv1.6.1
    • addedInput schema / properties / account_id
      Added value: +{
      +  "description": "Ad account ID to create the campaign in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
      +  "type": "string"
      +}
    • addedInput schema / properties / bid_strategy
      Added value: +{
      +  "description": "Bid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS. Meta defaults new campaigns to LOWEST_COST_WITH_BID_CAP, which requires a bid_amount on every ad set — pass LOWEST_COST_WITHOUT_CAP to avoid that.",
      +  "type": "string"
      +}
    • addedInput schema / properties / is_adset_budget_sharing_enabled
      Added value: +{
      +  "description": "Whether ad sets under this campaign can share budget with each other. Required on some newer ad accounts — omitting it can cause campaign creation to fail with 'Must specify True or False in is_adset_budget_sharing_enabled'.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / special_ad_categories / description
      Previous value: -"JSON array of special ad categories: CREDIT, EMPLOYMENT, HOUSING, ISSUES_ELECTIONS_POLITICS"New value: +"JSON array of special ad categories: HOUSING, EMPLOYMENT, FINANCIAL_PRODUCTS_SERVICES, ISSUES_ELECTIONS_POLITICS, NONE. This field is required by Meta on every campaign — pass '[]' or '[\"NONE\"]' if none apply. CREDIT was renamed to FINANCIAL_PRODUCTS_SERVICES; the old name is no longer accepted."
    • addedInput schema / properties / special_ad_category_country
      Added value: +{
      +  "description": "JSON array of ISO 3166-1 alpha-2 country codes, e.g. '[\"US\"]'. Required for ISSUES_ELECTIONS_POLITICS (which also requires authorization to run ads in those countries). For HOUSING, EMPLOYMENT, and FINANCIAL_PRODUCTS_SERVICES it is optional and defaults to the ad account's listed tax country if omitted.",
      +  "type": "string"
      +}
    • addedInput schema / properties / spend_cap
      Added value: +{
      +  "description": "Lifetime spend cap for the campaign, in account currency cents. Once set it cannot be removed, only raised or reset — pass '0' to reset/clear it.",
      +  "type": "string"
      +}
  2. First observedv1.2.0

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the PAUSED default and that budgets can live at either campaign or ad set level, but it says nothing about required permissions, side effects, failure modes, or reversibility of a mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the operation and default status, with zero filler. Every sentence carries a distinct piece of information (what, default state, required fields, budget placement).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter mutation tool with no output schema, the description covers the essentials while the very detailed schema carries the tricky edge cases (Meta-required special_ad_categories, is_adset_budget_sharing_enabled failures). An agent has enough to call it correctly, though the description itself does not surface those gotchas.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the rich per-field documentation (spend_cap immutability, special_ad_categories requirement, bid_strategy pitfalls) already lives in the schema. The description only reiterates name/objective as required and the budget-level choice, adding little beyond that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new ad campaign'), so the operation is unambiguous. It does not, however, differentiate itself from the several sibling creation tools (create_adset, create_ad, copy_campaign), leaving the agent to infer the hierarchy from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is only implied by the verb 'Create'. The note that 'Budget can be set at campaign or ad set level' hints at a design decision, but there is no explicit guidance on when to create a campaign vs. an ad set, or when copy_campaign would be preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools