2026-07-30

Google Ads MCP write access, governed by dollar caps.

Google’s official Google Ads MCP server is read-only reporting. Community servers will happily mutate anything with no bounds at all. Most teams want the thing in between: an agent that can manage campaigns, inside limits that don’t depend on the agent’s judgment.

The gap

As of mid-2026, the choices for driving Google Ads from an MCP client look like this: Google’s official server exposes reporting tools and no writes. Community servers expose the mutate surface of the API — which means an agent holding one can change budgets by any amount, at any hour, and the first you’ll hear of it is the invoice. “The model is usually careful” is not a spend-control policy.

Typed grants, priced changes

Gentkey’s Google Ads connector splits the write surface the way Google’s own API does. Every raw mutate is classified from the operation type itself — the field Google dispatches on, so there’s nothing to parse and no dry run to buy — into grants like google-ads.campaigns.mutate and google-ads.adGroups.mutate. A call mixing families, or one the classifier can’t type, fails closed to the full write grant.

Budgets get more than typing: they get priced. Every budget movement is converted to dollars and checked against your caps before it goes upstream — the curated budget tool under google-ads.write.budget with a max $ change per call, plus velocity windows across the hour and day. That includes lifetime budgets, not just daily ones: a lifetime-budget raise prices exactly like a daily-budget raise, because a cap only means anything if it binds everything. (We found and closed exactly that bypass in our own gate — an update masked to the lifetime-budget field priced as $0 — which is the kind of bug you only catch if you treat your own policy layer as an adversary.)

What it looks like

Grant: google-ads.write.budget · max $ change/call = 50

“Raise the Summer Sale budget by $30” → google_ads_update_campaign_budget allowed, executed upstream, logged. “Great — now raise it by $500” → same tool, same grant → denied by policy. Nothing changed at Google, and the denial is in the log with the arithmetic that produced it. The agent keeps its autonomy; you keep the blast radius.

What this doesn’t do

Honest limits: the gate bounds what changes and by how much; it doesn’t make an agent’s strategy good. A $49 budget change that’s a bad idea will be allowed 49 dollars’ worth. Caps are a floor under your worst day, not a substitute for reviewing what your agents do — which is what the per-agent audit trail is for.

The full access model — every grant and what it governs — is on the Google Ads connector page.

Give an agent a budget, not a checkbook.

Connect Google Ads and set your first dollar-capped grant in under a minute.