Changelog
The current public release is 0.1.0. Versioning follows SemVer, so a breaking wire-version change
bumps the major.
Version 1: public beta
First public release of the OID4Pay protocol surface and the open merchant SDK suite, MCP server, and UI packages. The protocol surface and the SDK contracts are at version 1.
Package releases
The open packages publish on their own SemVer track, all at 0.1.0 for this initial
release. Each verifies OID4AC protocol artifacts on the merchant or agent side; verification is
the whole of their surface.
@oid4pay/oid4ac-merchant 0.1.0 (Node)
Initial public release.
- Verifies OID4AC SD-JWT VC mandates, including the holder key-binding JWT, with language-independent structured error codes.
- Verifies RFC 9421 signed offers and pins the expected target URI.
- Serves and verifies the OID4AC catalog protocol, with
pickCheapestMatchingandpickInStockselection helpers. - Enforces an algorithm whitelist at every JWS and JWT verification call and refuses
alg=noneat the header check. - Fetches JWKS through an in-process cache with a 300s TTL, a
kid-miss force-refresh recovery path, and retry with exponential backoff and jitter on transport and 5xx failures. - Surfaces structured error types (
MandateVerifyError,OfferVerifyError,NetworkError) carrying stablecodestrings. - Ships an optional, off-by-default OpenTelemetry adapter that bridges the JWKS fetch lifecycle
into spans and a duration histogram and propagates W3C
traceparentheaders.
@oid4pay/cdn-oid4ac-merchant 0.1.0 (browser bundle)
Initial public release.
- Verifies RFC 9421 signed offers in the browser with WebCrypto Ed25519, including
Content-Digestmatching against the canonical SHA-256 of the offer body. - Verifies the OID4AC signed catalog body served from
/.well-known/oid4ac-catalogusing the same signature pipeline. - Provides
pickInStockandpickCheapestMatchingcatalog selection helpers. - Auto-mounts a "Pay With Agent" button on any
[data-oid4ac-offer]element and opens the wallet approve flow as a sandboxed modal, with popup and same-tab navigation fallbacks for locked-down CSP hosts. - Computes the canonical offer digest (
canonicalOfferDigest) so the digest the merchant signs over and the digest the wallet shows the principal are byte-identical. - Exposes
OID4Pay.configure({ merchantId, walletOrigin, asOrigin })for runtime overrides. - Emits
CustomEvent('oid4pay:metric')on every verifier and JWKS milestone, with zero overhead when no listener is attached. - Ships structured error types (
OfferVerifyError,NetworkError,MandateVerifyError) with stable, language-independentcodestrings. - Stays well under the 30 KB gzip budget (about 6 KB).
oid4pay-oid4ac 0.1.0 (Python)
Initial public release.
- Verifies OID4AC SD-JWT VC mandates: issuer JWT signature against the Authorization Server JWKS, canonical claim set, RFC 8707 audience binding, disclosure unfolding, and the Key-Binding JWT proof of possession.
- Verifies RFC 9421 signed offers: signature-base assembly,
Content-Digestbody integrity, EdDSA and ECDSA P-256 signatures. - Serves and verifies signed OID4AC catalogs (
serve_catalog,verify_catalog) with per-item canonicaloffer_digest, plus thepick_in_stockandpick_cheapest_matchingselection helpers an agent uses after a verified fetch. - Enforces an explicit algorithm whitelist at every JWS and JWT verify call:
alg=noneand HMAC are refused. JWKSCache: thread-safe in-process JWKS cache with a 300s TTL and akid-miss force-refresh recovery path. JWKS fetch retries with exponential backoff and jitter on 5xx and transport errors; 4xx surfaces immediately.- Structured error types (
MandateVerifyError,OfferVerifyError,NetworkError) with language-independentcodestrings. - Ships a
py.typedmarker so downstream mypy strict and pyright respect the inline annotations. - Optional OpenTelemetry adapter behind the
[otel]extra, off by default: the SDK core never imports OpenTelemetry until a consumer constructs the adapter.
github.com/oid4pay/oid4ac-go 0.1.0 (Go)
Initial public release. The OID4Pay merchant SDK for Go verifies OID4Pay protocol artifacts on the merchant side.
- Verifies SD-JWT VC mandates: issuer JWT signature against the Authorization Server JWKS,
every canonical mandate claim, the RFC 8707 merchant audience binding, and the Key-Binding
JWT (holder proof,
sd_hash, nonce, and audience). - Verifies RFC 9421 signed offers and catalogs: mandatory signature components,
Content-Digestover the canonical body,createdskew, andexpires. - Enforces an explicit algorithm whitelist at every JWS and JWT verify call (
EdDSAfor SD-JWT VC;ed25519andecdsa-p256-sha256for RFC 9421).alg=noneand every off-whitelist algorithm are refused. - Fetches the AS JWKS over HTTPS with retry, exponential backoff, and jitter on 5xx and transport failures; 4xx responses surface immediately.
- Provides a thread-safe in-process
JWKSCachewith a TTL and akid-miss force-refresh recovery path. - Returns structured error types:
*VerifyError(with a stableCode) for verification failures and*NetworkErrorfor JWKS-fetch transport and HTTP failures. - Serves and verifies signed OID4AC catalogs and offers, and provides selection helpers
(
PickCheapestMatching,PickInStock). - Ships an optional OpenTelemetry adapter behind explicit constructors. It is off by default; the SDK emits zero spans and zero metrics until a consumer installs it.
@oid4pay/oid4pay-mcp 0.1.0 (MCP server)
Initial public release.
- MCP server over stdio (
oid4pay-mcp serve) for Claude Desktop and other MCP clients. - One-shot agent registration (
oid4pay-mcp register) that mints DPoP andprivate_key_jwtkeypairs, registers with the Authorization Server via RFC 7591 dynamic client registration, and persists the issuedclient_idunder the per-user data directory (files mode 0600). - Twelve tools driving the full OID4AC flow (PAR, DPoP, JWT access tokens, SD-JWT VC mandates) on behalf of an authenticated human: agent registration and pairing, payment initiation, mandate verification, merchant discovery and signed-catalog browsing, wallet agent management, data-subject requests, audit-chain queries, payment history, and a buy-cheapest helper.
- Token issuance always stays with the Authorization Server; this package never mints tokens itself.
- Machine-readable tool specification shipped at
docs/tool-spec.json.
Staying current
The release manifest at /.well-known/oid4pay-version.json is the machine-readable record of the live wire version; SDKs may poll it on a cadence of hours,
not minutes. A human-readable RSS feed is at /changelog.xml.