HeyOz HeyOz

Muse for Meta Ads: The Full Setup

Written By
Ahad ShamsAhad Shams
hero=section

This is the full setup: Meta's own agent, reading your Meta ad account, reporting to you on WhatsApp before you're out of bed.

It takes about an hour to connect and brief. After that, seven jobs run on their own — a morning digest, an Ad Library sweep, fatigue, leaks, pacing, approval-gated kills, and a goal it keeps you honest against.

One thing up front. Muse reads, watches and nags. It does not make ads. When it tells you a creative is dying, the replacement still has to come from somewhere — that's covered in Part 6.

Read Part 2 before you connect anything. It's short, and it's the part that keeps your ad account safe.

Muse is Meta's personal AI agent, launched on 8 September 2026 and powered by Meta's Muse Spark model ( Meta ). You message it like a person, in the Muse app, on the web, or directly inside WhatsApp.

It isn't Muse Image or Muse Spark inside Advantage+. Those are ad-product features. This is the agent, and it works for you rather than for Meta's delivery system.

Four things about it matter for running an ad account:

  • It has its own computer. Each user gets Muse Secure VM, a dedicated cloud machine with its own browser. It can open public pages like the Ad Library while your laptop is closed, and you can watch its browser view.
  • It works in the background. It turns a goal into a plan, keeps working after you close the app, and comes back when something changes or it needs approval ().
  • It gates actions. A separate Sentinel agent controls internet access and can hold an action until you approve it. Every action lands in an activity log.
  • It connects to things. Built-in connectors cover email, calendar and retail. For anything else, you can ask Muse to build a custom connector, and it stores the credentials in its Secure Credentials Store ().

That last point is the whole trick. Muse has no Meta Ads connector out of the box. You give it one.

Five minutes in settings before you connect an ad account. Do these in order.

  • Availability — Where: App Store, Google Play, muse.ai · Set it to: Check your region · Why: Muse is live in the US and Canada only right now
  • Plan — Where: Settings → Plan · Set it to: Start free · Why: Free has a weekly limit; the $20 plan raises it to 500M tokens a week ()
  • Permissions — Where: Settings → Permissions · Set it to: Always ask · Why: The default asks before writes. Always ask is stricter; loosen it after two weeks
  • Training — Where: Settings → Data controls · Set it to: Untick "help improve our AI models" · Why: Your ad data stays out of model training ()
  • Connectors — Where: Settings → Connectors · Set it to: Retrieve-only where offered · Why: Read access is all the first four jobs need

Two things worth knowing so they don't surprise you.

Your Facebook, Instagram and Threads accounts connect automatically if they share an Accounts Centre. Those are your organic profiles, not your ad account. Connecting the ad account is Part 3.

Meta says Muse conversations and VM data aren't shared with its advertising systems. Your account data doesn't feed your competitors' targeting.

There are three ways to give Muse your ad account. Pick one; you can switch later.

  • A. Meta's ads MCP server — Setup time: 30–60 min · Access: Read and write, OAuth · Best for: The official path, once your account has access
  • B. Hosted MCP (Ryze) — Setup time: 5 min · Access: Read, write behind approvals, OAuth · Best for: Fastest start; also reads the Ad Library and GA4
  • C. Marketing API, read-only token — Setup time: 15 min · Access: Read only, by design · Best for: Maximum control while you build trust

My recommendation: start on B or C for two weeks, read-only. Move to A when you want Muse to act, not just report.

Route A — Meta's own ads MCP server

Meta runs a first-party MCP server at

https://mcp.facebook.com/ads
. It reads reporting, manages campaigns and works catalogs through one sanctioned endpoint ( Meta for Developers ).

  1. At developers.facebook.com/apps, create or open an app and add the "Create & manage ads with ads MCP server" use case.
  2. Note the App ID. Meta doesn't support automatic client registration, so the connection needs it.
  3. Send Muse this:
  1. Add the redirect URL Muse gives you under Facebook Login for Business in your app settings.
  2. Approve the permissions. ads_read is enough for the first four jobs.

Meta is rolling MCP access out in phases. If your Business account isn't enabled yet, the handshake fails — use B or C and try again later.

Route B — Hosted MCP, one message

Ryze documents this route for Muse specifically ( Ryze ). Create a free account, connect Meta Ads there with a login that has advertiser or admin access, then send Muse:

Approve the link. Done.

Route C — Marketing API, read-only

  1. Meta Business Settings → Users → System users → Add. Assign your ad account with view-only access.
  2. Generate a token with ads_read only. No ads_management.
  3. Send Muse:

The first test, whichever route

Check the numbers against Ads Manager. If they match, you're connected. If they don't, stop here and fix it — every job after this trusts these numbers.

Muse tracks goals from what you tell it, and it raises them unprompted when things drift. Send this once, filled in, and it becomes the reference for every job below.

The last two blocks matter most. Muse's own permission settings are the lock; this is you telling it where the lock is, in plain words it will repeat back to you.

Then check it took: ask "What goals are you tracking for me?" It should read the brief back.

