Skip to main content
Glama

Campaign change proposal

propose_change
Destructive

Create a campaign change proposal (the client's auto policy level applies a reversible change within limits immediately, otherwise it waits for human approval; see status): campaign budget (budget_minor, minor units), Meta ad set budget (kind ad_set_budget, ad_set_id, budget_minor), campaign status (paused|enabled), ad group or ad status (ad_set_status with ad_set_id, ad_status with ad_id), negative keywords or keywords (keywords), Google campaign final URL suffix with UTM tags (kind tracking_suffix, url_suffix), bid strategy (kind bid_strategy: Google campaign — MAXIMIZE_CONVERSIONS with optional target_cpa_minor, MAXIMIZE_CONVERSION_VALUE with optional target_roas, TARGET_SPEND with optional cpc_ceiling_minor, MANUAL_CPC; Meta ad set in a campaign with ad set budgets — ad_set_id and LOWEST_COST_WITHOUT_CAP, or COST_CAP / LOWEST_COST_WITH_BID_CAP with bid_amount_minor; always waits for human approval), Google sitelinks and callouts (kind extensions, extensions; added only), Meta ad set targeting (kind ad_set_targeting, ad_set_id, targeting with only the fields to change: countries, regions, cities, age_min, age_max, genders, advantage_audience, placements, custom_audiences, excluded_audiences, interests; the rest of the targeting stays; always waits for human approval, can be undone), Google keywords of an ad group (kind keyword_update, ad_set_id, keyword_changes: [{criterion_id, status paused|enabled and/or cpc_bid_minor}] from get_ad_group_keywords) and the ad group default CPC bid (kind ad_set_bid, ad_set_id, cpc_bid_minor) — bids apply under manual CPC; always wait for human approval, can be undone. Google campaign targeting — kind campaign_targeting with google_targeting (only the fields to change: locations, excluded_locations, languages, schedule, devices; read get_campaign_targeting first); waits for human approval, can be undone. Remove Google extensions from a campaign — kind extensions_remove with extension_asset_ids from get_campaign_extensions (the assets stay in the account; can be undone). Google ad group audiences — kind ad_set_audiences with ad_set_id and google_audiences (audiences with optional bid_modifier, excluded_audiences; user list ids from get_ad_group_audiences). Microsoft: keyword_update and ad_set_bid as for Google; campaign_targeting with countries — the whole new list of ISO codes; keywords may take ad_set_id — an ad group of the campaign (otherwise the service ad group). LinkedIn: ad_status for a creative (ad_id); ad_set_bid — the campaign bid (ad_set_id of the campaign's only ad group); campaign_targeting with linkedin_targeting (only the fields to change; values from search_linkedin_targeting); bid_strategy MAXIMUM_DELIVERY, MANUAL_BID or COST_CAP with bid_amount_minor. Justification — from specific tool data.

Input Schema

NameRequiredDescriptionDefault
kindYes
ad_idNo
reasonYes
statusNo
keywordsNo
ad_set_idNo
countriesNoMicrosoft campaign_targeting: the whole new list of country ISO codes
targetingNo
extensionsNo
url_suffixNo
campaign_idYes
target_roasNo
bid_strategyNo
budget_minorNo
cpc_bid_minorNo
keyword_changesNo
bid_amount_minorNo
google_audiencesNo
google_targetingNo
target_cpa_minorNo
cpc_ceiling_minorNo
linkedin_targetingNoLinkedIn campaign_targeting: only the fields to change; each list is the whole new list
extension_asset_idsNoAsset ids from get_campaign_extensions (kind extensions_remove)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare write/destructive/non-idempotent/open-world, so the bar is lower, and the description still adds real context: which changes may apply immediately under limits, which always wait for human approval, and which can be undone. This reversibility and approval-flow detail is genuinely beyond what the annotations convey.

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

Conciseness2/5

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

The content is dense and valuable, but it is delivered as one giant run-on paragraph with no headings, bullets, or front-loading of the kind→parameter mapping. An agent must parse the entire blob to find the variant it needs, which is poor structure for a 16-value enum.

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 23-parameter, no-output-schema tool this is remarkably thorough on per-kind behavior and approval semantics. It still omits what a successful call returns (a proposal id? a status?) and general field-level meaning for shared params, which for such a complex mutation tool is a notable gap.

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 description coverage is only 13% across 23 parameters, so the description must carry the load, and it does: it maps each kind to its required parameters, states minor units, sources (keyword ids from get_ad_group_keywords, assets from get_campaign_extensions), and expands bid-strategy enums (MAXIMIZE_CONVERSIONS with optional target_cpa_minor, etc.). Individual params like ad_id and budget_minor still lack per-field semantics, so it falls short of full compensation.

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?

The opening clause states a specific verb and resource ('Create a campaign change proposal') and even explains the core behavioral distinction: the client's auto policy may apply a reversible change immediately or hold it for human approval. It is clearly a write/proposal tool, but the purpose is buried under an enormous enumeration of kind variants, and sibling routing (approve_change, get_change_status) is only implied.

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?

Useful per-kind prerequisites are scattered through the text ('read get_campaign_targeting first', 'from get_ad_group_keywords', 'from get_campaign_extensions'), and it distinguishes kinds that auto-apply from those that always wait for approval. However, there is no overarching when-to-use guidance and no explicit handoff to approve_change or get_change_status for the approval workflow it references.

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.

Resources