@xyncpay-org/ap2
v0.1.1
Published
TypeScript SDK for AP2 (Agent Payment Protocol v2). Mandate construction, SD-JWT-VC credentials, constraint evaluation, and OpenID4VP transaction_data binding.
Maintainers
Readme
@xyncpay-org/ap2-typescript-sdk
TypeScript SDK for the Agent Payment Protocol v2 (AP2). Provides mandate construction, SD-JWT-VC credential issuance and verification, constraint evaluation, and OpenID4VP transaction_data binding for autonomous AI agent payment flows.
At a glance
| | |
|---|---|
| Package | @xyncpay-org/ap2-typescript-sdk |
| License | MIT |
| Protocol | AP2 (Agent Payment Protocol v2) |
| Credential format | SD-JWT-VC with KB-SD-JWT key binding |
| Cryptography | @noble/curves (P-256, Ed25519), JOSE for JWK handling |
| Node | >= 22 |
| Type definitions | Built-in TypeScript declarations |
Installation
npm install @xyncpay-org/ap2-typescript-sdkOverview
AP2 defines a mandate-based authorization model for agent payments. An agent presents a verifiable mandate (an SD-JWT-VC credential) that encodes spending constraints. The merchant verifies the mandate and the key binding proof before accepting a payment instruction.
This SDK provides:
- Mandate construction -- build and sign SD-JWT-VC payment mandates with configurable selective disclosure
- Mandate verification -- verify issuer signature, holder binding, and constraint satisfaction
- Constraint evaluation -- evaluate AP2 constraint expressions against payment parameters
- OpenID4VP binding -- construct and verify
transaction_dataobjects for presentation flows - Type definitions -- complete TypeScript types for all AP2 protocol objects
Quick Start
import { buildMandate, verifyMandate } from "@xyncpay-org/ap2-typescript-sdk";
// Build a mandate
const mandate = await buildMandate({
issuerKey: issuerJwk,
holderKey: holderPublicJwk,
claims: {
spendingCap: "100000000", // 100 USDC in smallest units
perTransactionLimit: "10000000",
currency: "USDC",
chain: "base",
},
});
// Verify a presented mandate with key binding
const result = await verifyMandate(mandate, {
issuerPublicKey: issuerPublicJwk,
nonce: requestNonce,
});Architecture
src/
index.ts Public API re-exports
mandate/
build.ts SD-JWT-VC mandate construction
verify.ts Mandate verification and constraint checking
constraints/
evaluate.ts AP2 constraint expression evaluator
openid4vp/
transaction.ts transaction_data binding for OpenID4VP
types.ts AP2 protocol type definitionsSee docs/adr/ for architecture decisions.
License
MIT. See LICENSE.
