How to Manage Google Ads from Cursor: The Full Workflow (2026)
You can run a Google Ads account from Cursor: connect it over MCP, give the Agent a weekly loop of diagnose, optimize and report, keep every change behind an approval, and let the outputs pile up in the repo. This guide is that loop, with the prompts, in the order we run it on accounts spending $25K–$200K a month. Where Cursor stops — unattended execution — an autopilot picks up. Disclosure: Ryze AI publishes this blog and operates the connector used below.
Built by our community of 2,000 marketers
Free skills and prompts for paid ads and SEO
Templates for Claude, ChatGPT and Perplexity.
Used by marketers behind 33,000+ brands
What you can manage from Cursor, at a glance
Everything below runs from the Agent panel once the account is connected. The right-hand column is the honest answer to the question people actually ask: yes, Cursor can change a Google Ads account — but only through a write tool you approve.
- 1Search terms and negativesFinds spend with no conversions, writes an Editor-format negative list, applies it
Connector tool: runRawGaql → runRawMutate
Changes the account?: Yes, with approval
- 2Bids and bid strategiesRecommends tCPA / tROAS per campaign, ramps the transition over two weeks
Connector tool: runRawGaql → runRawMutate
Changes the account?: Yes, with approval
- 3BudgetsModels 10 / 20 / 35% reallocation, moves budget from donors to budget-capped winners
Connector tool: runRawGaql → runRawMutate
Changes the account?: Yes, with approval
- 4Google's recommendationsTriages apply / dismiss / needs a human, applies the safe ones
Connector tool: listRecommendations → applyRecommendation
Changes the account?: Yes, with approval
- 5Ad copyDrafts two full RSAs with pinning, writes them to a file for review
Connector tool: getAccountSummary (context)
Changes the account?: No — you paste
- 6Performance MaxFlags asset groups dragging ROAS and brand cannibalization
Connector tool: runRawGaql
Changes the account?: No — diagnosis
- 7Keyword researchPulls Keyword Planner volumes and groups ideas by intent
Connector tool: generateKeywordIdeas
Changes the account?: No
- 8ReportingWeekly digest, anomaly scan, executive summary — written to reports/
Connector tool: getAccountSummary, runRawGaql
Changes the account?: No
| # | Area | What the Agent does | Connector tool | Changes the account? |
|---|---|---|---|---|
| 1 | Search terms and negatives | Finds spend with no conversions, writes an Editor-format negative list, applies it | runRawGaql → runRawMutate | Yes, with approval |
| 2 | Bids and bid strategies | Recommends tCPA / tROAS per campaign, ramps the transition over two weeks | runRawGaql → runRawMutate | Yes, with approval |
| 3 | Budgets | Models 10 / 20 / 35% reallocation, moves budget from donors to budget-capped winners | runRawGaql → runRawMutate | Yes, with approval |
| 4 | Google's recommendations | Triages apply / dismiss / needs a human, applies the safe ones | listRecommendations → applyRecommendation | Yes, with approval |
| 5 | Ad copy | Drafts two full RSAs with pinning, writes them to a file for review | getAccountSummary (context) | No — you paste |
| 6 | Performance Max | Flags asset groups dragging ROAS and brand cannibalization | runRawGaql | No — diagnosis |
| 7 | Keyword research | Pulls Keyword Planner volumes and groups ideas by intent | generateKeywordIdeas | No |
| 8 | Reporting | Weekly digest, anomaly scan, executive summary — written to reports/ | getAccountSummary, runRawGaql | No |
Rows 1 to 4 are the management loop; rows 5 to 8 feed it. The pattern that makes this work in an editor rather than a chat window is that every row ends with a file — a negative list, a bid plan, a digest — that the next run can read.
The short answer: add the Google Ads MCP server to .cursor/mcp.json, install the 15 Cursor skills for Google Ads, and run them on a weekly schedule — digest Monday, waste Tuesday, diagnosis Wednesday, changes Thursday, anomalies Friday. Every change is proposed by the Agent and confirmed by you. If you want the changes to happen without you, that is an autopilot's job, not Cursor's. Setup details: how to connect Cursor to Google Ads.
Step 1: connect the account (about 2 minutes)
Cursor reads MCP servers from .cursor/mcp.json in the project or ~/.cursor/mcp.json in your home directory. A remote server needs only a url. The managed Ryze AI connector is the fastest route because it authenticates with a Google sign-in and holds no secrets in the file, so the config can be committed for the team.
Save the file and confirm the server
Open Cursor Settings → Tools & MCP. The ryze server shows its status and 14 Google Ads tools (plus Meta, TikTok, GA4, Search Console and Shopify toolsets on the same URL). Toggle it on if it is grey.
Sign in with Google
Cursor opens the OAuth page in the browser. Use the Google account with access to the ad account; MCC logins work and you choose the customer ID afterwards.
Add one rule
Create .cursor/rules/google-ads.mdc with the facts every prompt needs: the customer ID, the conversion action that counts, the attribution and date conventions, the target CPA, and two standing orders — never delete, always pause; never apply a write without showing the list first.
Install the skills
Unzip the 15 SKILL.md files into .cursor/skills/ (Cursor also reads .claude/skills/). Restart. Each one is now a slash command: /wasted-spend-audit, /weekly-digest, /budget-reallocation and so on.
Test with a read
Ask the Agent for a 30-day summary. Approve the getAccountSummary call when Cursor asks. If the numbers match the Google Ads UI, you are connected.
Self-hosting is possible with Google's official Google Ads MCP server as a stdio entry; it needs a developer token and a Cloud project. The five routes are ranked in how to connect Cursor to Google Ads.
Step 2: the weekly operating loop
Google Ads does not need daily hands; it needs the same five checks every week, in the same order, with the results written down. This is the schedule we run. Each row is one slash command and about ten minutes, most of it reading the output.
Monday
- Job
- Performance digest vs last week and same week last month
- Skill
- /weekly-digest
- Output file
- reports/digest-{date}.md
- Writes to the account?
- No
Tuesday
- Job
- Wasted spend: search terms with cost and no conversions
- Skill
- /wasted-spend-audit
- Output file
- negatives/{date}.csv
- Writes to the account?
- Thursday, with approval
Wednesday
- Job
- CPA spike and Quality Score diagnosis
- Skill
- /cpa-spike-diagnosis, /quality-score-analysis
- Output file
- reports/diagnosis-{date}.md
- Writes to the account?
- No
Thursday
- Job
- Apply: negatives, bid targets, budget shifts
- Skill
- /budget-reallocation + runRawMutate
- Output file
- changes/{date}.md
- Writes to the account?
- Yes, with approval
Friday
- Job
- Anomaly scan and executive summary
- Skill
- /anomaly-detection, /executive-summary
- Output file
- reports/exec-{date}.md
- Writes to the account?
- No
Monthly
- Job
- Impression share gaps, bid strategy review, competitor benchmark, ROAS forecast
- Skill
- /impression-share-gap, /bid-strategy-selector, /competitor-benchmark, /roas-forecast
- Output file
- reports/monthly-{month}.md
- Writes to the account?
- No
| Day | Job | Skill | Output file | Writes to the account? |
|---|---|---|---|---|
| Monday | Performance digest vs last week and same week last month | /weekly-digest | reports/digest-{date}.md | No |
| Tuesday | Wasted spend: search terms with cost and no conversions | /wasted-spend-audit | negatives/{date}.csv | Thursday, with approval |
| Wednesday | CPA spike and Quality Score diagnosis | /cpa-spike-diagnosis, /quality-score-analysis | reports/diagnosis-{date}.md | No |
| Thursday | Apply: negatives, bid targets, budget shifts | /budget-reallocation + runRawMutate | changes/{date}.md | Yes, with approval |
| Friday | Anomaly scan and executive summary | /anomaly-detection, /executive-summary | reports/exec-{date}.md | No |
| Monthly | Impression share gaps, bid strategy review, competitor benchmark, ROAS forecast | /impression-share-gap, /bid-strategy-selector, /competitor-benchmark, /roas-forecast | reports/monthly-{month}.md | No |
Two things make the loop stick. The outputs are files, so Thursday's change run reads Tuesday's negative list rather than re-deriving it. And the changes/ folder is an audit trail: what was applied, when, why, and what the metric did afterwards — which is what you need on the Monday two weeks later when someone asks why CPA moved.
Step 3: diagnose — the three prompts that find the money
Run diagnostics before touching anything. The average account has three to five diagnosable problems at any time, and the Agent finds them faster than a human because it does not skip rows. These three are the Tuesday and Wednesday jobs; the full skill files have the complete instructions.
Wasted spend (Tuesday)
CPA spike (Wednesday, when it moves)
Quality Score (Wednesday, monthly)
Read every diagnosis bottom-up: the ranked list is the headline, the evidence lines tell you whether the Agent reasoned from your numbers. If a cause is marked Critical with thin evidence, ask for the exact rows that support it before you act on it.
Step 4: optimize — ship changes with two approvals
Thursday is the only day the account changes. Three prompts, each of which ends with the Agent showing a list and waiting. Cursor asks before every MCP tool call; the connector's write tools are approval-gated on the server side as well. Both layers stay on.
Apply the negative list
Reallocate budget
Adjust bid targets
Never allowlist runRawMutate or runRawMutateDelete in Auto-review mode. Reads can run without a click. Writes should always show you the list. Google Ads removals cannot be undone, so the rule file says pause, never delete.
Free SEO/GEO audit
- Surface technical SEO issues
- Spot quick wins
- Find duplicate and thin pages
Free · no credit card · instant
Ryze AI — Autonomous Marketing
Skip Thursday — let AI apply the changes 24/7
- Every diagnostic in this loop, running continuously
- Executes bid, budget and negative-keyword changes
2,000+
Marketers
$500M+
Ad spend
23
Countries
Step 5: report — files the team actually reads
Reporting is where Cursor beats a chat assistant outright. The digest is a Markdown file in the repo, the executive summary is a page, and both can be committed, diffed and linked from Slack. The Monday and Friday jobs:
Weekly digest (Monday)
Executive summary (Friday, monthly)
Anomaly scan (Friday)
One habit worth building: ask the Agent to append a one-line result to changes/ two weeks after every Thursday change (“negatives applied 2026-09-04: wasted spend down $1,240/month, CPA -6%”). That closes the loop and turns the folder into the account's memory.
Step 6: automate — what Cursor can schedule and what it cannot
The desktop app runs when you are in it. Three ways to make the loop run without you, in increasing order of hands-off.
Cloud Agents
Scheduled reads in the cloud
Put mcp.json and the skills in the project's .cursor/ folder (user-level config is not copied to Cloud Agents) and trigger the digest and audit skills on a schedule. Best for Monday and Friday reports; keep writes on the desktop where you approve them.
Agent-written scripts
Cron jobs you own
Ask the Agent to turn a skill into a Python script against the Google Ads API client library, or a Google Ads Script for the in-platform scheduler. Needs a developer token, and there is no approval layer — scripts that mutate do so the moment they run.
An autopilot
Decides, applies, re-measures
Ryze AI's Paid Ads Autopilot runs the whole loop — bids, budgets, negatives, anomalies — 24/7 on the same account with an approval mode and a change log, at $89/month flat. Cursor stays the analysis and reporting layer on top.
Do nothing
The honest baseline
Ten minutes a day in Cursor with the loop above is already less work than most accounts get. Automate when the loop is boring, not before.
Decides what to change
- Cursor + MCP
- The Agent proposes, you decide
- Autopilot (Ryze AI)
- The agent decides within your guardrails
Applies the change
- Cursor + MCP
- With your approval, Thursday
- Autopilot (Ryze AI)
- Continuously, approval mode optional
Runs unattended
- Cursor + MCP
- Only reads, via Cloud Agents
- Autopilot (Ryze AI)
- Yes, 24/7
Re-measures and adjusts
- Cursor + MCP
- When you run the next skill
- Autopilot (Ryze AI)
- Automatically
Output
- Cursor + MCP
- Files in your repo
- Autopilot (Ryze AI)
- Change log and reports in the app
Cost
- Cursor + MCP
- Cursor plan + free connector
- Autopilot (Ryze AI)
- $89/month flat
| Cursor + MCP | Autopilot (Ryze AI) | |
|---|---|---|
| Decides what to change | The Agent proposes, you decide | The agent decides within your guardrails |
| Applies the change | With your approval, Thursday | Continuously, approval mode optional |
| Runs unattended | Only reads, via Cloud Agents | Yes, 24/7 |
| Re-measures and adjusts | When you run the next skill | Automatically |
| Output | Files in your repo | Change log and reports in the app |
| Cost | Cursor plan + free connector | $89/month flat |
Guardrails that keep this safe
Every one of these came from a mistake we made or watched someone make. Put them in the rule file so every skill inherits them.
- Pause, never delete. Removals in Google Ads cannot be undone. The connector's delete tool only runs on an item-by-item approved list; the rule should say the Agent never asks for it.
- Show the list, then wait. Every write prompt ends with “wait for my approval”. Cursor's tool approval is the second gate; keep both.
- Cap single changes at 20%. Budgets and bid targets move in steps. A 35% budget shift is three Thursdays, not one.
- Name the conversion action. Conversions vs all conversions is the most common reason numbers do not match the UI. Put it in the rule.
- Keep secrets out of mcp.json. The managed connector has none; any server that needs a developer token or API key gets it from an environment variable.
- Log everything to changes/. Date, what, why, and the two-week result. This is the file that saves you in the next budget review.

