Skip to main content
Glama

update_campaign

Modify an existing Meta ad campaign by updating only the fields you specify, including name, status, budget, bid strategy, spend cap, and start or stop times.

Instructions

Update an existing campaign. Only provided fields will be modified.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "campaign_id": "<campaign_id>"
    },
    "name": "update_campaign"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoNew campaign name
statusNoNew status: ACTIVE, PAUSED, DELETED, ARCHIVED
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_timeNoNew stop time (ISO 8601)
start_timeNoNew start time (ISO 8601)
campaign_idYesCampaign ID to update
bid_strategyNoNew bid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS
daily_budgetNoNew daily budget in currency cents
lifetime_budgetNoNew lifetime budget in currency cents

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.6.1
    • addedInput schema / properties / bid_strategy
      Added value: +{
      +  "description": "New bid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS",
      +  "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

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it partly discharges it: 'Only provided fields will be modified' is a genuinely useful partial-update guarantee not stated in the schema. However, it omits any auth/permission requirements, reversibility, and notably the destructive implication that passing status=DELETED effectively removes the campaign. Useful but incomplete for a zero-annotation mutation tool.

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?

Two short sentences with zero padding; the core action is front-loaded and the partial-update qualifier follows immediately. Both sentences earn their place.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the definition is functional but thin: parameters are well covered by the schema, yet the agent gets no guidance on side effects, required permissions, or conflicting fields (e.g. daily vs. lifetime budget, start vs. stop time). Adequate, not complete.

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% for all nine parameters, so the baseline is 3. The description adds nothing beyond what the schema already documents (field meanings, enum-ish values, the spend_cap reset semantics all live in the schema), so it neither helps nor hurts here.

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 ('Update an existing campaign') that is clearly distinct from create_campaign, delete_campaign, and copy_campaign in the sibling list. The second sentence adds the partial-update scope. It stops short of explicitly contrasting with the patch-style siblings (update_adset, update_ad), but the intent is unambiguous.

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

Usage Guidelines2/5

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

The description implies use-on-existing-campaign but gives no when-to-use framing, no prerequisites (does the campaign need to be ACTIVE/not DELETED?), and no pointer to get_campaign for discovering current values. Nothing tells the agent when this tool is the right choice versus re-creating or copying a campaign.

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