Ad platform
Integrate Meta Ads
Connect a Meta (Facebook and Instagram) ad account over Meta OAuth. The first authorization is read-only: the operator reads your campaigns, ad sets, and spend, then drafts changes you approve. Meta Ads is live today.
What the integration reads
SpendSignoff links your Meta ad account through Meta’s OAuth login. The connection starts read-only — it reads the campaign, ad set, and ad tree plus recent spend and results so the operator can spot pacing and bid problems. Linking does not change the account.
Reads are ungated and run on every plan. The split between reading and spending is the product: the operator drafts, you approve. A Meta account can stay connected at read level for as long as you want.
Entities you can read and draft on
Meta’s hierarchy is campaign → ad set → ad. The operator reads all three and drafts against these objects via propose_change:
- Campaigns — objective, status, and campaign-level budget where CBO is on.
- Ad sets — daily and lifetime budget, bid strategy, status, and pacing.
- Budgets — ad-set and campaign-budget-optimization budgets, for reallocation.
- Bids — bid cap, cost cap, and ROAS goal where the strategy allows.
- Audiences — read for context; status changes on ad sets are drafted, not edited in place.
- Performance — spend, impressions, clicks, results, and ROAS over the recent windows.
How a change happens
Link the account read-only
Authorize SpendSignoff through Meta OAuth. The grant is read-first and is issued mcp.read and mcp.draft only — the operator reads and proposes, nothing more.
The operator reads structure and spend
It pulls campaigns, ad sets, budgets, and recent results to find an ad set that is over-pacing its budget or a bid cap that is throttling delivery.
It drafts a change
The proposal — say, shifting budget from a stalled ad set to one beating its ROAS goal — lands as a draft with the before → after diff and projected impact. Nothing is live yet.
You approve and push live
You review the draft and run the two-step Approve & push live → Confirm control. Only then does SpendSignoff call the Meta Marketing API, with a signed audit entry and one-click rollback.
Write access stays dormant until you approve
mcp.approve scope issued to the AI.Not yet supported
V1 keeps the Meta surface tight. These are out of scope for now:
- Creating new campaigns, ad sets, or ads — drafts edit existing structure.
- Creative editing — ad copy, images, and video assets are read-only.
- Custom and lookalike audience building as an automated draft source.
- Pixel and Conversions API configuration — read for results context, not editable.
Next
Google Ads
The other platform live today: read-first OAuth, drafted budget and bid changes.