Skip to content
why we’re building this

Ad platforms shouldn’t decide what your agents can do

Every ad platform ships its own API, its own auth, its own metric names, its own quirks. Anyone automating campaigns rebuilds the same glue five times — and that glue is where agent projects go to die.

We think the interface between agents and advertising should be a commons: one standardized tool set, one normalized schema, one record of what was said, changed and seen, and connectors maintained in the open by the people who use them.

Open source. Self-hosted. No middleman, no toll.

ways inuse · build · shape
Use it
Run it with your agents

Install, connect your platforms (or start on the built-in sandbox), and file issues where reality disagrees with the docs. Early users shape the tool surface.

Quickstart →
Build it
Write a connector

A connector implements the standard tool set against one platform's API, then passes the contract test suite every shipped connector runs. LinkedIn, Pinterest, and Snapchat are up for grabs.

See connectors →
Shape it
Argue about the schema

The normalized schema is the whole ballgame. Bring your ugliest cross-platform reporting stories to the discussion.

Open RFCs →soon
principlesthe project's five
openOpen source, end to end. Read it, run it, self-host it.
localTokens and data stay on your infrastructure, encrypted at rest. The project never proxies your traffic.
declaredCapability differences between platforms are declared in code, never silently absorbed. Read-only is stated, not hidden; a verification is a claim about a date, and carries it.
rehearsedEvery mutation runs as a rehearsal first — dry_run is the default, campaigns are created paused, and live spend is gated on explicit approval. The rehearsal is not advisory: a live call must carry the confirmation token its preview minted, bound to the exact before→after diff — if the object changed since, the call is refused.
recordedEvery change keeps its before→after and a 7-day snapshot taken at the moment it was made; what the brand may say and what each campaign taught are kept in the control plane, not in someone's head. What followed a change is reported as observed before and after — never as what the change caused.
joinearly access · contributor invites

Join the project

Star the repo and join the Discord when they open. In the meantime, connect your agent and start with read-only access.

Ready to try it on your own accounts? connect your agent →