Before you run a single prompt in this lesson, you need Claude wired into Meta. Half the questions in the community right now come from students who got the install wrong because they confused two completely different Meta artifacts. Let's clear that up first.
On April 29, 2026, Meta released both at the same time. They have similar names. They are NOT the same product.
https://mcp.facebook.com/ads. No install. You point your AI tool at this URL, log into Facebook once, you're connected forever. This is what Claude Desktop and Claude Code (the AI you talk to) use.
npm i -g @meta/ads-cli and call it from bash scripts, cron jobs, or Python pipelines. Useful if you're building backend automation outside of an AI chat. Most students never need this.
๐ก The translation: When somebody says "Meta CLI" they usually mean the MCP (because they're calling the install command "the CLI"). Officially Meta calls the URL approach the MCP server and the binary approach the CLI. For everything in this lesson, the MCP is the right answer.
Claude Desktop is the standalone Claude app on Mac/Windows. Click โ click โ chat. No terminal, no VS Code, no command lines anywhere.
META MCP ยท URL: https://mcp.facebook.com/adsClaude Code is the agent that lives in your terminal. Most AI Advertiser students run it inside VS Code's integrated terminal or as a VS Code panel. Two ways to install โ pick whichever feels less scary.
claudeInstall the official Meta Ads MCP for me. It's an HTTP transport server at https://mcp.facebook.com/ads โ please run the "claude mcp add" command with the http transport. After it's installed, test the connection by listing my Facebook ad accounts and walk me through the OAuth approval flow step by step.
$ claude mcp add --transport http meta-ads "https://mcp.facebook.com/ads"
claude and hit enterโ ๏ธ The setup is per-app, not per-account. If you install it in Claude Desktop and ALSO use VS Code's Claude Code, you'll authorize Facebook OAuth twice โ once for each app. That's normal. After those two one-time approvals, both apps stay connected independently.
| Your situation | Use |
|---|---|
| I mostly chat with Claude in the desktop app (not coding) | Path A โ Claude Desktop |
| I use VS Code daily and want everything in one place | Path B Way 1 |
| I'm following the rest of this 7-day lesson | Path B Way 1 |
| Way 1 keeps failing on my machine | Path B Way 2 (manual) |
| I want to run Meta operations from Python or a cron job | The standalone CLI binary (advanced, not in this lesson) |
No. Pick one based on your workflow. The MCP works the same in either. Most students who go past $5k/mo end up using both โ Desktop for quick chats, VS Code for the daily ops grind.
No. That's the standalone CLI binary for scripts and cron jobs. For everything in this course you want the MCP (the URL approach). Installing the CLI doesn't connect Claude to Meta โ those are two different products that happened to ship the same day.
No. That was the OLD token-based API (which is why we killed the old lesson 5.3). The MCP uses Meta-managed OAuth tokens that are refreshed server-side. You don't see them, you don't refresh them, they don't expire on you.
Yes โ but it's per-Facebook-profile. When you OAuth, you grant access to whatever ad accounts that profile can see (your own + any client BMs that gave you access). To use a totally different personal profile, sign out and re-authorize.
Claude Desktop: Settings โ Connectors โ you'll see "META MCP" with a green dot. ยท Claude Code: run claude mcp list in your terminal โ meta-ads should appear in the output.
No. None of it. That's what made the old setup miserable. The official MCP bypasses the entire Dev App world โ you just OAuth as yourself like you're logging into any other Facebook-connected app.
Two common causes: (1) you installed it in the WRONG Claude โ e.g. you set it up in Claude Desktop but you're chatting in VS Code. The MCP is per-app. (2) Claude doesn't know to use it yet โ just say in chat: "List your available MCP tools โ I want to confirm meta-ads is loaded." If it's listed, your next Meta prompt will trigger it. If it's not, the install didn't complete.
โ ๏ธ Don't combine install paths without a reason. Some students panic, install Path A, then ALSO run Path B's manual command "just to be safe." This doesn't break anything but it creates two separately-authorized connections you have to manage. Pick one path, finish it, test it works, move on.
Once you confirm Claude can list your ad accounts, you're ready. The rest of this lesson assumes the MCP is live. Now let's get into the actual 7-day routine.
7 days, 7 themes. Stack them and you have an operator routine that scales with you.
๐ก Read this once, then bookmark it. You'll come back here every morning. The prompts are designed to copy โ paste โ tweak the account ID โ run. That's it. The whole point is to remove decision fatigue.
Pull last 30 days of performance for ad account [ACCOUNT_ID]. Build me a table sorted by ROAS descending with these columns: campaign name, status, spend, CPA, ROAS, CTR, frequency, hook rate. Then below the table give me 3 lists: 1. SCALE โ campaigns with ROAS above target and frequency under 2.5 2. KILL โ campaigns with CPA above target after $100+ spend OR ROAS below 1.0 3. INVESTIGATE โ campaigns with high spend but unclear performance (frequency above 3, CTR dropping, etc.) Be opinionated. Don't just dump data โ tell me what to do.
After Claude gives you the kill list, drill into the WHY before executing. Bad audience? Creative fatigue? Landing page mismatch? Send this:
For each campaign in the KILL list, dig deeper. Look at: creative-level CTR breakdown, audience overlap with my scaling campaigns, day-by-day performance trend, and frequency curve. Tell me whether the campaign died because of creative fatigue, audience saturation, landing page mismatch, or just a bad concept. Be specific.
A clear list of campaigns to kill, scale, or investigate โ with the reasoning behind each call. You walk into Tuesday knowing what creative concepts are dying and need replacement.
Don't just take Claude's KILL recommendations and pause everything immediately. Read the WHY first. If it's creative fatigue, the audience is still good โ keep that ad set, just swap creative. Killing prematurely throws away learning.
Look at the top 5 ROAS ads in account [ACCOUNT_ID] from the last 60 days. Pull their full ad copy (primary text, headline, description) and analyze what they have in common: hook structure, emotional driver (curiosity / fear / aspiration / proof), CTA style, length, format (single image / carousel / video). Give me a 'winning ad DNA' summary I can use to brief new creative.
Based on the winning ad DNA you just identified, write 15 new ad variations for [CLIENT_NAME / OFFER_NAME]. Split them like this: - 5 hooks using the SAME proven structure but new angles - 5 hooks testing a NEW emotional driver (whichever wasn't represented in the winners) - 5 hooks that are deliberately weird/contrarian to break category norms Each variation gives me: primary text, headline (under 40 chars), and description. Match the client's voice โ casual, no AI patterns, no em dashes, no triple structures. Write like a real human typing in IG comments.
For each of the 15 ad copy variations, write a 1-line creative brief that I can hand to a designer or feed into image gen. Specify: format (static / carousel / video), main visual element, mood, text overlay (if any), and one reference style (e.g. 'Hormozi school dark + bold text', 'soft pastel UGC', 'iPhone screenshot style', 'meme/contrarian'). Keep each brief under 30 words.
15 fresh ad copy variations + 15 creative briefs ready to hand off. You're not testing 2 ads per week like an agency on training wheels โ you're testing 15.
Don't skip Step 1. Generating creative without mining your winners is the #1 reason AI-written ads underperform. The DNA pass turns Claude from a random idea generator into a pattern-matched copywriter.
Build a new campaign in account [ACCOUNT_ID] using this exact structure:
CAMPAIGN
- Name: [#XXX] [PAGE-A] [LEADS] [TEST-COLD] [1-3-1 ABO] [BATCH-MAY-15] โ 05/15
- Objective: leads (or sales for ecom)
- Buying type: AUCTION
- Status: PAUSED
AD SETS (create 3, duplicates of each other)
- Daily budget: $50 each
- Audience: [SPECIFY: lookalike / interest / broad]
- Placement: Advantage+ placements
- Optimization: leads (or purchase)
ADS (create 5 in each ad set, same 5 across all 3 ad sets)
- Use the 5 BEST variations from yesterday's batch
- Use Page ID [PAGE_ID] and Pixel ID [PIXEL_ID]
- Apply UTM parameters per Brez convention: utm_source=meta&utm_medium={{placement}}&utm_campaign={{campaign.name}}&utm_content={{adset.name}}&utm_term={{ad.name}}
Show me the structure preview before creating. Build everything in PAUSED state. I'll activate manually after QA.
Before I activate, run a QA pass on the campaign you just built. Check: budgets sum correctly, all ads have the right Page + Pixel, UTM parameters are applied at the ad level, optimization event matches the objective, audience size is between 500K and 5M (warm flag if outside), no typos in copy, headline length under 40 chars. Flag anything wrong. Don't activate yet.
QA passed. Pull the trigger:
QA looks good. Activate the campaign and all ad sets you just built. Then confirm back: campaign ID, ad set IDs, and that all are ACTIVE.
New campaign live with 3 ad sets ร 5 ads = 15 active ad creatives testing. Total daily spend: $150. By Thursday morning you'll have ~24 hours of data to act on.
โ ๏ธ Never let Claude activate without QA. The MCP can build campaigns in seconds. It can also activate $5,000/day campaigns in seconds. Always run the QA prompt and read the preview before saying go.
Look at the campaign launched on Wednesday in account [ACCOUNT_ID]. For each ad with at least $30 in spend, check: CPA vs target (target is $XX), ROAS vs target (target is X.X), hook rate, CTR. List me every underperformer and recommend whether to pause it. Show me the list first and wait for my confirmation before pausing anything.
Now show me the winners โ any ad with CPA below target and ROAS above target after at least $30 spend. For each winner: duplicate the ad set with 2x the budget into a new campaign with the same structure but PAUSED. This is my scale stack โ I'll activate manually tomorrow once today's data fully confirms the win. Never auto-scale.
Check all my currently active scaling campaigns in account [ACCOUNT_ID]. For each one, look at frequency over the last 7 days. Flag any ad set where frequency is above 2.8 OR where CTR has dropped more than 25% week-over-week. These are showing fatigue โ recommend either refreshing creative or pausing.
Losers paused. Winners queued at 2x budget for tomorrow's activation. Fatigue signals caught before they tank ROAS. The account is leaner and more profitable than yesterday.
Don't scale on day 1. New campaigns need 48-72 hours to leave the learning phase. Activating the 2x duplicates the same day you spot a winner often kills the original campaign's pacing. Patience compounds.
Generate a client-ready weekly report for [CLIENT_NAME] (account [ACCOUNT_ID]) covering the last 7 days. Format it as plain markdown I can paste into Loom notes or an email. Structure: 1. HEADLINE METRICS โ spend, leads/sales, CPA, ROAS, vs last week (with % change) 2. THE STORY โ 2-3 sentences explaining what happened this week in plain English (not jargon) 3. WHAT WORKED โ 2-3 specific wins (top ad concept, audience that hit, scaling move) 4. WHAT DIDN'T โ 1-2 misses and what we learned 5. NEXT WEEK'S MOVE โ 2-3 concrete actions we're taking based on this week's data Write it like a smart operator updating a partner โ direct, no fluff, no apologizing for losses. Numbers first, story second.
Drop the report into Loom notes, screen-record yourself walking through it for 3-5 minutes. Send the Loom link. Clients pay for the feeling that you understand their business, not the dashboard itself.
One Loom + report sent every Friday before EOD. Clients stop ghosting you, retention goes from 4 months to 12+, and they refer you to their network unprompted.
๐ก Make this non-negotiable. The agencies that lose clients are the ones that go silent for 2 weeks and only show up to ask for an invoice approval. A weekly Friday Loom is the cheapest insurance policy in your business.
I want a competitor sweep for [CLIENT_NIICHE]. Pull the top 5 advertisers in this niche from the Meta Ad Library (search for [SEED_KEYWORDS]). For each one: how many ads they have running, the most common hook angle, the format mix (video vs static vs carousel), the offer they're leading with, and any pricing they're showing publicly. End with: 'here are 3 angles they're using that we're NOT testing โ recommend one we should adapt for next week.'
Scrape Reddit, YouTube comments, and Amazon reviews for [CLIENT_NIICHE / PRODUCT]. Pull 20-30 quotes that include emotional language about the problem we solve. Group them into 3 buckets: PAIN (what hurts), DESIRE (what they want), OBJECTION (why they haven't bought yet). I want to use this as raw material for next week's hooks.
Take everything from today (competitor sweep + VOC mining) and synthesize: what's the ONE hypothesis we should test next week that nobody else in this market is testing? Write it as a tweet-length statement I can put at the top of Monday's plan.
Fresh competitor intel + 20-30 VOC quotes + one sharp hypothesis. Monday no longer starts cold โ you walk in with a thesis to validate.
Run a retrospective on the last 7 days for account [ACCOUNT_ID]. Tell me: 1. What was the single biggest win and what made it work? 2. What was the single biggest miss and what would I do differently? 3. What SOP or workflow tweak would have made this week 20% faster? 4. What's one assumption about this account I held on Monday that I no longer believe on Sunday? Be brutal. No coddling. I want the operator-level read, not a participation trophy.
If the retrospective surfaced a workflow improvement, capture it now while it's fresh:
Based on this week's retrospective, write a 3-5 line addendum to my operator SOP that I can add under the relevant day. Make it specific, actionable, and dated.
Close the laptop. Go outside. The system runs while you're not at the keyboard. Operators who can't unplug burn out at $15k/mo and never make it to $50k. Build the business that lets you actually live.
One sharper week ahead. Your SOPs get a little better. Your hypotheses get a little better. Over 52 Sundays this is the difference between a $10k/mo operator and a $100k/mo operator running 12 accounts in 4 hours a day.
Look at the structure of this week. Monday looks at the past. Tuesday-Wednesday builds the future. Thursday adjusts. Friday communicates. Saturday spies. Sunday compounds.
Every day has one job. You're not multitasking โ you're stacking single-purpose 20-45 minute blocks across a week. That's why a solo operator with this workflow runs circles around a 5-person team without one.
The MCP didn't make you 10x faster. The MCP plus a structured weekly system made you 10x faster. Most students get the tool, skip the system, and wonder why nothing changes.
๐ก One client first. Run this routine for ONE account for 4 weeks straight before adding a second client. The compounding effect doesn't show up in week 1. It shows up in week 4 when you realize you're doing it on autopilot and have hours left in the day.
Bookmark this page. Run Monday's prompts tomorrow morning. The first week feels mechanical because you're learning the prompts. By week 3 you'll modify them for your niche. By week 6 you'll have your own personalized weekly playbook.
Next: Lesson 5.17 โ Scaling This System Across Multiple Clients (coming soon).