Alex M.
VP Growth
Multi-Brand Ecommerce Group
We had five channels and five people each defending their own budget. Handing allocation to Ryze AI cut blended CAC 27% in a quarter — not because the bidding got smarter, but because money finally moved to whichever channel was winning that week.”
27%
Blended CAC reduction
5
Channels automated
12 weeks
To full autonomy
1,000+ marketers use Ryze





Automating hundreds of agencies





★★★★★Cursor vs Claude vs Grok for running Google Ads
All three connect to the same MCP server, so the data is identical. The difference is what happens to the output and where the work runs.
Where it runs
- Cursor
- Your editor, files in a repo
- Claude
- Chat, Projects, Cowork
- Grok
- Chat, X app, Grok Build
Skills
- Cursor
- SKILL.md as slash commands
- Claude
- SKILL.md in Claude Code, Projects
- Grok
- Skills on grok.com, .md import
Scheduling
- Cursor
- Cloud Agents (reads)
- Claude
- Cowork scheduled runs
- Grok
- Grok Build cron
Unique strength
- Cursor
- Writes files and code next to the data
- Claude
- Deepest analysis, longest connector history
- Grok
- Native X search for competitor and audience language
Best for
- Cursor
- Teams that want an audit trail in Git
- Claude
- Marketers who live in chat
- Grok
- Ad research and social signals
| Cursor | Claude | Grok | |
|---|---|---|---|
| Where it runs | Your editor, files in a repo | Chat, Projects, Cowork | Chat, X app, Grok Build |
| Skills | SKILL.md as slash commands | SKILL.md in Claude Code, Projects | Skills on grok.com, .md import |
| Scheduling | Cloud Agents (reads) | Cowork scheduled runs | Grok Build cron |
| Unique strength | Writes files and code next to the data | Deepest analysis, longest connector history | Native X search for competitor and audience language |
| Best for | Teams that want an audit trail in Git | Marketers who live in chat | Ad research and social signals |
The practical answer for most teams is to pick the tool they already have open. If that is Cursor, this guide is the workflow; the same loop exists for Claude and for Grok. Running Meta as well? The Meta version of this workflow is how to manage Meta Ads from Cursor.
For the product side, the Ryze help center covers what the Ryze agent manages in Google Ads and approvals.
Frequently asked questions
Can I manage Google Ads from Cursor?
Can Cursor actually change my Google Ads account?
What is the weekly workflow for running Google Ads in Cursor?
Do I need to code to manage Google Ads from Cursor?
Show 8 more questionsShow fewer questions
Can Cursor run the Google Ads loop on a schedule?
Is it safe to let the Cursor Agent touch a live account?
Which prompt should I run first?
How does Cursor compare to Claude for Google Ads?
Can Cursor manage Performance Max campaigns?
Can Cursor do Google Ads keyword research?
What does it cost to manage Google Ads from Cursor?
Where does an autopilot fit if I already run this loop in Cursor?
Related guides
How to Connect Cursor to Google Ads
The 2-minute mcp.json setup, five routes ranked.
15 Cursor Skills for Google Ads
The SKILL.md files every step of this loop runs on.
How to Manage Meta Ads from Cursor
The same weekly loop for creative, frequency and placements.
Top 10 AI Tools for Google Ads Management
When you want execution, not just analysis — the tools compared.

