Agent-first, not agent-friendly
A lot of APIs say “we support agents” and mean “we have a Python SDK.” v2 treats AI agents as the primary caller. That changes a few things:One endpoint, full intent
A campaign update is one call that carries every related decision —
measurement config, conversion events, test cohorts — instead of five
sequential calls the agent has to plan.
Stable resource taxonomies
Notification types, agent types, and resource names follow
resource.action patterns so agents can build workflows around stable
strings instead of free-form heuristics.Explicit error semantics
Errors have machine-readable codes (
VALIDATION_ERROR, ACCESS_DENIED,
NOT_FOUND, …) plus a human-readable message. Agents can branch on the
code; humans read the message.Discoverable capabilities
Partner agents publish ADCP capabilities. Scope3 fetches them, caches them,
and exposes them so callers can decide what’s possible without trial and
error.
One endpoint per object, full intent in the body (SESOFI)
The architectural pattern that keeps the surface coherent:Each high-level intent (update an advertiser, run a media buy, refine a discovery query) maps to one endpoint that accepts one object describing the full intent.This is the opposite of the “atomic CRUD on every sub-resource” instinct. SESOFI cuts agent round-trips, eliminates partial-state bugs, and makes the intent legible in transcript form. REST endpoints still exist at the granular level — they’re useful for UIs and programmatic clients — but MCP tools are composite by design. An agent calling
update_advertiser does not need to know that measurement config and
conversion events live in different tables.
ADCP-aligned by default
v2 uses the Ad Context Protocol as its inter-agent contract. That means:- Sales agents implement ADCP
get_productsandcreate_media_buy. - Signal and outcome agents implement ADCP capability discovery.
- Reporting payloads follow the ADCP
get_media_buy_deliveryschema. - Notification webhooks include ADCP-spec metadata
(
notification_type,sequence_number,next_expected_at).
scope3, sandbox) rather than forking it.
Buyer and storefront are separate skills
v1 lumped buyer-side and storefront-side capabilities together, which made it hard to give agents focused tool surfaces. v2 splits them cleanly:| Skill | Audience | Scope |
|---|---|---|
| Buyer | Brands, agencies, brand agents | Advertisers, campaigns, media buys, creatives, reporting, storefronts |
| Storefront | Publishers, supply-side operators | Inventory products, AAO marketplace registration, sales agent OAuth |
/api/buyer/* and /api/storefront/*.
Agents pick the skill that matches their job description; they never have to
filter through tools they cannot use.
AAO marketplace as the registry of trust
Scope3 does not unilaterally decide which agents are real. The Agentic Advertising Organization maintains a public registry and a compliance pipeline — and v2 enforces it:- Marketplace agents must appear in the AAO registry to be activated.
- Their compliance status (
passing,pending,not-passing) is read live. - Self-registered agents (your own endpoints) bypass the marketplace check but go through the same activation probe.
Human-in-the-loop, by design
Agents operate fast. Some decisions still belong to a human:- Optimization suggestions are generated by agents, surfaced as
notifications (
optimization.suggestion_received), and require explicit acknowledgement before they apply. - Creative approval flows route through
creative.approved/creative.rejectedevents with reviewer attribution. - Custom contracts are generated for review and signed via SharePoint or GCS-hosted documents — the API never auto-signs.
Sandbox-first development
Every reasoning step in v2 — capability discovery, OAuth, reporting — has a sandbox path. ADCP agents that declaresandbox: true in their capabilities
get exercised through their sandbox endpoints during integration. Demo
reporting data is one query parameter away (?demo=true). New skills land on
sandbox first and graduate to production explicitly.
This makes integration safe to iterate on. You don’t need a live publisher
deal to test a sales agent end-to-end.
What this means for callers
Pick a skill
Decide whether you’re acting as a buyer or a storefront. Mount only that
skill’s tools in your agent.
Author intents, not steps
When updating an entity, send the full new shape. Don’t decompose the
change into N sub-resource calls — the platform will do that for you.
Trust capabilities
Read the agent’s discovered capabilities before deciding what’s possible.
Don’t hardcode assumptions about what a sales agent supports — the
capabilities tell you.
Next steps
Introduction
Start here for a tour of the v2 surface, auth, and the buyer/storefront
split.
Built for Agents
A deeper look at how v2 shapes its tools and intents around AI agents as
primary callers.
Migration Guide
Map every v1 tool, route, and concept onto its v2 equivalent.
Storefronts
Browse storefronts, register credentials per inventory source, and connect
your buyer accounts to ADCP-compatible agents.