L3 enforces what AdCP means on the agent side. The wire shape is well-formed (L0); the caller is authentic (L1) and authorized (L2); now: is the request legal given the current state of the world? For agents, L3 is the bulk of the protocol surface — the 3–4 person-month from-scratch build lives almost entirely here. For callers, L3 is consumer-side: weeks of handler glue, classifying error codes and handling state transitions rather than enforcing them.Documentation Index
Fetch the complete documentation index at: https://agenticadvertisingorg-changeset-release-main.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
What an SDK at L3 must provide
If you’re picking an SDK or porting one to a new language, this is the L3 build target:- Lifecycle state-machine graphs for all spec-defined resources, with a transition-assertion primitive that emits the spec-correct error code (
NOT_CANCELLABLE/INVALID_STATE/ etc.). - Idempotency cache with cross-payload conflict detection and the no-payload-echo invariant on
IDEMPOTENCY_CONFLICTenvelopes. - Async-task store + dispatcher — tools opt into async; the SDK returns
task_id, accepts polling, and emits the terminal artifact. - Webhook emitter — signed, retried, idempotent.
- The conformance test surface (
comply_test_controller), wired to drive state deterministically when the resolved account is in sandbox or mock mode (and rejected otherwise). - Per-resource persistence primitives that handle the spec’s echo contracts.
- Server-construction entry point that ties all of the above together with sane defaults.
Pages in this layer
- Task lifecycle — status values, transitions, polling.
- Async operations — sync, async, and interactive task handling.
- Webhooks — push notifications, signing, retry, idempotency.
- Error handling — error categories, codes, recovery classification.
comply_test_controller— sandbox-only conformance test surface.