Optionalmajor_Optionalsupported_OptionalfeaturesOptionalaccountOptionalcreativeOptionalextensions_Optionalrequest_RFC 9421 request-signing verifier capability. See
docs/building/implementation/security.mdx#signed-requests-transport-layer.
Emitted verbatim in get_adcp_capabilities.request_signing. Omit unless
the agent actually verifies incoming signatures — a supported: true
claim without a working verifier is graded as FAIL by the conformance
runner (see @adcp/sdk/testing/storyboard/request-signing).
Whether this agent verifies RFC 9421 signatures on incoming requests. When true, signatures present on requests are validated per the AdCP request-signing profile. When false or absent, signatures are ignored (requests are bearer-authenticated only).
Optionalcovers_content_digest?: "required" | "forbidden" | "either"Policy for content-digest coverage in request signatures. In AdCP 3.2 and later, an agent with request_signing.supported=true MUST explicitly emit 'required': every accepted signature on a request with a body covers content-digest, and a body-unbound signature is rejected with request_signature_components_incomplete. Omission retains the legacy effective default of 'either' only for a 3.0/3.1 response; 3.2 responses require this field explicitly. 'either' and 'forbidden' are deprecated legacy 3.0/3.1 postures retained only for version negotiation with pre-3.2 peers; they MUST NOT be advertised as a 3.2 signing posture and are removed in 4.0. A shared endpoint MUST select the verifier policy from trusted endpoint configuration and negotiated capabilities before dispatch, never from an unbound request-body version field.
Optionalrequired_for?: string[]AdCP protocol operation names (e.g., 'create_media_buy') for which this agent rejects an unsigned request with request_signature_required unless an independently valid configured fallback authenticator succeeds. Not MCP tool names, A2A skill names, or any transport-specific rename — verifiers MUST NOT accept operation names that are not defined by the AdCP protocol spec. JSON-RPC protocol method names like tasks/cancel belong in protocol_methods_required_for, not here. Empty in 3.0 by default; sellers populate selectively during per-counterparty pilots. In 4.0 this list MUST include all spend-committing operations the agent supports (create_media_buy, acquire_*, etc.). Every operation listed MUST also appear in supported_for; see x-adcp-validation.
Optionalwarn_for?: string[]AdCP protocol operation names for shadow-mode verification. The verifier records missing signatures and well-formed signatures that fail verification or body binding, but MUST NOT establish verified-signer identity from a failed signature; processing continues only when an independent bearer, API-key, or mTLS authenticator succeeds. A partial or malformed Signature / Signature-Input pair always hard-rejects. Used as a bridge between supported_for and required_for. Precedence: required_for > warn_for > supported_for. An operation MUST NOT appear in both warn_for and required_for; see x-adcp-validation.
Optionalsupported_for?: string[]AdCP protocol operation names for which this agent verifies signatures when present but does not require them. Under the 3.2 profile, a presented signature on a body-bearing request without content-digest coverage rejects even though an unsigned request may use configured fallback authentication. Typically a superset of required_for and warn_for.
Optionalprotocol_methods_supported_for?: string[]JSON-RPC protocol method names (e.g., 'tasks/cancel', 'tasks/get') for which this agent verifies signatures when present. Under the 3.2 profile, a presented signature on a body-bearing request without content-digest coverage rejects. Disjoint from supported_for, which carries AdCP tool names only. Items MUST be wire-format JSON-RPC method strings containing /; plain AdCP tool names belong in supported_for.
Optionalprotocol_methods_warn_for?: string[]Protocol method names for shadow-mode verification, mirroring warn_for in the AdCP-tool namespace. Missing signatures and well-formed signatures that fail verification or body binding are recorded but MUST NOT establish verified-signer identity; processing continues only when an independent authenticator succeeds. A partial or malformed Signature / Signature-Input pair always hard-rejects. An item MUST NOT appear in both protocol_methods_warn_for and protocol_methods_required_for; see x-adcp-validation.
Optionalprotocol_methods_required_for?: string[]JSON-RPC protocol method names for which this agent rejects an unsigned request with request_signature_required unless an independently valid configured fallback authenticator succeeds. Separate namespace from required_for: this bucket binds against the JSON-RPC method field, not tools/call params.name. Every listed method MUST also appear in protocol_methods_supported_for; see x-adcp-validation.
OptionalspecialismsSpecialism claims the agent supports. Each entry maps to a storyboard
bundle under /compliance/{version}/specialisms/{id}/; the AAO
compliance runner executes the matching storyboards to verify. Only
list specialisms the agent actually implements.
OptionalidempotencySeller-declared idempotency replay window, required on get_adcp_capabilities
responses per AdCP spec. Defaults to 86400 (24h). Spec bounds are 3600
(1h) to 604800 (7d); clampReplayTtl enforces the range on output.
When using createIdempotencyStore from @adcp/sdk/server, omit
this — the framework reads idempotency.ttlSeconds from the wired
store so the declared capability always matches actual behavior.
Optionalcapability_Freshness and notification support for the capability document.
Optionalcapabilities_version?: stringOpaque revision token for the full capability document. Required when notifications.supported: true because capabilities.changed webhooks use this as the read-after-notify fence. Sellers SHOULD change this value whenever any material field in get_adcp_capabilities changes. Buyers MUST treat it as opaque and compare it only for equality.
Optionallast_modified?: stringISO 8601 timestamp when the seller last changed the advertised capability document. This is the scoped replacement for legacy top-level last_updated when buyers need cache validation semantics.
Optionalcache_ttl_seconds?: numberMaximum time a buyer or registry SHOULD reuse this capability response before refreshing when it has no fresher invalidation signal. Sellers that emit capabilities.changed webhooks SHOULD still set a bounded TTL so consumers can recover from missed notifications. This is a cache hint, not an authorization lifetime.
Optionalnotifications?: Whether the seller supports agent-level capability-change webhooks. When supported, interested consumers register endpoint subscribers with sync_agent_notification_configs; each capabilities.changed fire is a small invalidation payload, and consumers repair by re-reading get_adcp_capabilities.
OptionalportfolioOptionaloverridesPer-domain capability blocks deep-merged on top of the framework's
auto-derived response. Use when you need to surface fields the top-level
AdcpCapabilitiesConfig doesn't model — execution.targeting,
audience_targeting, content_standards channels, conversion_tracking
identifier types, compliance_testing scenarios, etc.
Deep-merge semantics:
Top-level fields the framework owns (adcp, supported_protocols,
specialisms, extensions_supported) are not accepted here — configure
them via their dedicated fields on AdcpCapabilitiesConfig.
Release-precision versions this seller supports (AdCP 3.1+ per spec PR
adcontextprotocol/adcp#3493). Each entry parses to a major viaparseAdcpMajorVersion— the union of these majors andmajor_versionsdefines the seller's accepted set for the wire-leveladcp_major_version/adcp_versionclaim a buyer may carry.3.0-pinned sellers can ignore this field. 3.1+ sellers should declare here the same release-precision strings they emit in
adcp_versionon responses, so buyers receivingVERSION_UNSUPPORTEDcan read the supported set off the error envelope and downgrade their pin.