{"uid":"cap_kNIyMrVu3iJnN8ayIV_qj","slug":"eip-191-eip-712-signature-verification-signer-recovery-270c53a3","name":"EIP-191/EIP-712 Signature Verification & Signer Recovery","description":"Verify an EIP-191 personal_sign or EIP-712 typed-data signature and recover the signer address from public inputs (message + signature). Verification/recovery only — never signs.","url":"https://webtools402.176-109-107-191.sslip.io/crypto/verify","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"scheme":{"enum":["eip191","eip712"],"type":"string","description":"eip191 personal_sign or eip712 typed-data"},"message":{"description":"Plain text / 0x-hex (eip191) OR a full typed-data object with types/domain/primaryType/message (eip712)"},"signature":{"type":"string","description":"0x 65-byte signature"},"expected_signer":{"type":"string","description":"Optional address to compare the recovered signer against"}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.003","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.003/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_ZFcOjHT2COokpwu2eWiZ2","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.003","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Verifies an Ethereum EIP-191 personal_sign or EIP-712 typed-data signature and recovers the signer's address from the message and signature inputs.","exampleAgentPrompt":"Can you verify this Ethereum signature and tell me which wallet address signed it? The scheme is eip191, the message is 'Hello, World!', and the signature is 0x4355c47d63924e8a72e509b65029052eb6c299d53a04e167c5775fd466751c9d07299936d304c153f6443dfa05f40ff007d72911b6f72307f996231605b915621c. Also check if it matches 0xAbCd1234...","exampleUseCases":[{"title":"Wallet ownership authentication","prompt":"A user just signed the challenge string 'Login to MyApp at 2024-01-15T10:00:00Z' with their wallet and sent me the signature 0x4355c47d63924e8a72e509b65029052eb6c299d53a04e167c5775fd466751c9d07299936d304c153f6443dfa05f40ff007d72911b6f72307f996231605b915621c. Use eip191 to verify it and check if the recovered address matches 0xAbCd1234EF567890abcd1234ef567890ABCD1234."},{"title":"EIP-712 typed-data signature check","prompt":"I have an EIP-712 typed-data signature for an NFT marketplace order — the typed-data object has types, domain, primaryType, and message fields. Please verify the signature 0xabc123...def and recover the signer address to confirm the seller actually approved this listing."},{"title":"Forensic signer recovery","prompt":"I have a 0x-prefixed 65-byte signature and the original plaintext message but I have no idea who signed it. Use eip191 to recover the Ethereum wallet address that produced this signature so I can figure out who authorized this transaction."}],"resultDescription":"Returns the recovered Ethereum signer address derived from the provided message and signature, along with whether the signature is valid. If an expected_signer address was provided, also returns whether the recovered address matches it.","failureModes":["Invalid or malformed signature (not 65 bytes / not 0x-prefixed) returns an error","Mismatched scheme — using eip191 for a typed-data signature or vice versa — causes incorrect recovery or error","Malformed EIP-712 typed-data object (missing types/domain/primaryType/message) causes a parse error","Recovered address does not match expected_signer — returns mismatch result, not an exception","Network or service unavailability returns a non-200 HTTP error","Payment failure via x402 protocol blocks the request"],"whenToPreferThis":"Choose this endpoint when you need to cryptographically verify an Ethereum wallet signature (either EIP-191 personal_sign or EIP-712 typed-data) and recover the signer address without any signing capability — ideal for authentication flows, provenance checks, and access control in Web3 applications. Prefer this over general-purpose crypto libraries when operating in an agent/serverless context where you want a hosted, pay-per-call verification service that supports both EIP standards and optional address matching in one call.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T12:45:25.968Z","isFirstParty":false}