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://docs.adcontextprotocol.org/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.