Run claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp, type /mcp, and sign in with your PaidSync login. Claude Code then reaches your Google Ads accounts through 152 tools: audits, search terms, keywords, budgets, bidding and campaign builds. Claude Code asks before it runs each tool, and most Google Ads writes preview with a dry run first.
One command. OAuth sign-in, no key pasted. Free plan, 15 tasks a month, no card.
Claude Code talks to remote MCP servers over Streamable HTTP. PaidSync is one of them. Add it once and the same terminal that edits your code can read and change your Google Ads accounts.
claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcpBy default that registers the server for the current project only. Add --scope user to make it available in every project on your machine. Run claude mcp list to confirm it is there, then start a session and type /mcp to sign in.
Takes 10 seconds. Google or email sign-in. The free plan is 15 tasks a month at $0, no card.
Click Connect on Google Ads and sign in with the Google account that can reach your ad accounts. Google Ads authorizes via Google OAuth. PaidSync stores the tokens encrypted at rest with AES-256-GCM and never sees your Google password.
Already inside Claude Code? Ask it to run connect_google_ads. The tool returns an OAuth link to open in your browser.
After the sign-in, PaidSync lists the Google Ads accounts that login can reach. Tick the ones that belong in this workspace. Inside a session, list_accounts shows them and set_active_account picks the one Claude Code works on.
In your terminal, run:
claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcpStart a session, type /mcp, pick paidsync, and sign in with your PaidSync login in the browser window that opens. Claude Code stores the OAuth token for you. No key is pasted anywhere.
Setting this up for a team? Commit a .mcp.json at the repo root so every engineer gets the same connector:
{
"mcpServers": {
"paidsync": { "type": "http", "url": "https://mcp.paidsync.ai/mcp" }
}
}Prefer an API key, for example for headless runs? Send it in a header, never in the URL, where it would end up in logs:
claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp --header "Authorization: Bearer $PAIDSYNC_API_KEY"In a committed .mcp.json, add "headers": { "Authorization": "Bearer ${PAIDSYNC_API_KEY}" } so the key stays in each engineer's environment and never enters git. Applying a change to Google Ads still requires the OAuth sign-in. On other platforms a key can apply changes too, so treat it like a password and prefer OAuth.
In a Claude Code session ask: “Show me last 7 days Google Ads performance by campaign”
Claude Code returns impressions, clicks, cost and conversions for each campaign in the active account. The connection is live.
Each prompt below maps to tools in the PaidSync Google Ads group. Claude Code picks the tool. The last column says whether the call can change anything in the account.
| Ask | Tools it calls | Changes your account? |
|---|---|---|
| “Audit the account and list the five fixes with the most spend behind them” | run_account_audit | No |
| “Show last 30 days campaign performance sorted by cost, with conversions” | get_campaign_performance | No |
| “Which search terms spent money this month with zero conversions?” | get_search_terms_report, get_wasted_spend_report | No |
| “Break the last 30 days of search terms into n-grams and suggest negatives” | analyze_search_term_ngrams | No |
| “Add those five terms as phrase match negatives on the Brand campaign” | add_negative_keywords | Yes, after you confirm |
| “Cut the daily budget on the Generic campaign by 20 percent” | update_campaign_budget | Yes, after you confirm |
| “Pause every campaign that spent money last week with no conversions” | get_campaign_performance, pause_campaign | Yes, after you confirm |
| “Build a paused Search campaign for the new product line” | create_search_campaign | Yes, after you confirm |
The -p flag runs Claude Code without the interactive session. Sign in once through /mcp and the stored OAuth token carries over. A report that lands in a file looks like this:
claude -p "Pull last 7 days Google Ads performance by campaign and flag any campaign that spent money with zero conversions." \
--allowedTools "mcp__paidsync" \
--output-format json > reports/google-ads-$(date +%F).jsonReads run straight through, and so do writes. --allowedTools "mcp__paidsync" allows every PaidSync tool, writes included, with no prompt. For an unattended job, allow only the read tools it needs, each by name as mcp__paidsync__tool_name.
Of the 152 Google Ads tools, 60 only read and 92 can write. Reads cover performance, keywords, search terms, Quality Score, auction insights, budget pacing and change history, through tools such as get_keyword_performance, get_quality_score_report, get_auction_insights, get_budget_pacing and get_change_history.
Writes cover budgets, bids, keywords, negatives, ads, extensions, audiences and campaign builds. Google Ads create tools and most other writes preview by default with dry_run, so the first call shows the change and a second call applies it.
Over MCP, the approval step is Claude Code’s own prompt. It asks before it runs a tool unless you allowed it with --allowedTools or in your settings. PaidSync adds checks on its side. Deletes, pauses and budget changes need confirm_destructive, and a pre-write rule check blocks unsafe arguments. The approval card and one-tap undo apply only in the PaidSync workspace.
create_search_campaign builds a Search-only campaign in a paused state. Search partners and the Display Network start off, geo targeting is presence only, and bidding is manual CPC unless you name another strategy.confirm_large_change on top of confirm_destructive. That guard stops an accidental 10x budget or a budget set to zero.remove_campaign is permanent in Google Ads. A removed campaign cannot be enabled again. Use pause_campaign when you only want delivery to stop.Sign up at paidsync.ai, connect Google Ads via Google OAuth in the dashboard, then run claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp in your terminal. Type /mcp inside a session, pick paidsync, and sign in with your PaidSync login.
Yes. Claude Code can add negatives, change budgets, pause and enable campaigns, and build paused Search campaigns. Claude Code asks before it runs each tool unless you allowed it. Most writes preview as a dry run first, and deletes, pauses and budget changes need an explicit confirm.
Yes. Once you have signed in through /mcp, claude -p reuses the stored OAuth token. Reads run straight through. Writes need care. No one is there to answer the Claude Code prompt, so any write tool you allowed with --allowedTools runs straight through. For an unattended job, allow only the read tools it needs.
No. PaidSync is a hosted server at https://mcp.paidsync.ai/mcp. You sign in to Google Ads through Google OAuth in the PaidSync dashboard and to PaidSync through /mcp in Claude Code.
Yes. The free plan is $0 for 15 tasks a month with no card. Pro starts at $99 a month and Team at $249 a month. Claude Code itself needs an Anthropic plan that includes it.
152 Google Ads tools. One command in Claude Code.