{
  "tool_id": "art-592-x402-domain-nonce-window-checker",
  "tool_version": "1.0.0",
  "display_name": "x402 Domain & Nonce Window Checker",
  "mcp_name": "check_x402_domain_nonce_window",
  "mandate_type": "compliance_control",
  "wave": 99,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-592-x402-domain-nonce-window-checker.html",
  "description": "Checks an EIP-3009 TransferWithAuthorization's domain separation and replay-defense-adjacent fields against caller-supplied expectations. Takes expected_chain_id and expected_verifying_contract as separate, mandatory policy parameters -- distinct from the chainId/verifyingContract actually baked into the signed domain -- and refuses hard (never a soft warning) on either mismatch, the cross-domain replay defect class EIP-712 domain separation exists to prevent. Also checks the validAfter/validBefore window against a caller-supplied now_unix, and the nonce's format (bytes32, non-zero). Accepts an optional caller-supplied nonce_already_used boolean computed against the caller's own on-chain record; this kernel never queries a chain, so on-chain nonce uniqueness is enforced by the token contract at settlement time, not by this verifier. Zero network calls; never a facilitator, proxy, or settlement relay.",
  "input_schema_ref": "chaingraph/art-592-x402-domain-nonce-window-checker.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:b38255c8483b8792648d21f7a06a061fa24aaaea6ffce83ffb9c9b340afab72a",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-08-11"
    }
  ],
  "export_capability": [
    "json"
  ],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "DThpcpBZ30Ov9IIXTrn33rrIC6YESLxXc+Aske5u+I8GVcYNI44eQx2hou9sip/pJ0u0f5P9aDFCpD9v7EgKmh5WB2FYcMYQ2KmbRqjP4Xn+w4KR69DHstiEJPiy9j9SEaBiKXmS+FNKtUQBhGKYvOSo9vkDn8EsLZBgXAytwHErUku4IM1/uXT37J/ItLTSDygK5OCMY7WmW9DnL8MfwxkmigX0ek7YPszDVOHSdOLS0hFFrAPOstDhziy9v8KTI3jxFHEtSj/JPgw1Ev6vCPzcxwyNar8AsichLDNaBAskVHZCw8X3dWCPteLticzTZKRdiCru1Eq994MhJuED6w==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:b38255c8483b8792648d21f7a06a061fa24aaaea6ffce83ffb9c9b340afab72a",
      "output": {
        "authorization_expired": false,
        "authorization_not_yet_valid": false,
        "authorization_within_window": true,
        "disclosure": "On-chain nonce uniqueness is enforced by the token contract at settlement time, not by this verifier. This tool confirms the authorization is well-formed, correctly signed, and not self-reported as already used -- it cannot confirm the nonce has never been spent on-chain.",
        "domain_chain_match": true,
        "domain_contract_match": true,
        "expected": {
          "expected_chain_id": "1",
          "expected_verifying_contract": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
        },
        "nonce": "0x0000000000000000000000000000000000000000000000000000000000000001",
        "nonce_already_used": false,
        "nonce_well_formed": true,
        "reasons": [],
        "signed_domain": {
          "chain_id": "1",
          "verifying_contract": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
        },
        "verdict": "PASS",
        "window": {
          "now_unix": "1000000000",
          "valid_after": "0",
          "valid_before": "2000000000"
        }
      }
    }
  }
}
