How to Manage Meta Ads from Cursor: The Full Workflow (2026)
You can run a Meta Ads account from Cursor: connect it over MCP, give the Agent a weekly loop of creative, frequency and budget checks, 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 $20K–$150K 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 Meta Ads account — but only through a write tool you approve.
- 1Creative rotationFlags fatigued ads, drafts the next five briefs, pauses the urgent ones
Connector tool: runRawInsights → runGraphWrite
Changes the account?: Yes, with approval
- 2Budgets by funnel stageClassifies TOFU / MOFU / BOFU, moves budget to the stage that converts
Connector tool: runRawInsights → runGraphWrite
Changes the account?: Yes, with approval
- 3PlacementsFinds placements whose spend share is twice their conversion share, excludes them
Connector tool: runRawInsights → runGraphWrite
Changes the account?: Yes, with approval
- 4Frequency and saturationAudits ad sets against objective-specific caps, estimates wasted impressions
Connector tool: runRawInsights
Changes the account?: No — diagnosis
- 5AudiencesRefreshes stale lookalikes, expands interests, finds overlap
Connector tool: runRawInsights, runGraphRead
Changes the account?: Yes, with approval (new ad sets)
- 6Ad copyWrites eight one-variable variants of the winning copy to a file
Connector tool: listCreatives, getCreative
Changes the account?: No — you paste
- 7Competitor researchAd Library scan: format mix, hooks, refresh rate
Connector tool: searchAdLibrary
Changes the account?: No
- 8ReportingWeekly digest, creative scorecard, audience insights — written to reports/
Connector tool: getAccountSummary, runRawInsights
Changes the account?: No
| # | Area | What the Agent does | Connector tool | Changes the account? |
|---|---|---|---|---|
| 1 | Creative rotation | Flags fatigued ads, drafts the next five briefs, pauses the urgent ones | runRawInsights → runGraphWrite | Yes, with approval |
| 2 | Budgets by funnel stage | Classifies TOFU / MOFU / BOFU, moves budget to the stage that converts | runRawInsights → runGraphWrite | Yes, with approval |
| 3 | Placements | Finds placements whose spend share is twice their conversion share, excludes them | runRawInsights → runGraphWrite | Yes, with approval |
| 4 | Frequency and saturation | Audits ad sets against objective-specific caps, estimates wasted impressions | runRawInsights | No — diagnosis |
| 5 | Audiences | Refreshes stale lookalikes, expands interests, finds overlap | runRawInsights, runGraphRead | Yes, with approval (new ad sets) |
| 6 | Ad copy | Writes eight one-variable variants of the winning copy to a file | listCreatives, getCreative | No — you paste |
| 7 | Competitor research | Ad Library scan: format mix, hooks, refresh rate | searchAdLibrary | No |
| 8 | Reporting | Weekly digest, creative scorecard, audience insights — written to reports/ | getAccountSummary, runRawInsights | No |
Rows 1 to 3 are the management loop; rows 4 to 8 feed it. On Meta the loop is creative-led — the algorithm does the bidding, so the levers you actually pull are what runs, where it runs and how much it gets.
The short answer: add the Meta Ads MCP server to .cursor/mcp.json, install the 15 Cursor skills for Meta Ads, and run them on a weekly schedule — digest Monday, creative fatigue Tuesday, frequency and placements Wednesday, changes Thursday, scorecard 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 Meta 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 sign-in and Meta authorization, needs no developer app, 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 12 Meta Ads tools (plus Google Ads, TikTok, GA4, Search Console and Shopify toolsets on the same URL). Toggle it on if it is grey.
Sign in and authorize Meta
Cursor opens the sign-in page in the browser. Connect Meta and tick the ad accounts and Pages the Agent should see in Meta's permission dialog. This uses the official Marketing API, so nothing runs on your personal profile and the account is not flagged for automation.
Add one rule
Create .cursor/rules/meta-ads.mdc with the facts every prompt needs: the ad account ID, the attribution window you report on (7-day click, 1-day view, or both), the conversion event that counts, the target CPA or ROAS, and three standing orders — never delete, always pause; never touch an ad set inside its learning phase; 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: /creative-fatigue, /weekly-digest, /funnel-budget and so on.
Test with a read
Ask the Agent for a 30-day summary. Approve the getAccountSummary call when Cursor asks. If ROAS matches Ads Manager under the attribution window in your rule, you are connected.
Self-hosting is possible with an open-source Meta Ads MCP server as a stdio entry; it needs a reviewed Meta developer app and a long-lived token. The five routes are ranked in how to connect Cursor to Meta Ads.
Step 2: the weekly operating loop
Meta accounts fail gradually: creative decays, frequency creeps, one placement quietly eats a third of the budget. The defense is the same five checks every week, in the same order, with the results written down. Each row is one slash command and about ten minutes, most of it reading the output.
Monday
- Job
- Performance digest vs last week
- Skill
- /weekly-digest
- Output file
- reports/digest-{date}.md
- Writes to the account?
- No
Tuesday
- Job
- Creative fatigue: CTR down >20% from peak, frequency >3
- Skill
- /creative-fatigue
- Output file
- reports/fatigue-{date}.csv
- Writes to the account?
- Thursday, with approval
Wednesday
- Job
- Frequency caps, CPM anomalies, placement money pits
- Skill
- /frequency-audit, /cpm-anomaly, /placement-analyzer
- Output file
- reports/diagnosis-{date}.md
- Writes to the account?
- No
Thursday
- Job
- Apply: pause fatigued ads, move budget between funnel stages, exclude placements
- Skill
- /funnel-budget + runGraphWrite
- Output file
- changes/{date}.md
- Writes to the account?
- Yes, with approval
Friday
- Job
- Creative scorecard and next-sprint briefs
- Skill
- /creative-scorecard, /creative-briefs
- Output file
- reports/scorecard-{date}.md, briefs/{date}.md
- Writes to the account?
- No
Monthly
- Job
- Audience overlap, lookalike refresh, interest expansion, competitor Ad Library, ROAS by placement
- Skill
- /audience-overlap, /lookalike-refresh, /interest-expander, /competitor-ad-library, /roas-by-placement
- 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 | /weekly-digest | reports/digest-{date}.md | No |
| Tuesday | Creative fatigue: CTR down >20% from peak, frequency >3 | /creative-fatigue | reports/fatigue-{date}.csv | Thursday, with approval |
| Wednesday | Frequency caps, CPM anomalies, placement money pits | /frequency-audit, /cpm-anomaly, /placement-analyzer | reports/diagnosis-{date}.md | No |
| Thursday | Apply: pause fatigued ads, move budget between funnel stages, exclude placements | /funnel-budget + runGraphWrite | changes/{date}.md | Yes, with approval |
| Friday | Creative scorecard and next-sprint briefs | /creative-scorecard, /creative-briefs | reports/scorecard-{date}.md, briefs/{date}.md | No |
| Monthly | Audience overlap, lookalike refresh, interest expansion, competitor Ad Library, ROAS by placement | /audience-overlap, /lookalike-refresh, /interest-expander, /competitor-ad-library, /roas-by-placement | reports/monthly-{month}.md | No |
Two things make the loop stick. The outputs are files, so Thursday's change run reads Tuesday's fatigue list rather than re-deriving it, and Friday's briefs feed the designers directly. And the changes/ folder is an audit trail: what was paused, what budget moved, why, and what CPA did afterwards — which is what you need when someone asks two weeks later why ROAS moved.
Step 3: diagnose — the three prompts that find the money
Run diagnostics before touching anything. On Meta the three that matter are creative fatigue, frequency and placements; between them they explain most CPA drift. These are the Tuesday and Wednesday jobs; the full skill files have the complete instructions.
Creative fatigue (Tuesday)
Frequency and CPM (Wednesday)
Placements (Wednesday)
State the attribution window in every reporting prompt or put it in the rule; it is the reason numbers do not match Ads Manager nine times out of ten. And read every diagnosis bottom-up: the ranked list is the headline, the evidence lines tell you whether the Agent reasoned from your numbers.
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, and nothing touches an ad set inside its learning phase.
Pause the fatigued ads
Move budget between funnel stages
Exclude the money-pit placements
Never allowlist runGraphWrite or runGraphDelete in Auto-review mode. Reads can run without a click. Writes should always show you the list. Deletes are permanent in Meta Ads, 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
- Pauses fatigued ads and moves budget to winners
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 creative scorecard is a CSV the design team can sort, the briefs are a page they can work from. The Monday and Friday jobs:
Weekly digest (Monday)
Creative scorecard (Friday)
Next-sprint briefs (Friday)
One habit worth building: ask the Agent to append a one-line result to changes/ two weeks after every Thursday change (“paused 4 fatigued ads 2026-09-04: account CTR +11%, CPA -8%”). 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 fatigue 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 Meta Business SDK. Needs a reviewed developer app and a long-lived 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 — creative rotation, budgets, placements, 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 more attention than most Meta 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. Deletes are permanent in Meta Ads. The connector's delete tool only runs on an item-by-item approved list; the rule should say the Agent never asks for it.
- Respect the learning phase. No edits to an ad set within seven days of a significant change, or the reset costs more than the fix. Make the Agent check edit history before proposing.
- 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 move in steps. A 35% funnel shift is three Thursdays, not one.
- Name the attribution window. 7-day click vs 1-day view is the reason ROAS does not match Ads Manager. Put it in the rule.
- 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 Meta 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
- Scorecards and briefs as files the design team works from
- Claude
- Deepest analysis, longest connector history
- Grok
- Native X search for how audiences react to ads
Best for
- Cursor
- Teams that want an audit trail in Git
- Claude
- Marketers who live in chat
- Grok
- Creative 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 | Scorecards and briefs as files the design team works from | Deepest analysis, longest connector history | Native X search for how audiences react to ads |
| Best for | Teams that want an audit trail in Git | Marketers who live in chat | Creative 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 Google as well? The Google version of this workflow is how to manage Google Ads from Cursor.
For the product side, the Ryze help center covers what the Ryze agent manages in Meta ads and approvals.
Frequently asked questions
Can I manage Meta Ads from Cursor?
Can Cursor actually change my Meta Ads account?
Will running Meta Ads from Cursor get my account flagged?
What is the weekly workflow for running Meta Ads in Cursor?
Show 8 more questionsShow fewer questions
Do I need to code to manage Meta Ads from Cursor?
Can Cursor run the Meta 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 Meta Ads?
Can Cursor research competitors' Meta ads?
What does it cost to manage Meta Ads from Cursor?
Where does an autopilot fit if I already run this loop in Cursor?
Related guides
How to Connect Cursor to Meta Ads
The 2-minute mcp.json setup, five routes ranked.
15 Cursor Skills for Meta Ads
The SKILL.md files every step of this loop runs on.
How to Manage Google Ads from Cursor
The same weekly loop for search terms, bids and budgets.
Top 10 AI Tools for Meta Ads Management
When you want execution, not just analysis — the tools compared.

