Normalization and crypto verification run on the KYI API (kyi/). The SDK only posts the protocol envelope.

Flow

  1. User seals an Abstraxn mandate (authority ceiling).
  2. Agent builds a cart and may create AP2 / VI / ACP+SPT credentials.
  3. Agent calls POST /v1/warrant/decisions with a protocol envelope (or legacy NormalizedAction).
  4. KYI decodes → verifies → Cedar check → ALLOW/DENY + signed receipt.
  5. Agent stops on DENY (KYI does not sit in the payment path).
  6. Merchant/PSP calls POST /v1/warrant/verify with the same cart + mandate_id.

Agent: protocol check

ACP example

Amounts in ACP/SPT/AP2/VI payment claims are minor units (cents). KYI converts to major units before Cedar (e.g. 9900 → 99.00 USD).

AP2 / VI example

Send a compact SD-JWT and issuer keys:
Or use "verification": { "jwks_url": "https://issuer.example/.well-known/jwks.json" } (HTTPS only; private hosts blocked). Unsigned AP2/VI payment claims alone are rejected — a verifiable credential string is required.

SDK

Merchant: verify (shield)

Body = same protocol envelope plus mandate_id.

What each protocol does today

Sample files in repo

See kyi/examples/protocol-samples/ for copy-paste curl bodies.