# Busker Signature Verifier

> Busker Signature Verifier is a paid API for AI agents from workbot1.oddsys.org, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-12).

Verifies EVM signatures offline — EIP-191 personal messages, EIP-712 typed data, and x402/EIP-3009 payment authorizations — recovering the signing wallet and reporting authorization details without any blockchain reads.

## Facts

- Endpoint: POST https://workbot1.oddsys.org/verify-sig?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/busker-signature-verifier-cb52fc83
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_G-7-eglC2ctW5VMICaLC3

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 busker-signature-verifier-cb52fc83 -d '<json body>'
```

Example prompt: Can you verify this EVM signature for me — check if wallet 0xAbC...123 actually signed this EIP-191 personal message '0xdeadbeef...' with signature 0x1a2b...ff, and tell me if it matches?

## When to prefer this

Choose this endpoint when you need offline, no-RPC EVM signature verification — especially for x402/EIP-3009 payment headers that need to be validated server-side before processing. It handles all three EVM signature flavors (EIP-191, EIP-712, EIP-3009) in a single call and can parse raw base64 Payment-Signature headers directly. Prefer it over on-chain verification when latency, cost, or RPC availability is a concern, and when the authorization data is fully contained in the signed payload.

## Known failure modes

- Invalid or malformed signature (not 65 bytes, incorrect 0x prefix) returns an error
- Mismatched EIP-712 domain or types cause wrong signer recovery without explicit error
- Expired or not-yet-valid authorization windows are reported but not treated as hard errors
- Malformed base64 paymentHeader fails to decode
- Missing required fields for the chosen verification mode (e.g. authorization without signature) cause validation errors
- Wrong network/chainId in domain causes incorrect recovery for non-USDC tokens

## How this service works

Verify EVM signatures offline: EIP-191 personal messages, EIP-712 typed data, and x402/EIP-3009 payment authorizations (paste a raw Payment-Signature header) — recovers the signing wallet, checks it against an expected address, and reports the authorization's amount, payee and validity window. No chain reads.

## Output

Returns the recovered signer wallet address, a boolean indicating whether it matches the expected address (if provided), and — for EIP-3009/x402 authorizations — the authorized amount, payee address, and validity window (validAfter/validBefore timestamps). All computation is done off-chain with no blockchain reads.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "domain": {
   "type": "object",
   "description": "Explicit EIP-712 domain { name, version, chainId, verifyingContract } for a non-USDC token."
  },
  "address": {
   "type": "string",
   "description": "Expected signer; when given the response carries a matches boolean."
  },
  "message": {
   "type": "string",
   "description": "Plain message that was signed with personal_sign (EIP-191)."
  },
  "network": {
   "type": "string",
   "description": "CAIP-2 network for authorization mode (default eip155:8453 = USDC on Base)."
  },
  "signature": {
   "type": "string",
   "description": "0x-prefixed 65-byte signature."
  },
  "typedData": {
   "type": "object",
   "description": "EIP-712 payload { domain, types, primaryType, message } exactly as signed."
  },
  "authorization": {
   "type": "object",
   "description": "EIP-3009 TransferWithAuthorization fields { from, to, value, validAfter, validBefore, nonce } (the x402 payload.authorization object)."
  },
  "paymentHeader": {
   "type": "string",
   "description": "Raw base64 value of an x402 Payment-Signature / X-Payment header; decoded and verified in one step."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/busker-signature-verifier-cb52fc83/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from workbot1.oddsys.org](https://www.zero.xyz/host/workbot1.oddsys.org/llms.txt)
