{
  "$schema": "https://voidly.ai/schemas/voidly-pay-card-v1.json",
  "schema": "voidly-pay-card/v1",
  "name": "Voidly Pay",
  "version": "1.1.0",
  "description": "USDC-backed agent-to-agent payment rail. Live on Base mainnet. Ed25519-signed envelopes, hire-and-release escrow, x402 paywall, hash-chained streaming, on-chain vault.",
  "stage": "stage-2",
  "production": true,
  "api_base": "https://api.voidly.ai",
  "endpoints": {
    "manifest": "https://api.voidly.ai/v1/pay/manifest.json",
    "health": "https://api.voidly.ai/v1/pay/health",
    "openapi": "https://api.voidly.ai/v1/pay/openapi.json",
    "agent_card": "https://api.voidly.ai/.well-known/agent-card.json",
    "feed_sse": "https://api.voidly.ai/v1/pay/stream/sse",
    "activity": "https://api.voidly.ai/v1/pay/activity"
  },
  "chain": {
    "name": "base",
    "chain_id": 8453,
    "vault_address": "0xb592512932a7b354969bb48039c2dc7ad6ad1c12",
    "asset_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "asset_symbol": "USDC",
    "asset_decimals": 6,
    "operator": "0xF105296C785FA103778f97E5c623Ede8a3223d48",
    "rpc_recommendation": "https://mainnet.base.org",
    "explorer": "https://basescan.org/address/0xb592512932a7b354969bb48039c2dc7ad6ad1c12",
    "source_verification": "https://repo.sourcify.dev/contracts/full_match/8453/0xb592512932a7b354969bb48039c2dc7ad6ad1c12/",
    "deployed_at_block": 45216869,
    "retired_vaults": [
      {
        "address": "0xb1425707a94c90483d3dee4300338bf8000234f8",
        "version": "1.0.0",
        "status": "paused",
        "reason": "operator key rotation"
      }
    ]
  },
  "caps": {
    "daily_cap_usdc": 100000,
    "per_tx_cap_usdc": 1000,
    "max_constructor_daily_usdc": 100000000,
    "note": "Caps are governance-tunable. Vault enforces _MAX_DAILY_CAP at constructor."
  },
  "security": {
    "reentrancy_guard": "EIP-1153 transient storage",
    "settlement_invariants": "9-check rule (worker/src/routes/pay/router.ts)",
    "key_rotation": "2026-04-26 (operator only; vault constructor immutable)",
    "bug_bounty": "https://voidly.ai/pay/security",
    "report_email": "security@voidly.ai",
    "audit_status": "self-audited; Spearbit/Trail-of-Bits planned before raising daily cap"
  },
  "auth": {
    "scheme": "ed25519",
    "did_format": "did:voidly:<base58 first-16-bytes ed25519 pubkey>",
    "envelope_canonicalization": "JSON with sorted keys, no whitespace, UTF-8",
    "signature_field": "sig",
    "anti_replay": "per-DID nonce + Idempotency-Key header"
  },
  "sdks": {
    "typescript": "@voidly/pay@0.1.1",
    "mcp_server": "@voidly/pay-mcp@0.1.0",
    "cli": "@voidly/pay-cli@1.0.1",
    "python": "voidly-pay (sdk-python)"
  },
  "skills": [
    {
      "id": "transfer",
      "name": "Send credits to another agent",
      "endpoint": "POST /v1/pay/transfer",
      "envelope": "{from, to, amount, nonce, sig}",
      "atomicity": "9-check rule"
    },
    {
      "id": "escrow",
      "name": "Hire-and-release escrow",
      "endpoint": "POST /v1/pay/escrow/{open|release|refund}",
      "use": "buyer locks funds, seller delivers, buyer releases or disputes"
    },
    {
      "id": "stream",
      "name": "Hash-chained per-token / per-second metering",
      "endpoint": "POST /v1/pay/stream/{open|meter|finalize}",
      "use": "LLM tokens, compute seconds, bandwidth"
    },
    {
      "id": "x402",
      "name": "HTTP 402 paywall facilitator",
      "endpoint": "POST /v1/pay/x402/{quote|verify}",
      "use": "monetize HTTP endpoints with one signed header"
    },
    {
      "id": "subscribe",
      "name": "Pull-based subscriptions",
      "endpoint": "POST /v1/pay/subscription/create",
      "use": "recurring charges with auto-pause on consecutive failures"
    },
    {
      "id": "deposit",
      "name": "On-ramp via on-chain USDC deposit",
      "contract_call": "deposit(uint256 amount, string did) on vault",
      "credits_minted": "1 credit per 1 micro-USDC; backed 1:1"
    },
    {
      "id": "withdraw",
      "name": "Off-ramp via signed attestWithdraw",
      "contract_call": "attestWithdraw(uint256 amount, address recipient, string did, uint256 nonce, bytes sig)",
      "signer": "operator only"
    }
  ],
  "rate_limits": {
    "per_did_default": "10 buckets, weighted by endpoint",
    "register": "20/hr",
    "transfer": "100/min",
    "see_also": "/v1/pay/manifest.json for full breakdown"
  },
  "discovery": {
    "agent_card": "https://api.voidly.ai/.well-known/agent-card.json",
    "extension_urn": "urn:voidly:pay-stage-2-vault/v1",
    "humans_md": "https://voidly.ai/pay",
    "agents_txt": "https://voidly.ai/agents.txt",
    "changelog": "https://voidly.ai/pay/changelog"
  },
  "contact": {
    "ops": "ops@voidly.ai",
    "security": "security@voidly.ai",
    "github": "https://github.com/voidly-ai"
  },
  "updated_at": "2026-04-26"
}
