Resolves verification keys by keyid.
Stores (keyid, signature-bytes, expires) tuples for replay detection.
Consulted for revoked kid / jti before accepting a signature.
Optionalrequired_Operation names that MUST arrive signed. Defaults to every mutating AdCP tool (per the framework's MUTATING_TASKS). Read-only tools are optional — callers can sign them for authenticity but the verifier accepts unsigned traffic outside this list.
Optionalcovers_Default 'either' — accept signatures with or without Content-Digest.
OptionalagentResolve the agent_url claim the verifier stamps on successful results.
Useful when a single seller hosts multiple brands and the buyer's
signing key is scoped to a brand identifier rather than the root.
Inputs for the auto-wired RFC 9421 request-signature verifier. When set on AdcpServerConfig,
createAdcpServerbuilds an Express-shaped verifier middleware and attaches it to the returnedMcpServervia ADCP_PRE_TRANSPORT.serve()discovers the attached middleware and mounts it as the transport-layerpreTransporthook, so every inbound MCP request passes the verifier before reaching the JSON-RPC router.A seller that declares the
signed-requestsspecialism incapabilities.specialismsMUST provide this config, and vice-versa — both together or neither.createAdcpServerthrows at construction time when only one is set, closing the footgun where claiming the specialism accepts unsigned mutating traffic.jwks,replayStore, andrevocationStoreshould be hoisted outside the agent factory so a single verifier instance serves every request — otherwise each request would build a fresh replay store and the rate- abuse / replay-detection guards would be per-request (i.e. broken).