{"uid":"cap_4uG8QkJeWTqeKLcu62Pp7","slug":"eip-191-eip-712-signature-verifier-signer-recovery-42d00068","name":"EIP-191 / EIP-712 Signature Verifier & 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://api.agentstools.dev/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_BKkSU_BVQmtpN_mxASQoM","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 a message and signature pair.","exampleAgentPrompt":"Can you verify this Ethereum EIP-191 personal_sign signature — the message is 'Hello, World!' and the signature is 0xabc123...def, and check if it was signed by 0xDeadBeef...1234?","exampleUseCases":[{"title":"Wallet-based login verification","prompt":"A user is trying to log in by signing the message 'Login to MyApp at 1700000000' using personal_sign. Their claimed address is 0xAbCd...1234 and their signature is 0x5f3e...ab12. Can you verify the EIP-191 signature and confirm it matches that address?"},{"title":"EIP-712 typed-data permit validation","prompt":"I have an EIP-712 typed-data signature for a token permit — the typed-data includes the domain, types, primaryType, and message fields. The signature is 0xf1a2...cc99. Can you recover the signer address from this typed-data signature and tell me who signed it?"},{"title":"Off-chain governance vote authentication","prompt":"We received a governance vote from someone claiming to be 0x9988...5566. They signed the message 'Vote YES on Proposal #42' using personal_sign and provided signature 0xd3e1...7700. Please verify the EIP-191 signature and confirm it actually came from that address."}],"resultDescription":"Returns the recovered Ethereum address derived from the message and signature, a boolean indicating whether the signature is valid, and optionally whether the recovered address matches the provided expected_signer address.","failureModes":["Invalid or malformed 0x signature (not 65 bytes) returns an error","Mismatched scheme — passing EIP-712 typed-data with eip191 scheme or vice versa causes recovery failure","Malformed typed-data object (missing types/domain/primaryType/message) for EIP-712 returns a parse error","Non-hex or improperly encoded message may cause decoding errors","Expected_signer address mismatch returns valid recovery result but a negative match flag"],"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 signing address without any signing capability — ideal for authentication flows, off-chain governance, permit validation, or any scenario where a user proves ownership of a wallet by signing a message.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T00:55:23.241Z","isFirstParty":false}