Skip to main content
Glama

Loop Marketing

Prepare a change to a campaign

prepare_campaign_change

Prepare a change to an existing campaign as a proposal in the Loop inbox (needs a propose key): set a Google Ads search campaign's languages, replace a running search ad's wording and landing page, change a daily budget by more than the per-change limit (the daily cap still applies), give a campaign a total cap that Loop pauses it at, set a max CPC you choose (campaign or ad group; above the workspace max CPC only with overrideWorkspaceCap), move the same daily amount from one campaign to another (total unchanged; both or neither), add an ad group (keywords and one responsive search ad) to a running Google Ads search campaign within its current budget, move a Google Ads or Apple Ads campaign's end date (optionally raising the total cap Loop watches so it does not pause before the new end), or keep only chosen keywords in an Apple Ads campaign and pause the rest. Nothing is sent to the ad platform; a person approves it in Loop.

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": {
      "kind": "<kind>",
      "campaignId": "<campaignId>"
    },
    "name": "prepare_campaign_change"
  }
}

Input Schema

NameRequiredDescriptionDefault
capNototal_cap: the total in the campaign's currency.
keepNokeep_keywords: the keyword texts to keep enabled; the campaign's other enabled keywords are paused.
kindYes
adRefNoreplace_search_ad: the ad to replace (customers/…/adGroupAds/…).
sinceNototal_cap: YYYY-MM-DD to count spend from (default today).
amountNobudget_transfer: the daily amount to move.
familyNoreplace_search_ad / add_ad_group: the workspace campaign family for utm_campaign.
maxCpcNomax_cpc: the new max CPC in the account's currency. add_ad_group: the new ad group's max CPC (manual CPC campaigns only).
endDateNoend_date: the new last day (YYYY-MM-DD) in the ad account's time zone.
landingNoreplace_search_ad / add_ad_group: landing page without utm_*; UTM is added by Loop.
fundedByNobudget_move: id of the campaign whose budget this uses (recorded only).
keywordsNoadd_ad_group: the new ad group's keywords.
headlinesNo
languagesNolanguages: codes such as vi, ja; empty = all languages.
campaignIdYesThe campaign id from list_campaigns (budget_transfer: the campaign that receives).
adGroupNameNomax_cpc: an ad group of a manual CPC campaign (omit for the campaign max CPC). add_ad_group: the new ad group's name.
dailyBudgetNobudget_move: the new daily budget in the campaign's currency.
utmCampaignNoreplace_search_ad / add_ad_group: utm_campaign for this campaign ({adgroup} allowed).
descriptionsNo
raiseTotalCapNoend_date: if Loop watches a total cap on this campaign, raise it by the added days × daily budget.
fromCampaignIdNobudget_transfer: the campaign that gives the budget.
overrideWorkspaceCapNomax_cpc: allow a value above the workspace max CPC.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Adds substantial behavior beyond the annotations: nothing is sent to the ad platform, a human approves in Loop, a propose key is required, the per-change limit and daily cap still apply, values above the workspace max CPC need overrideWorkspaceCap, and budget_transfer is atomic ('both or neither'). It does not describe what the proposal object returned looks like, but the safety and approval model is 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.

Conciseness3/5

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

The core purpose is front-loaded, but the body is a single sprawling sentence with nine comma-separated clauses that is hard to scan. Every clause carries information, yet a bulleted or kind-per-sentence structure would be far more usable for a 22-parameter tool.

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 22-parameter, nine-mode tool with no output schema, the description covers each mode's intent and the key constraints (caps, overrides, atomicity, approval). It stops short of saying what the created proposal returns or how to reference it afterward, which is the main remaining 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 coverage is already 86%, yet the description still adds meaning: it explains that budget_move must exceed the per-change limit while the daily cap applies, that total_cap is the point Loop pauses at, that max_cpc can target campaign or ad group and needs overrideWorkspaceCap above the workspace cap, and that budget_transfer leaves the total unchanged. That is genuine semantic value over the schema.

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 ('Prepare a change to an existing campaign as a proposal in the Loop inbox') and enumerates the nine supported change kinds, so an agent can match a request to this tool. It also distinguishes itself from direct-mutation siblings by noting nothing is sent to the ad platform. The enumeration is dense but concrete.

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?

Gives one real prerequisite ('needs a propose key') and implies usage through the kind list, but never states when to prefer this over alternatives such as a direct update path or create_launch_draft, nor any when-not conditions. Guidance is implied rather than explicit.

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