Skip to main content
Glama

Draft campaign changes

update_campaign

Draft an update to an existing campaign — returns a PREVIEW, does NOT apply.

Only the parameters passed are changed; omitted ones stay as they are, and at least one change is required. Replacing geo targets keeps the campaign's negative geo exclusions (the preview lists them). A budget change shows the current amount; when the budget is shared with other campaigns, the preview names them and needs a double confirmation, because the new amount covers all of them. A bidding change on a campaign in a portfolio bid strategy takes it out of the portfolio, also with a double confirmation.

Returns a preview with a plan_id plus any warnings; nothing changes until confirm_and_apply applies it.

Google Ads API: https://developers.google.com/google-ads/api/docs/start

Input Schema

NameRequiredDescriptionDefault
max_cpcNoMaximize Clicks CPC cap in the account's currency when bidding_strategy is TARGET_SPEND, or when the existing campaign already uses TARGET_SPEND. Increases are limited by the config's max_bid_increase_pct. 0 leaves it unchanged.
target_cpaNoTarget CPA in the account's currency; required if bidding_strategy is TARGET_CPA. 0 leaves it unchanged.
campaign_idYesThe numeric ID of the campaign to update (required).
customer_idNoGoogle Ads customer ID (digits, e.g. "1234567890"). Empty uses the configured default account.
target_roasNoTarget ROAS as a ratio (e.g. 4.0 = 400%); required if bidding_strategy is TARGET_ROAS. 0 leaves it unchanged.
daily_budgetNoNew daily budget in the account's currency (not micros), at most the config's max_daily_budget. 0 leaves it unchanged. On a shared budget it is the amount for every campaign sharing it.
language_idsNoREPLACES all language targets; must not be empty when given. Common IDs: "1001" German, "1000" English, "1002" French, "1003" Spanish, "1004" Italian.
geo_target_idsNoREPLACES all positive geo targets; must not be empty when given. Common IDs: "2276" Germany, "2040" Austria, "2756" Switzerland, "2840" USA, "2826" UK.
bidding_strategyNoMAXIMIZE_CONVERSIONS | TARGET_CPA | TARGET_ROAS | MAXIMIZE_CONVERSION_VALUE | TARGET_SPEND | MANUAL_CPC. Empty leaves the strategy unchanged.
display_network_enabledNoEnable Search campaign display expansion. Omitted leaves the setting unchanged.
search_partners_enabledNoInclude ads on Search partners. Omitted leaves the setting unchanged.
display_expansion_enabledNoAlias for display_network_enabled; both must match when both are given.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / daily_budget / description
      Previous value: -"New daily budget in the account's currency (not micros),\nat most the config's max_daily_budget. 0 leaves it unchanged."New value: +"New daily budget in the account's currency (not micros),\nat most the config's max_daily_budget. 0 leaves it unchanged. On a\nshared budget it is the amount for every campaign sharing it."
  2. Changed12 schema fields changed
    • addedInput schema / properties / bidding_strategy / description
      Added value: +"MAXIMIZE_CONVERSIONS | TARGET_CPA | TARGET_ROAS |\nMAXIMIZE_CONVERSION_VALUE | TARGET_SPEND | MANUAL_CPC. Empty leaves\nthe strategy unchanged."
    • addedInput schema / properties / campaign_id / description
      Added value: +"The numeric ID of the campaign to update (required)."
    • addedInput schema / properties / customer_id / description
      Added value: +"Google Ads customer ID (digits, e.g. \"1234567890\"). Empty\nuses the configured default account."
    • addedInput schema / properties / daily_budget / description
      Added value: +"New daily budget in the account's currency (not micros),\nat most the config's max_daily_budget. 0 leaves it unchanged."
    • addedInput schema / properties / display_expansion_enabled / description
      Added value: +"Alias for display_network_enabled; both must\nmatch when both are given."
    • addedInput schema / properties / display_network_enabled / description
      Added value: +"Enable Search campaign display expansion.\nOmitted leaves the setting unchanged."
    • addedInput schema / properties / geo_target_ids / description
      Added value: +"REPLACES all positive geo targets; must not be empty\nwhen given. Common IDs: \"2276\" Germany, \"2040\" Austria, \"2756\"\nSwitzerland, \"2840\" USA, \"2826\" UK."
    • addedInput schema / properties / language_ids / description
      Added value: +"REPLACES all language targets; must not be empty when\ngiven. Common IDs: \"1001\" German, \"1000\" English, \"1002\" French,\n\"1003\" Spanish, \"1004\" Italian."
    • addedInput schema / properties / max_cpc / description
      Added value: +"Maximize Clicks CPC cap in the account's currency when\nbidding_strategy is TARGET_SPEND, or when the existing campaign\nalready uses TARGET_SPEND. Increases are limited by the config's\nmax_bid_increase_pct. 0 leaves it unchanged."
    • addedInput schema / properties / search_partners_enabled / description
      Added value: +"Include ads on Search partners. Omitted leaves\nthe setting unchanged."
    • addedInput schema / properties / target_cpa / description
      Added value: +"Target CPA in the account's currency; required if\nbidding_strategy is TARGET_CPA. 0 leaves it unchanged."
    • addedInput schema / properties / target_roas / description
      Added value: +"Target ROAS as a ratio (e.g. 4.0 = 400%); required if\nbidding_strategy is TARGET_ROAS. 0 leaves it unchanged."
  3. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate this is not read-only, is not destructive, and is open-world. The description adds meaningful behavioral context beyond that: the tool returns a plan_id preview, does not mutate anything, preserves negative geo exclusions, and requires double confirmation for shared budget or portfolio strategy changes. The main remaining gap is that it does not explicitly state permission/auth requirements, but the mutation lifecycle is otherwise well disclosed.

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?

The description is front-loaded with the critical preview-only behavior, then adds the most important side effects and confirmation rules. It is dense but every sentence contributes operational meaning, with only the API reference link as a minor trailing addition.

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

Completeness5/5

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

Given the complex mutation tool, 12 parameters, full schema description coverage, an output schema, and annotations, the description covers the essential gaps: preview semantics, partial-update behavior, special confirmation cases, and the handoff to confirm_and_apply. Nothing an agent needs in order to invoke it safely is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds cross-parameter semantics not fully captured by the schema, especially that omitted parameters remain unchanged, at least one change is required, geo replacement retains negative exclusions, and shared budget changes affect multiple campaigns.

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

Purpose5/5

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

The description states a specific verb and resource — 'Draft an update to an existing campaign' — and immediately clarifies the operation is a preview that 'does NOT apply.' This clearly distinguishes it from apply-oriented siblings such as confirm_and_apply and from creation-oriented siblings such as draft_campaign.

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

Usage Guidelines5/5

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

It explains that only passed parameters are changed, omitted parameters remain, and at least one change is required. It also names the relevant follow-up alternative, confirm_and_apply, and describes special cases requiring double confirmation for shared budgets and portfolio bid strategies.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.