Six of the seven only read. One asks before it touches anything. Send each prompt once; Muse saves it as a recurring task.

  • 1 — Job: Morning digest · When: Daily, 7am · Needs: Read · Gate: None
  • 2 — Job: Ad Library sweep · When: Mondays, 6am · Needs: Public browsing · Gate: None
  • 3 — Job: Fatigue watch · When: Daily, 7:30am · Needs: Read · Gate: None
  • 4 — Job: Leak finder · When: Daily, 8am · Needs: Read · Gate: None
  • 5 — Job: Pacing check · When: Daily, 8:30am · Needs: Read · Gate: Silent unless off
  • 6 — Job: Approval-gated kills · When: Daily, 9am · Needs: Write (Route A or B) · Gate: Your tap, every time
  • 7 — Job: Goal keeper · When: Mondays, 9am · Needs: Read · Gate: None

1. Morning digest

2. Ad Library sweep

The Ad Library is a public page, so Muse browses it from its own VM with no account risk.

3. Fatigue watch

A flagged ad needs a replacement on the same angle before it dies. Part 6 covers where that comes from.

4. Leak finder

5. Pacing check

6. Approval-gated kills

This is the only job that writes. It needs Route A or B, and it never runs on a read-only token.

The three-a-day cap is a circuit breaker. If a threshold is set wrong, you lose three ads, not the account.

7. Goal keeper

This is the job that feels different from every other agent. You scheduled the other six. This one exists to bring the goal back up when you've stopped thinking about it.

Muse tells you what's dying and what's missing. It can't make the replacement — and the replacement is what decides whether any of this pays.

Two moments in the system end with "you need a new ad":

  • Job 3 flags fatigue. A winner has maybe a week left. You need a fresh variant of the same angle before it rolls over, not after.
  • Job 2 finds an open angle. Nobody in your category is running it. You need a creative that claims it while it's still open.

If your creative process takes a week, both moments are wasted. The winner dies first; the angle gets taken first. The research runs at agent speed and the production runs at human speed, so the whole loop runs at human speed.

That's the gap HeyOz closes. Paste your product URL and it pulls your brand — typeface, colours, product imagery. Give it the brief Muse writes. It renders the ad in your actual brand, as video, static, UGC-style or carousel, the same morning.

Muse finds the moment; HeyOz fills it. Send this once so every flag arrives with a brief attached:

Then open HeyOz , paste the brief against your product, and generate the variants. Launch the best two. Muse picks them up in tomorrow's digest.

That's the loop closed. The agent that watches your account and the engine that feeds it, with you deciding in between.

Don't send all seven prompts tonight. Free-tier limits are weekly and Meta doesn't publish per-task costs, so learn your burn rate on the cheap jobs first.

  • 1 — Turn on: Settings, connection, goal brief, jobs 1 and 5 · Check before moving on: Digest numbers match Ads Manager three days running
  • 2 — Turn on: Jobs 2, 3 and 4, plus the brief prompt from Part 6 · Check before moving on: You acted on at least one flag or brief
  • 3 — Turn on: Job 7, then job 6 on Route A or B · Check before moving on: Every kill request was one you'd have made yourself

Run job 6 for two full weeks with Permissions on Always ask before you consider loosening anything. If Muse ever asks to pause an ad you'd have kept, fix the rule in the goal brief first.

  • Route A OAuth fails — Likely cause: Your Business account isn't in Meta's MCP rollout yet, or the redirect URL isn't in your app · Fix: Add the redirect URL Muse gave you; otherwise use Route B or C for now
  • Digest numbers don't match Ads Manager — Likely cause: Different attribution window or time zone · Fix: Tell Muse your attribution setting and account time zone in the goal brief
  • Muse asks for your token in chat — Likely cause: The connector prompt didn't specify the secure prompt · Fix: Don't paste it. Say "use your secure credential prompt"
  • Ad Library sweep returns nothing — Likely cause: Brand name instead of the exact Facebook Page name, or the wrong country filter · Fix: Use the Page name exactly as it appears; match the geo filter
  • Digests stop mid-week — Likely cause: Weekly free-tier limit reached · Fix: Move jobs 2 and 7 to weekly only, or upgrade
  • Job 6 asks to pause a test cell — Likely cause: The test's minimum spend isn't in the goal brief · Fix: Add it, and name the ads in the test
  • It messages every day with nothing to say — Likely cause: The prompt lacks the "say nothing if none" line · Fix: Resend the job with it

And one rule that outranks all of these: if Muse ever changes the ad account without asking, disconnect the connector in Settings, check the activity log, and set Permissions back to Always ask.

After three weeks: a digest before you're up, a competitor sweep every Monday, fatigue and leaks caught while they're cheap, pacing that only speaks when it's off, and a goal that nags you back on track.

What it doesn't get you: judgement, or new ads. Muse watches your account and tells you exactly what's missing. HeyOz makes it — in your brand, the same day — so the moment Muse finds is a moment you actually use.

Meta's agent watches. HeyOz makes. You decide.

Sources

About the author

Ahad Shams

Ahad Shams is the Founder of HeyOz, an all-in-one ads and content platform built for founders and small teams. He has worked across consumer goods and technology, with experience spanning Fortune 100 companies such as Reckitt Benckiser and Apple. Ahad is a third-time founder; his previous ventures include a WebXR game engine and Moemate, a consumer AI startup that scaled to over 6 million users. HeyOz was born from firsthand experience scaling consumer products and the need for a unified, execution-focused marketing platform.