Ducto

Google Ads

Campaigns, budgets, and keywords — every write capped and audited

Your agent builds and runs Google Ads accounts end to end: campaigns, ad groups, responsive search ads, keywords, budgets, and conversion tracking. Every mutation runs through the policy engine before it reaches the API.

29 tools11 read18 writemcp.getducto.com/google-ads
connect the google-ads mount

$ claude mcp add --transport http google-ads \

https://mcp.getducto.com/google-ads

✓ connected — 29 tools

read-only until you set a policy

What your agent does here

Real Google Ads work, in conversation

Build campaigns that don't spend yet

Create budgets, campaigns, ad groups, and responsive search ads. Everything is created paused — nothing spends until you enable it.

ads_create_campaignads_create_ad_groupads_create_responsive_search_adads_create_budget

Move budgets and bids inside caps

Update campaign budgets, keyword bids, and bid modifiers. Numeric ceilings come from your policy row, never from the model.

ads_update_campaignads_update_keyword_bidads_set_campaign_bid_modifier

Manage keywords and targeting

Add keywords with capped CPCs, prune losers, add negatives, and shape geo targeting — including exclusions.

ads_add_keywordsads_add_negative_keywordsads_remove_keywordsads_add_geo_targets

Query anything with GAQL

Full reporting through search and performance tools, plus conversion actions and account status for diagnosing setup.

ads_searchads_performanceads_list_conversion_actionsads_status

Governed writes

How writes are enforced

Budget and bid writes clear the numeric caps in your policy row before they execute. Campaigns are created paused. Preview-before-apply and approval classes apply to every mutation, and each one lands in the audit ledger.

read-only defaultcaps ← policy rowpreview before applyapproval on flagged classeshash-chained audit

The full request path is on the security architecture page.

Tool reference

Every tool in the google-ads mount

Generated from the running gateway's tool registry — this is the complete list, not a highlight reel.

ads_add_geo_targetswriteAdd positive geo targets to a campaign.
ads_add_keywordswriteAdd keywords to an ad group (per-keyword CPC bids capped by max_cpc).
ads_add_negative_keywordswriteAdd campaign-level negative keywords.
ads_create_ad_groupwriteCreate an ad group (paused by default; CPC bid capped by max_cpc).
ads_create_budgetwriteCreate a campaign budget (capped by max_daily_budget).
ads_create_campaignwriteCreate a campaign (paused by default; budget capped by max_daily_budget).
ads_create_conversion_actionwriteCreate a conversion action.
ads_create_responsive_search_adwriteCreate a responsive search ad (paused by default).
ads_exclude_geo_targetwriteAdd a negative (excluded) geo target to a campaign.
ads_get_geo_target_typereadRead a campaign's positive/negative geo-target-type setting.
ads_keyword_ideasreadKeyword Planner: search volume, competition and top-of-page bid range. Seed with `keywords`, a `page_url`, or both. `geo_target_ids` come from `ads_search_geo_targets`; `language_id` is a language constant (1000 = English). Volumes are Google's rounded monthly averages, not measured traffic.
ads_list_ad_groupsreadList ad groups, optionally filtered to one campaign.
ads_list_budgetsreadList campaign budgets.
ads_list_campaignsreadList non-removed campaigns for the customer.
ads_list_conversion_actionsreadList conversion actions.
ads_list_keywordsreadList keyword criteria, optionally filtered to one ad group.
ads_mutatewriteGeneric Ads mutate escape hatch. Respects the workspace's uncapped-mutate policy. Preview first (apply=false); repeat identically with apply=true to execute.
ads_performancereadPerformance report (impressions/clicks/cost/conversions) for a resource over N days.
ads_remove_keywordswriteRemove keyword criteria by resource name.
ads_searchreadRun a read-only GAQL query. Prefer the typed list_* tools; use this for coverage gaps.
ads_search_geo_targetsreadLook up geo target constants by name (for use with add_geo_targets).
ads_set_campaign_bid_modifierwriteSet a campaign bid modifier (capped by max_bid_modifier).
ads_set_geo_target_typewriteSet a campaign's positive/negative geo target type.
ads_set_statuswriteEnable/pause/remove a campaign, ad_group, or ad.
ads_statusreadReport this token's Google Ads policy: read-only, caps, approval, connection health.
ads_update_campaignwriteUpdate campaign fields (a re-pointed budget is re-checked against caps).
ads_update_keyword_bidwriteUpdate a keyword's CPC bid (capped by max_cpc and max_bid_increase_pct).
ads_upload_click_conversionswriteUpload offline conversions (e.g. deals closed in a CRM) for attribution. Each row: {"conversion_action": id, "conversion_date_time": "2026-08-17 14:30:00+05:30", one of "gclid"/"gbraid"/"wbraid" (or "order_id"/"user_identifiers"), optional "conversion_value" + "currency_code"}. Batch size is capped by the workspace policy.
ads_upload_image_assetwriteUpload an image asset (from a URL or base64; the preview redacts the bytes).