Meta
Meta ads, read and drafted by your own agent
Connect the ad accounts, point your agent at the workspace, and let it read the numbers and write changes as drafts that wait at the gate.
Meta is in private beta. Read access only.
Also available
Google Ads
What a Google Ads connection gives an AI agent: campaign-level budgets, keywords and assets, a dry run before the gate, and a removal that cannot be undone.
TikTok
What a TikTok connection gives an AI agent: three levels where schedule and targeting live on the ad group, a 30-day reporting window, and drafts at the gate.
What changes when an agent holds the account
- Spend is spread across several ad accounts, and nothing adds them up in one currency without a spreadsheet.
- The ad set holds the budget on one account and the campaign holds it on the next, so no rule about budgets is safe to apply blind.
- Numbers for the last fortnight keep moving, and nobody can say which figure was final when the decision was made.
- Every change is made by hand in a tab, and a week later nobody can say who made it or what it replaced.
- One call returns blended spend and a per-campaign ranking that says whether it is a ranking at all.
- The connection states where budgets attach before anything is drafted, so a change is refused at the gate rather than at the platform.
- A trailing window is refetched on every sync, and every figure carries the day it was read.
- Every change is a change request carrying the state before it and the authority that cleared it.
Illustrative exchange
Illustrative exchange
Illustrative exchange
Objections, answered
We already have a Meta MCP server.
Most of them are a thin wrapper over the API: the same report job, the same paging, the same currency field you have to remember to read, with an agent on top. The difference here is the normalisation underneath — one shape for every platform, ratios computed at read time, and a change that cannot reach an account without passing a gate.
An agent with API access to my ad account is a risk I will not take.
So do not grant it one. A key carries scopes, and reading and drafting are separate from approving. A key that can draft can fill a review queue and nothing else, which is the shape most workspaces hand their agent.
What happens when the platform rejects the change?
The row says so and your live campaigns are untouched. A failed draft keeps its payload, which can be replaced whole and re-validated, so a stopped batch is resumed rather than written again from the start.
See the gate on your own accounts
Every change is written as a draft and held at the gate. Publishing to live accounts is in private beta.
Request early accessThe shape of a Meta account
The account tree is deep, the numbers restate for weeks after the fact, and the same word means different things at different levels: a budget is a campaign field on one account and an ad set field on the next. What a connection is worth is how much of that an agent no longer has to hold in its head.
What connecting Meta gives your agent
A connection is a grant against the Marketing API, held per workspace and scoped to the ad accounts you pick. Once it is in place, Tempio syncs the account tree — campaigns, ad sets, ads and the creatives under them — along with the daily numbers behind each one, and normalises both into the shape every other connected platform lands in: integer minor units with an explicit currency, base counts rather than stored ratios, and one canonical id per entity that a change request can point at.
That normalisation is the part an agent notices. Asking a raw advertising API for last week's spend means submitting a report job, polling it, paging the result and remembering which currency each row is denominated in. Asking a tool layer means one call that answers in the shape the next question needs. Blended KPIs and a per-channel breakdown come back together. Per-campaign rows come back highest spend first, carrying a marker that says whether that order is a true ranking or several currencies laid side by side, so an agent never reports a top spender it cannot actually rank. The account brief comes back as ninety days of context: coverage, totals, a twenty-eight day period set against the one before it, the objective mix, how concentrated spend is, and where return on ad spend and cost per acquisition rank within the account.
Ratios are computed when they are read and never stored, which is the rule that keeps the answers honest. A ratio with a zero denominator is null, not zero: a campaign that has spent money and recorded no conversions has no ROAS at all, and an agent that treats the absence as a zero is reporting a loss that has not happened. The same applies to reach, which Meta reports per campaign per day. Summing it over a fortnight counts the same person more than once, so the tool layer calls it a sum of daily reach rather than an audience size, and an agent quoting it says so.
What the Marketing API exposes, and what it withholds
Meta addresses three levels, and each holds something different. The campaign carries the objective and, when you put it there, the budget. The ad set carries the targeting, the schedule, the optimisation goal, the billing event and a budget of its own. The ad pairs a creative with an identity. Because money can sit at either of the top two levels, the first thing worth knowing about an account is where its budgets actually live, and the connection answers that before anything else is asked of it: every connection carries the operations the platform can express, the levels a budget attaches to, the objectives it accepts, what a removal means, and whether a draft can be dry-run before it is applied.
Two of those answers shape everything else on this page. Meta has no dry run the adapter can use, so a change is checked against the platform's declared capabilities and the account's own shape before it is queued, and the platform's own verdict arrives when the change is applied rather than before. And Meta does not delete. Its removal is an archive — a status change that preserves the entity and its history, and one that can be undone — which makes it the gentlest removal semantics of any platform here and the reason an archived entity keeps showing up in a sweep rather than vanishing from the record.
What the API withholds is mostly time. Insights are asynchronous: a report is a job, not a response, and the answer arrives when the job finishes. Figures for recent days are restated for weeks afterwards, so a number read the morning after is provisional by design. Tempio refetches a trailing window on every sync for exactly that reason, and the freshness stamp on a page is the date the claim behind it was checked rather than the date the page was generated.
What a change to a Meta account looks like as a draft
Nothing an agent decides reaches an ad account directly. A change is written as a change request: one call carries an entire batch, ordered, with each entry naming the earlier entry that creates its parent, so a campaign, the ad set inside it and the ad inside that arrive as three entries in one reviewable group rather than three separate acts that can half-succeed. A batch has a ceiling, and a longer one is refused rather than truncated.
What comes back is the batch, a review link for the whole group, and the authority that cleared it. A batch waiting for a person says so; a batch a rule you wrote cleared on the way in says that instead. Each row carries its place in the run and, once something has cleared it, whether that was a person, a key or a policy. A draft that needs an edit does not have to be thrown away and written again — its payload is replaced whole, which re-validates it, re-stamps the currency from the target account and re-runs the guardrails. A change that has already landed is undone by drafting its exact inverse at the same gate, which means an undo is a change request like any other rather than a rollback happening behind you.
Two details make this safe on Meta specifically. Every create lands paused on the platform, so approving a batch builds structure without spending; starting delivery is a second change through the same gate. And approving is a separate permission from drafting, opt-in when a key is minted, which is why a key handed to an agent can read and draft all day without being able to apply anything.
How Meta's review and pacing meet a change
Approving a change is not a deployment. Meta reviews ads, and a new or edited creative enters that queue on the platform's schedule rather than yours; a change can be applied, verified as landed, and still not be delivering, because review is a third-party state and the record says so rather than guessing. Delivery is paced against the ad set's budget and schedule, and a budget edited mid-flight is a new instruction to that pacing from the moment it lands, not a retroactive one — which is why the before-state on every draft matters more than it looks. When a figure moves the week after a change, the question is what was true before it, and that is on the row.
Driving all of this from an MCP client rather than from the app is a walkthrough of its own, with the same reads and the same gate seen from a terminal.
Applying a change to a live Meta account is in private beta. The approval gate and the media plan it comes from are built and in use; what is gated is the last step, and the gate is the same whether a person clears it or a rule you wrote does.
Questions
Put frontier AI to work on every ad account you run.
Tempio connects your ad accounts into one workspace and hands your own AI the numbers and the tools. Every change it writes is a draft until you approve it, or until a rule you wrote does.
Request early access- Read and draft by default. Approve is a separate permission you grant.