# EIP-712 Typed-Data Signature Reviewer

> EIP-712 Typed-Data Signature Reviewer is a paid API for AI agents from api.vextorium.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-11).

Decodes and audits EIP-712 typed-data signature requests (x402/EIP-3009, EIP-2612 permits, Permit2, Seaport) before signing, flagging risks and returning the exact hash to verify against your wallet.

## Facts

- Endpoint: POST https://api.vextorium.com/v1/eip712-review?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/eip-712-typed-data-signature-reviewer-18f49c3d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_X4033yCPRIkVSNH2Mm5va

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 eip-712-typed-data-signature-reviewer-18f49c3d -d '<json body>'
```

Example prompt: Before I sign this, can you decode this EIP-712 typed-data object and tell me what I'm actually authorizing — the token, amount, recipient, validity window — and flag anything suspicious like unlimited allowances or long expiry? Here's the signature data: {domain: {name: 'USD Coin', version: '2', chainId: 8453, verifyingContract: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'}, types: {TransferWithAuthorization: [...]}, primaryType: 'TransferWithAuthorization', message: {from: '0x111...', to: '0x222...', value: '10000', validAfter: 0, validBefore: 9999999999, nonce: '0xabc...'}}

## When to prefer this

Use this endpoint when an agent or user is about to sign an EIP-712 typed-data message and needs a human-readable explanation of what they are authorizing before committing. Especially valuable for x402/EIP-3009 payment flows, EIP-2612 permits, Permit2 batch approvals, and Seaport marketplace orders where the raw typed data is opaque. Prefer this over generic blockchain explorers when you need structured risk analysis (unlimited allowance flags, validity window warnings, non-official token detection) and a verifiable hash to compare against wallet UI output.

## Known failure modes

- Malformed or incomplete EIP-712 object missing required fields (domain, types, primaryType, message) returns a validation error
- Unknown or unsupported signature type may return limited decoding with reduced context
- Unrecognized token contract address flagged as non-official in alerts rather than causing failure
- Network not supported may result in incomplete network metadata
- Payment failure (insufficient USDC balance) blocks the call entirely

## How this service works

Explain an EIP-712 typed-data signature before signing it: x402/EIP-3009 payment authorizations, EIP-2612 permits, Permit2 and Seaport orders. Flags unlimited allowances, long validity and non-official tokens, and returns the exact hash to compare with your wallet.

## Output

Returns a decoded summary including: the signature type (e.g. TransferWithAuthorization, Permit), network, token name and official status, amount, from/to addresses, validity window, verifier contract, and a verdict (ok/warning/danger). Also returns the computed hash_to_sign, message_hash, and domain_separator so you can cross-check against your wallet's displayed hash. Alerts array flags issues like unlimited allowances, long validity periods, or unrecognized tokens.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "required": [
      "signature_data"
     ],
     "properties": {
      "signature_data": {
       "type": "object",
       "description": "EIP-712 object as passed to eth_signTypedData_v4: domain, types, primaryType, message"
      }
     }
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": [
      "object",
      "null"
     ],
     "properties": {
      "note": {
       "type": [
        "string",
        "null"
       ]
      },
      "type": {
       "type": [
        "string",
        "null"
       ]
      },
      "alerts": {
       "type": [
        "array",
        "null"
       ],
       "items": {}
      },
      "network": {
       "type": [
        "string",
        "null"
       ]
      },
      "summary": {
       "type": [
        "object",
        "null"
       ],
       "properties": {
        "for": {
         "type": [
          "string",
          "null"
         ]
        },
        "since": {
         "type": [
          "string",
          "null"
         ]
        },
        "token": {
         "type": [
          "string",
          "null"
         ]
        },
        "action": {
         "type": [
          "string",
          "null"
         ]
        },
        "amount": {
         "type": [
          "string",
          "null"
         ]
        },
        "valid_since": {
         "type": [
          "string",
          "null"
         ]
        },
        "valid_until": {
         "type": [
          "string",
          "null"
         ]
        }
       }
      },
      "verdict": {
       "type": [
        "string",
        "null"
       ]
      },
      "application": {
       "type": [
        "string",
        "null"
       ]
      },
      "hash_to_sign": {
       "type": [
        "string",
        "null"
       ]
      },
      "mes
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "note": "Compare 'hash_to_sign' with the one your wallet shows: if they match, you are signing exactly this.",
  "type": "TransferWithAuthorization",
  "alerts": [],
  "network": "Base",
  "summary": {
   "for": "0x2222222222222222222222222222222222222222",
   "since": "0x1111111111111111111111111111111111111111",
   "token": "USDC oficial",
   "action": "Authorize a payment (EIP-3009, the one x402 uses on EVM networks)",
   "amount": "0.01 USDC",
   "valid_since": "2026-09-28 22:21 UTC",
   "valid_until": "2026-09-28 22:27 UTC"
  },
  "verdict": "ok",
  "application": "USD Coin",
  "hash_to_sign": "0x06a81ecc73b8782ba9eb12a8dabd4e939c996fdf315485be12b25b0272724806",
  "message_hash": "0xa77c7438121ad832f331edb2dd5a83d0eb089d6d9ebc14b26dc245ea9f447b32",
  "domain_separator": "0x02fa7265e7c5d81118673727957699e4d68f74cd74b7db77da710fe8a2c7834f",
  "verifier_contract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/eip-712-typed-data-signature-reviewer-18f49c3d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.vextorium.com](https://www.zero.xyz/host/api.vextorium.com/llms.txt)
