google_ads_ create_ customer_ clientCreate a new client account under the connected account (the connected account must be a manager/MCC).
Pull spend and conversion data with a GAQL query, pause the campaigns burning budget, add negative keywords, or apply the recommendations worth applying — across every account one login reaches.
PopMCPGoogle Ads
Every reporting query, mutate and account call the connection exposes, plus the change and threshold triggers PopMCP can watch for you.
google_ads_ create_ customer_ clientCreate a new client account under the connected account (the connected account must be a manager/MCC).
google_ads_ list_ accessible_ customersList the customer IDs (resource names) the authenticated user can access.
google_ads_ mutate_ customerUpdate settings on the connected Google Ads account itself (CustomerService.MutateCustomer).
google_ads_ apply_ recommendationApply one or more Google Ads recommendations.
google_ads_ dismiss_ recommendationDismiss one or more Google Ads recommendations.
google_ads_ generate_ keyword_ historical_ metricsGet historical search-volume metrics for a specific list of keywords (KeywordPlanIdeaService).
google_ads_ generate_ keyword_ ideasGenerate keyword ideas with search-volume and competition data (KeywordPlanIdeaService).
google_ads_ get_ fieldGet metadata for a single Google Ads field by name (e.g.
google_ads_ mutate_ ad_ group_ adsCreate, update, or remove ads within ad groups (AdGroupAdService).
google_ads_ mutate_ ad_ group_ criteriaCreate, update, or remove ad-group-level criteria — keywords, audiences, and negative keywords.
google_ads_ mutate_ adsUpdate the creative content of existing ads (AdService.MutateAds — update only).
google_ads_ mutate_ campaign_ budgetsCreate, update, or remove campaign budgets.
google_ads_ mutate_ campaign_ criteriaCreate, update, or remove campaign-level criteria — negative keywords, locations, languages, ad schedules, and audiences.
google_ads_ mutate_ campaignsCreate, update, or remove campaigns.
google_ads_ searchRun a GAQL query against the account (paged).
google_ads_ search_ fieldsDiscover queryable fields, resources, metrics, and segments via a GAQL query over field metadata.
google_ads_ search_ streamRun a GAQL query and stream the entire result set in one response (no paging).
google_ads_ mutateUniversal batch mutate — create/update/remove across ANY services in one atomic call.
google_ads_ mutate_ ad_ groupsCreate, update, or remove ad groups.
google_ads_ mutate_ assetsCreate or update assets (sitelinks, callouts, images, structured snippets, etc.).
google_ads_ mutate_ conversion_ actionsCreate, update, or remove conversion actions (conversion tracking definitions).
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Google Ads side.
Supply your own OAuth Client ID, OAuth Client Secret and Developer Token, then authorize once with Google. Pick which accounts to connect and the workspace each belongs in — manager (MCC) trees resolve for you.
1234567890-abc.apps.googleusercontent.com••••••••••••3f7a••••••••••••3f7aRead-only suits reporting work. With writes on, require approval so a budget edit, a campaign pause or an applied recommendation waits for a human before it lands in a live account.
Drop the PopMCP URL into Claude, ChatGPT, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Google Ads credential never leaves the server.
app.popmcp.com/mcp/…Ask for something harmless before you turn writes on. Once it comes back clean, widen the tool set or switch the connection to full access.
Show me last week's spend, clicks and conversions by campaign for every account
google_ads_list_accessible_customersok
Then just ask for the work
“Show me last week's spend, clicks and conversions by campaign for every account”
“Pause every campaign with CPA over $80 and halve its daily budget”
“Build a search campaign for our spring sale with a $200 daily budget”
“Tell me which converting keywords sit in campaigns capped by daily budget”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Google Ads behind an AI client.
Your own Google OAuth client and a developer token. The connect form asks for an OAuth Client ID, an OAuth Client Secret and a Developer Token, then hands you to Google to authorize once. After the authorization you choose which accounts to connect and which workspace each one belongs in.
No. Manager (MCC) hierarchies are resolved during the connect flow, so there is no Customer ID to go and find. You pick the accounts you want from what the authorized login can reach, and list_accessible_customers shows your agent that same set later.
Both, and you choose which. With full access it can pause or edit campaigns through mutate_campaigns, move money with mutate_campaign_budgets, manage keywords and negatives with mutate_ad_group_criteria, and act on Google's suggestions with apply_recommendation or dismiss_recommendation. Set the connection to read-only and all of that goes away, leaving reporting; keep writes on with approval required and each change waits for your sign-off.
With GAQL. search runs a query against the account and pages through the results, while search_stream returns the entire result set in one response. When the agent does not know the field names, search_fields discovers queryable fields, resources, metrics and segments, and get_field returns metadata for a single field by name. Search-volume work takes a different route, through generate_keyword_ideas and generate_keyword_historical_metrics.
mutate_ads maps to AdService.MutateAds, which is update-only — it changes the creative content of ads that already exist. New ads are created at the ad group level through mutate_ad_group_ads. When several changes need to land together, mutate is the universal batch call: create, update and remove across any services in one atomic call.
21 operations across 12 API modules, 7 read and 14 write, and all 21 load by default rather than hiding behind a search. The largest groups are Account, Recommendations, Planning, Metadata, Ads, Keywords, Campaigns and Reporting. There are also 14 triggers, split between change detection (campaign created, campaign status changed, ad disapproved, new search term) and thresholds (daily spend spiked, cost per conversion spiked, campaign stopped serving, impression share lost to budget).
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server — Claude Desktop, Claude Web, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Loading 21 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 21-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. You can switch a connection to the full catalog at any time.
A tool is something your AI calls — there are 21 here. A trigger is something PopMCP watches for you: 14 Google Ads events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Google Ads.
Launch a hosted MCP endpoint for Google Ads, keep tool access under control, and start testing real workflow prompts right away.