{
  "tool_id": "art-591-x402-signer-recovery-verifier",
  "tool_version": "1.0.0",
  "display_name": "x402 Signer Recovery Verifier",
  "mcp_name": "verify_x402_signer_recovery",
  "mandate_type": "compliance_control",
  "wave": 99,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-591-x402-signer-recovery-verifier.html",
  "description": "Recovers the ECDSA signer address from a caller-supplied EIP-712 digest (the sibling art-590-x402-eip712-digest-recomputer's output) and a signature in (r,s,v) or (r,s,yParity) form, normalizing the recovery-id across the raw bit, legacy Ethereum v (27/28), and EIP-155 v (chainId*2+35/36) conventions. Reports the recovered address as a fact plus a separate boolean comparison against any caller-claimed from address. Signature recovery comes from the already-vendored, pinned noble-curves bundle (no new vendoring); malformed or invalid-recovery-id signatures produce a clean refusal finding, never a thrown exception. Proves that an address signed the exact digest supplied; does not prove settlement, spend, or that funds moved. Zero network calls; never a facilitator, proxy, or settlement relay.",
  "input_schema_ref": "chaingraph/art-591-x402-signer-recovery-verifier.html#manifest",
  "consumes": ["art-590-x402-eip712-digest-recomputer"],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:4dfa2047d3aeebb35c0825fa07d54d487c7b254d0ad031e2d0c360a3736b5ab7",
      "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": "JPsgnLAcI5ew6704cgMRWW+ZP/L9Zd3R2j+nMeFDedAke+lPXmFHcXZJTL1H2cNzBFcyY8EA63ANGTsKbECjLhz6097vktDG9KSqCGK2ZL+4votNln8q5D/pc600aZmiK8FXFc3NukPPD+JyhX8SyOJ0CuPJavzLkhlh0Tvv99su+0x3PWoKlxycFdIjbfotxusmpMPmlSMnab+XiTrqOQByuurGlj0MIL46Vqw/a5+tXkBt5ewuU/DaZM3zVW4CDTX+kmp6TyzQtp8hISFXYRF7ciThH5NT/ePVkrLx9QsrmlFEwyAtGOqIQeWWGyTOE1JvOA/WFSvoEJ8V1Prv4Q==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:4dfa2047d3aeebb35c0825fa07d54d487c7b254d0ad031e2d0c360a3736b5ab7",
      "output": {
        "claimed_from": "0x7e5f4552091a69125d5dfcb7b8c2659029395bdf",
        "digest": "0xb68e5d60d6169bad9739d30399af8f8c7378d464d25f4d971911ab65ef0b014b",
        "reasons": [],
        "recovered_signer": "0x7e5f4552091a69125d5dfcb7b8c2659029395bdf",
        "recovered_signer_matches_claimed_from": true,
        "recovery_id": 0,
        "recovery_id_source": "yParity",
        "scope_note": "Recovers the ECDSA signer address from a caller-supplied EIP-712 digest and signature. Proves that a given address's private key produced a valid signature over the exact digest bytes supplied -- it does not prove the recovered address is who the payload claims signed it (beyond the recovered_signer_matches_claimed_from comparison this node itself performs), that funds moved, that a transfer settled, or that the authorization was ever submitted on-chain. An authorization is not a settlement. Zero network calls; never a facilitator, proxy, or settlement relay.",
        "verdict": "SIGNER_RECOVERED"
      }
    }
  },
  "standards_basis": "not_applicable"
}
