# EIP-712 Typed-Data Signature Explainer & Safety Checker

> EIP-712 Typed-Data Signature Explainer & Safety Checker 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-02).

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

## Facts

- Endpoint: POST https://api.vextorium.com/revisar-firma-pago?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/eip-712-typed-data-signature-explainer-safety-checker-5428c02c
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_sMF7JJghIzSKqsNDBGYhS

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-explainer-safety-checker-5428c02c -d '<json body>'
```

Example prompt: Before I sign this wallet request, can you decode and safety-check this EIP-712 payload for me? Here's the typed-data object from MetaMask: {domain: {name: 'USDC', chainId: 1, verifyingContract: '0xa0b8...'}, primaryType: 'TransferWithAuthorization', types: {...}, message: {from: '0xabc...', to: '0xdef...', value: '500000000', validAfter: 0, validBefore: 9999999999, nonce: '0x...'}} — flag any unlimited allowances, suspicious validity windows, or non-official tokens.

## When to prefer this

Use this endpoint when an AI agent or user needs to understand and safety-check an EIP-712 typed-data signature request before signing — especially for x402/EIP-3009 payment authorizations, EIP-2612 permits, Permit2, or Seaport orders. It is the right choice when the goal is risk analysis and human-readable explanation rather than executing a transaction. Prefer it over generic blockchain explorers when you need structured alerts (unlimited allowance, long validity, non-official token) and the exact signing hash for wallet verification.

## Known failure modes

- Malformed or incomplete EIP-712 object returns a validation error
- Unrecognized primaryType may result in partial decoding with reduced summary detail
- Non-standard token contracts may trigger 'non-official token' alert rather than a hard error
- Missing required fields in typed-data (domain, types, primaryType, message) cause a 400-style error
- Chain ID not recognized may limit network identification

## 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 structured JSON with: a human-readable summary (action, from/to addresses, token, amount, validity window), a verdict (safe/warning/danger), an array of alerts for risks like unlimited allowances or long validity, the application and verifier contract address, the exact hash-to-sign for wallet comparison, domain separator, and message hash.

## 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": [
      "datos_firma"
     ],
     "properties": {
      "datos_firma": {
       "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": {
      "red": {
       "type": [
        "string",
        "null"
       ]
      },
      "nota": {
       "type": [
        "string",
        "null"
       ]
      },
      "tipo": {
       "type": [
        "string",
        "null"
       ]
      },
      "alertas": {
       "type": [
        "array",
        "null"
       ],
       "items": {}
      },
      "resumen": {
       "type": [
        "object",
        "null"
       ],
       "properties": {
        "para": {
         "type": [
          "string",
          "null"
         ]
        },
        "desde": {
         "type": [
          "string",
          "null"
         ]
        },
        "token": {
         "type": [
          "string",
          "null"
         ]
        },
        "accion": {
         "type": [
          "string",
          "null"
         ]
        },
        "importe": {
         "type": [
          "string",
          "null"
         ]
        },
        "valido_desde": {
         "type": [
          "string",
          "null"
         ]
        },
        "valido_hasta": {
         "type": [
          "string",
          "null"
         ]
        }
       }
      },
      "veredicto": {
       "type": [
        "string",
        "null"
       ]
      },
      "aplicacion": {
       "type": [
        "string",
        "null"
       ]
      },
      "hash_a_firmar": {
       "type": [
        "string",
        "null"
       ]
      },
      "hash_d
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "red": "Base",
  "nota": "Compara 'hash_a_firmar' con el que muestre tu wallet: si coinciden, firmas exactamente esto.",
  "tipo": "TransferWithAuthorization",
  "alertas": [],
  "resumen": {
   "para": "0x2222222222222222222222222222222222222222",
   "desde": "0x1111111111111111111111111111111111111111",
   "token": "USDC oficial",
   "accion": "Autorizar un pago (EIP-3009, el que usa x402 en redes EVM)",
   "importe": "0.01 USDC",
   "valido_desde": "2026-09-28 22:21 UTC",
   "valido_hasta": "2026-09-28 22:27 UTC"
  },
  "veredicto": "ok",
  "aplicacion": "USD Coin",
  "hash_a_firmar": "0x06a81ecc73b8782ba9eb12a8dabd4e939c996fdf315485be12b25b0272724806",
  "hash_del_mensaje": "0xa77c7438121ad832f331edb2dd5a83d0eb089d6d9ebc14b26dc245ea9f447b32",
  "contrato_verificador": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "separador_de_dominio": "0x02fa7265e7c5d81118673727957699e4d68f74cd74b7db77da710fe8a2c7834f"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/eip-712-typed-data-signature-explainer-safety-checker-5428c02c/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)
