{"uid":"cap_O7e5J7vpHkjLWedHc_D9O","slug":"eip-191-signature-verifier-signer-recovery-00f3a2ac","name":"EIP-191 Signature Verifier & Signer Recovery","description":"Recover the signer of an EIP-191 personal_sign signature over a message, and optionally check it against an expected address. For verifying agent and wallet signatures. verify signature, ecrecover, personal sign, eip191, signer recovery","url":"https://api.x402node.dev/crypto/sign-verify","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"address":{"type":"string","description":"optional expected signer to compare against"},"message":{"type":"string","description":"the signed message string (required)"},"signature":{"type":"string","description":"0x signature (required)"}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.02","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.02/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_6s-UcqY3Ng1mwC2qRX6Ov","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.02","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Recovers the signing address from an EIP-191 personal_sign signature and optionally validates it against an expected address","exampleAgentPrompt":"Can you recover the signer address from this EIP-191 personal_sign signature and check if it matches the wallet 0xAbCd1234...? The original message was 'Login to my app at 2024-01-15T12:00:00Z' and the signature is 0x4a5e1e...","exampleUseCases":[{"title":"Authenticate agent access via wallet signature","prompt":"I need to verify that the request from my agent came from wallet 0x742d35Cc6634C0532925a3b844Bc9e7595f42172. Can you recover the signer from this personal_sign signature and confirm it matches that address? The message signed was 'Agent auth request' and the signature is 0x8f4a2c9e1b..."},{"title":"Validate multi-agent request authorization","prompt":"Before executing this payment instruction, can you verify the signature came from our authorized agent wallet? The message was 'Transfer funds approval' and here's the signature: 0x5d9b3f... Just let me know if it matches wallet 0x1234567890abcdef1234567890abcdef12345678"},{"title":"Confirm wallet ownership for marketplace settlement","prompt":"A user claims they own wallet 0x9876543210fedcba9876543210fedcba98765432 and signed this message to prove it. Can you recover the address from their signature and verify it's actually from that wallet? The message was 'Confirm wallet ownership' and signature is 0x2c7e9a1f..."}],"resultDescription":"Returns the Ethereum address recovered via ecrecover from the EIP-191 personal_sign signature, plus a boolean or status indicating whether it matches the optionally provided expected address","failureModes":["Invalid signature format returns an error — signature must be a valid 65-byte hex string","Malformed message input (e.g. wrong encoding) may yield an incorrect recovered address with no error","If the expected address does not match the recovered signer, returns a mismatch/false result","Missing required fields (message or signature) returns a 400-level error","Signature from a non-personal_sign scheme (e.g. EIP-712 typed data) will produce an incorrect recovered address"],"whenToPreferThis":"Use this endpoint when you need to cryptographically verify that a specific Ethereum wallet signed a plaintext message using the standard EIP-191 personal_sign method (e.g. MetaMask 'Sign Message'). Prefer this over alternatives when you need both recovery and optional address matching in a single call, especially for agent or wallet authentication flows that rely on the x402 payment protocol ecosystem.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T18:56:50.647Z","isFirstParty":false}