# Verify Wallet Signature (EIP-191 / personal_sign)

> Verify Wallet Signature (EIP-191 / personal_sign) is a paid API for AI agents from flat-rate-llm.kikoribera03.workers.dev, paid per call via x402, $0.0025/call, status unknown (last checked 2026-09-13).

Recovers the Ethereum address that produced a personal_sign (EIP-191) signature and checks whether it matches an expected address, proving wallet ownership.

## Facts

- Endpoint: POST https://flat-rate-llm.kikoribera03.workers.dev/v1/util/verify-signature
- Price: $0.0025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/verify-wallet-signature-eip-191-personal-sign-8e02257c
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_iLaJItg1M72PtOB7sFygh

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability verify-wallet-signature-eip-191-personal-sign-8e02257c -d '<json body>'
```

Example prompt: Check if the Ethereum address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 actually signed the message 'Sign in to MyApp: nonce=abc123' — the signature is 0x4a1b2c...deadbeef. Does it match?

## When to prefer this

Choose this endpoint when you need to cryptographically verify an EIP-191 (personal_sign) Ethereum wallet signature — especially for Web3 login flows, off-chain authorization proofs, or allowlist checks. It is purpose-built for standard personal_sign signatures and returns both the recovered address and a match boolean in one call, avoiding the need to run ecrecover logic yourself. Not suitable for EIP-712 typed-data signatures or smart-contract wallet (ERC-1271) verification.

## Known failure modes

- Invalid or malformed signature (not 65 bytes, bad hex encoding) returns an error
- Message mismatch — if the message passed differs from what was actually signed, the recovered address will be wrong but no error is thrown
- Missing required fields (message or signature) return a validation error
- Signature produced by a method other than personal_sign (e.g. signTypedData) will recover an incorrect address
- Network or worker timeout on high load

## How this service works

60 paid endpoints with no metering, no API key and no account. Each endpoint has one flat price per call, whatever the size of the request: LLM completions with automatic failover across several large models, read-only EVM tooling over Base, Ethereum, Polygon, Arbitrum and Optimism, and pure crypto utilities that touch no network.

## Output

Returns a JSON object with 'signer' (the recovered Ethereum address that produced the signature) and 'matches' (a boolean indicating whether the recovered signer equals the expected address you provided). If no expected address is given, only the recovered signer is returned.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "message",
  "signature"
 ],
 "properties": {
  "message": {
   "type": "string",
   "description": "The exact message that was signed."
  },
  "expected": {
   "type": "string",
   "description": "Optional address to compare the recovered signer against."
  },
  "signature": {
   "type": "string",
   "description": "65-byte 0x signature from personal_sign."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "signer": {
   "type": "string"
  },
  "matches": {
   "type": "boolean"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/verify-wallet-signature-eip-191-personal-sign-8e02257c/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from flat-rate-llm.kikoribera03.workers.dev](https://www.zero.xyz/host/flat-rate-llm.kikoribera03.workers.dev/llms.txt)
