{
  "schemaVersion": "davisville-payment-discovery.v1",
  "purpose": "Common machine-readable payment discovery contract for Davisville Labs specialist services.",
  "openapiExtension": "x-payment-info",
  "preferredShape": "offers",
  "runtimeChallengeAuthoritative": true,
  "protocol": "MPP+x402",
  "rules": [
    "Publish x-payment-info only on currently paid operations whose machine commerce is active.",
    "Do not publish x-payment-info on free operations or free applicability/preflight operations.",
    "Preserve specialist eligibility, identity, source-readiness, and release gates before any payment challenge.",
    "Publish both human-readable USD price metadata and machine-executable offer metadata for the currently supported MPP and x402 rails.",
    "Prefer stablecoin machine-payment offers when a specialist supports them; retain card/link only as a secondary fallback where the operation price and runtime support it.",
    "x402 is HTTP-only in the current Davisville specialist architecture; MCP paid calls continue to use MPP.",
    "Treat the runtime 402 challenge as authoritative for the exact credential, scope, currently enabled rail, and retry.",
    "Never publish secrets, payment credentials, private keys, or merchant deposit addresses in discovery metadata."
  ],
  "offers": {
    "stripe": {
      "intent": "charge",
      "method": "stripe",
      "currency": "usd",
      "amountUnit": "minor currency unit (cents for USD)"
    },
    "tempo": {
      "intent": "charge",
      "method": "tempo",
      "network": "tempo",
      "asset": "USDC.e",
      "currency": "0x20C000000000000000000000b9537d11c60E8b50",
      "decimals": 6,
      "amountUnit": "token base unit"
    },
    "x402": {
      "protocol": "x402",
      "version": 2,
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "USDC",
      "transport": "http",
      "decimals": 6,
      "amountUnit": "token base unit"
    }
  },
  "price": {
    "mode": "fixed",
    "displayCurrency": "USD",
    "note": "Display formatting may preserve a product's existing precision convention; numeric value must match the operation price."
  },
  "canonicalExample": {
    "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "1.00"
    },
    "protocols": [
      {
        "mpp": {
          "method": "tempo",
          "intent": "charge",
          "currency": "0x20C000000000000000000000b9537d11c60E8b50"
        }
      },
      {
        "x402": {
          "version": 2,
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "USDC"
        }
      },
      {
        "mpp": {
          "method": "stripe",
          "intent": "charge",
          "currency": "usd"
        }
      }
    ],
    "offers": [
      {
        "intent": "charge",
        "method": "tempo",
        "amount": "1000000",
        "currency": "0x20C000000000000000000000b9537d11c60E8b50"
      },
      {
        "protocol": "x402",
        "version": 2,
        "scheme": "exact",
        "amount": "1000000",
        "asset": "USDC",
        "network": "eip155:8453"
      },
      {
        "intent": "charge",
        "method": "stripe",
        "amount": "100",
        "currency": "usd"
      }
    ]
  },
  "protocols": [
    "MPP",
    "x402"
  ],
  "paymentPreference": "stablecoin_first_where_supported"
}
