Cursor
Cursor, working on Google Ads accounts
A server entry in the client's own configuration, the deepest entity tree of any connected platform, and a draft validated against the live account before it is applied.
Point your MCP client at your workspace for 68 scoped tools, with separate keys to read, draft and approve.
Illustrative exchange
Illustrative exchange
Illustrative exchange
Connecting it
- 01
Mint a key with read and draft
In the app, open Settings and then MCP. Mint a key with reading and drafting, and leave approving off unless you mean the editor's agent to apply changes itself. The key is shown once, hashed at rest, revocable, and scoped to one workspace.
- 02
Add the server to the client
A server entry in the client's own MCP configuration file: the endpoint and the key in an Authorization header.
- 03
Keep the key out of the repository
The configuration file this entry goes in can live beside a project, which is the one place a bearer key should never be committed to. Put it in the user-level file, or keep the project-level one out of version control. A leaked key is revoked in the app, which is the reason keys are revocable at all.
- 04
Connect the ad accounts
In the app, connect the platform and choose the ad accounts the workspace may see. The grant lives in the workspace rather than in the client, so the editor never holds a platform credential of its own.
- 05
Read the connection before drafting
Ask for the connections first. Each names the operations this platform can express, the levels a budget attaches to, the objectives it accepts, what a removal means here, and whether a draft can be dry-run before it is applied. An operation absent from that list cannot be drafted at all.
Objections, answered
Letting an agent draft terminal removals is reckless.
It would be, unattended. Nothing applies a removal without an explicit approval, no rule should clear one, and the row an approver reads carries what it removes and the state it was in. The better instruction is almost always a reversible status change, and an agent that proposes one instead is doing the job properly.
An agent with a file system and an ad account is too much reach.
The two do not meet. The key addresses Tempio and carries only the scopes minted for it; the platform grant never leaves the workspace. What the editor can reach in an account is whatever those scopes allow, and drafting allows nothing to be applied.
Reviewing ad changes as a diff is a category error.
It is the closest available analogue, and it is honest about what it shows: what changes, and the state the entity was in before it. That is what a change request carries, and reading it that way is neither more nor less than reading the row a reviewer will approve.
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 accessWhat this pairing covers
One client and one platform, end to end: what the connection gives an editor's agent here, what to run first, and what happens to a change between the prompt and the account.
This platform has the deepest tree of any connected here — campaign, ad group, ad, and keywords and assets as rows of their own — which makes it the one where a structured client earns the most. It is also the one platform with a dry run, so a batch written in an editor and reviewed as a diff is validated against the live account before anybody approves it. The caution from the client page applies unchanged: the configuration file holding the key can sit beside a project, and that is the one place it must not be committed.
The setup
The server is one Model Context Protocol endpoint over streamable HTTP, authenticated with a key minted in the app under Settings and then MCP. It goes in the client's own configuration as a server entry:
{
"mcpServers": {
"tempio": {
"url": "https://app.tempio.ai/api/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}
The key's scopes decide what the editor's agent sees. Reading covers connections, ad accounts, campaigns, structure, media assets, metrics, drafts and media plans. Drafting writes change requests and reaches no live account. Approving is opt-in at the mint and is rarely worth granting to an agent that also has a file system in front of it.
One caution belongs on this page rather than in a footnote. The configuration file can sit beside a project, and a bearer key in a file beside a project is a bearer key one careless commit away from a public repository. Put the entry in the user-level configuration, or keep the project-level file out of version control. Keys are revocable in the app for exactly this reason, and a key that is revoked stops working everywhere at once. The client page covers the rest of the configuration; this page covers the platform.
What to read into the editor first on this platform: the search-term report, ordered by cost. It is long, it is the expensive tail at the top, and it is the document most of the following changes will be justified against.
What the agent reads on this platform
An editor's agent is at its best when it is handed a corpus rather than a question, and this platform hands it the largest one connected here. Start with the account brief — ninety days per ad account, coverage, totals, the last twenty-eight days against the twenty-eight before them, objective mix, spend concentration, and the return and cost-per-acquisition rankings inside one account and one currency — then go wide.
Wide, on this platform, means four reads nothing else here has. What people actually typed before an ad showed, ordered by cost, each term with the keyword that matched it and how it matched; the top of a short list is therefore the expensive tail rather than an arbitrary sample. Where the money in a display, video or Performance Max campaign actually went, down to the sites, apps and channels. The account's own change history: who changed what, when, and exactly which fields moved. And place resolution, because a location criterion here is a number rather than a name, so a campaign drafted against a guessed one is aimed at the wrong country.
Those are long results, and length is the thing this client handles differently from a chat window. A search-term report is a table worth scrolling, filtering and keeping open beside the draft it is about, which is a working style an editor already has and a conversation does not.
The tree beneath is deeper than elsewhere: campaign, ad group, ad, and — depending on the campaign type — keywords and assets as first-class rows with their own ids. An objective read on a campaign here is a translation rather than a native field: this platform carries a channel type instead, and the read model maps it so one shape holds every platform. The tool layer says so rather than inventing a taxonomy the platform does not have.
What a change looks like here
Three platform facts decide what an agent may draft here, and the connection states all three before a draft is written.
A budget is a campaign-level object. An ad group carries a bid, not a budget, so the list of levels a budget attaches to has exactly one entry and a request aimed at an ad group is refused when it is written rather than quietly applied a level up.
A dry run exists and is used. A draft is validated against the live account before it is queued and again on the way to being applied. That is the fact that changes what is reasonable to attempt from an editor: a fifty-row restructure written as one batch is checked against the account as it actually is, so the usual failure — a draft written against structure that moved since — surfaces at the gate rather than halfway through the run.
A removal is terminal. Removing an entity is not an archive and cannot be undone, not even to re-pause it. An agent asked to tidy an account should be proposing status changes, and a workspace writing a rule that clears removals automatically is writing a rule it will regret. The review step is the whole protection, which is an argument for reading a batch the way this client reads a diff: row by row, before approving any of it.
After approval
Approving is not deploying, and an editor is the client most likely to conflate the two out of habit. An ad or an asset enters the platform's review queue when the change lands, on the platform's schedule; a change can be applied, read back, verified as landed, and still not be delivering.
The platform also withholds the current day: it restates today's figures for hours, so the tool layer treats data as ready through yesterday and refetches a trailing month on every sync. An agent asked how a change is going an hour after approving it should say what it can see and when it was read, rather than filling the gap with a number that will move. Pacing runs against the campaign budget from the moment an edit lands rather than retroactively, which is why the change request records the state before it — a week later, what was true beforehand and who cleared it are both on the row rather than in somebody's memory of the session.
Also available
Claude Code and Google Ads
Claude Code pointed at Google Ads: campaign-level budgets, the dry run before the gate, the search-term read, and what a removal costs you here.
Claude Code and Meta
Claude Code pointed at Meta ad accounts: one command to connect, what the agent reads first, and what happens to a change between the prompt and the account.
Claude Code and TikTok
Claude Code pointed at TikTok: the schedule and targeting that live on the ad group, the thirty-day insight window, and a removal that cannot be undone.
Cursor and Meta
Cursor pointed at Meta ad accounts: where the key belongs, budgets at two levels, no dry run, and an archive that makes the worst operation reversible.
Cursor and TikTok
Cursor pointed at TikTok: schedule and targeting on the ad group, budgets that depend on the campaign's own setting, and a removal that is terminal.
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.