A paid ads agent that earns its keep daily.
Every morning at 8am your agent reads the last 24 hours of Meta spend, flags ad sets burning budget with no return, identifies the creatives carrying the account, and proposes reallocations — all paused-by-default until you approve. You wake up to a one-page digest, not a dashboard.
What you’ll need
- A BrandMov account with an MCP key (sign up free)
- Meta OAuth connected so the agent can read insights and write budgets (connect in dashboard)
- An MCP client: Claude Desktop, Cursor, Cline, or a scheduled runner like n8n
- Your account’s spend rules written down once (CPA target, ROAS floor, min daily budget per ad set)
The spend rule is load-bearing
The agent can’t flag “waste” without knowing what good looks like. Pin a short rule once, reference it every run.
My account: DTC supplement brand, AOV $58. Targets: CPA ≤ $32, ROAS ≥ 1.8 over a 7-day window, min ad-set daily budget $20. An ad set is “wasted spend” if 3+ days of spend ≥ $30 with 0 purchases, OR ROAS < 0.8 over 7 days. A winner is ROAS ≥ 2.5 over 7 days at $50+ spend/day. Never touch campaigns taggedbrandorretention— those are mine.
The morning prompt
Schedule this daily at 8am in your MCP runner:
Pull yesterday’s and the last-7-day insights for every active ad set in my Meta account. Apply my pinned spend rule. For each ad set: classify as winner, wasted, or watch. Then propose — do not execute — a reallocation: pause every wasted ad set, raise daily budget on winners by up to 20% (capped at 2x current), leave watch alone. For each proposal include the numbers (spend, purchases, ROAS, CPA) so I can sanity-check. Output: a 1-page digest, then a numbered list of pending changes. Wait for me to reply “apply” before touching anything.
Apply the changes
When you’re happy with the proposal, one word does it:
Apply the changes. Use update_adset for budget changes and status updates. Confirm each change as it lands and tell me the total $/day reallocated.The Friday creative cut
Once a week, the agent does the same exercise at the creative level — not the ad-set level — and tells you which hooks/images to retire and which to scale.
For every active ad in the account, pull 7-day insights. Group by creative (image/video hash). Rank by ROAS. Anything with $40+ spend and ROAS < 1 over 7 days — recommend pausing the ad. Anything with ROAS ≥ 3 at $50+/day — recommend duplicating into 2 fresh ad sets to fight fatigue. Save the top 5 winners to a swipe file called “House winners — week of [today]” so I can reference them when briefing new creative. Don’t apply anything yet.
The tools the agent calls
get_insightsget_campaignsget_adsetsget_adsget_ad_detailsupdate_adsetupdate_adduplicate_adsetswipe_file_createswipe_file_save_adWhat you get
- A 1-page morning digest: spend, ROAS, CPA, # winners, # wasted, $ at risk
- A numbered list of pending changes — each one with the numbers behind it, so you can argue with the agent
- A weekly swipe file of your own winning creatives, ready to brief the next batch from
- Zero auto-applied changes. Every budget move and pause waits on your “apply”
Hard rules baked into the prompt
- Paused-by-default. The agent proposes; you approve. Don’t hand an LLM your budget without a review step.
- Protect named campaigns. Tag your brand, retention, and lifecycle campaigns in Ads Manager and tell the agent to skip them. The rule above does this.
- Cap the budget delta. “Up to 20%, capped at 2x” stops the agent from doubling a winner overnight on a one-day fluke.
- 7-day windows, not 1-day. One bad day is noise. Make decisions on the 7-day view; show yesterday for context.
Scheduling it
- Claude Projects: paste the morning prompt into a Project with BrandMov MCP enabled, run it manually each morning. Free.
- n8n / Zapier: schedule trigger → Claude API call with
mcp_servers: [brandmov]. The review-and-apply loop becomes a Slack thread or email. - Cron + Anthropic API: full reference at docs.claude.com/mcp-connector.
Google & TikTok
BrandMov MCP is Meta-only today. Google Ads and TikTok Ads tools are on the roadmap — the same prompt structure (read insights → classify → propose → apply) will plug straight in once the connectors land. If you run all three today, this workflow takes Meta off your morning; the others stay manual until then.
Cost
Roughly 2–5 cents per morning run on Claude Sonnet via the API — the heavy reads hit BrandMov, not the model. A month is under a dollar. Budget it against the first wasted ad set the agent catches; usually pays for itself the first week.