# presign-guard /v1/check

> presign-guard /v1/check is a paid API for AI agents from presign-guard.fizzl.eu, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-11).

Returns a green/orange/red safety verdict with reason codes for EVM transactions, token approvals, and typed-data signatures before they are signed

## Facts

- Endpoint: POST https://presign-guard.fizzl.eu/v1/check?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/presign-guard-v1-check-3b86cebe
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_fmT_5Qc7_o1YTcWZRiESI

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 presign-guard-v1-check-3b86cebe -d '<json body>'
```

Example prompt: Before I sign this Uniswap approval on Ethereum mainnet (chain ID 1), check if it's safe — the spender is 0xE592427A0AEce92De3Edee1F18E0157C05861564, the token is 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 (USDC), and the amount is 115792089237316195423570985008687907853269984665640564039457584007913129639935 (unlimited).

## When to prefer this

Use this endpoint when an AI agent or automated wallet is about to sign any EVM transaction, token approval, or typed-data signature and needs a fast, structured safety verdict before execution. It is especially valuable for agentic DeFi workflows where the agent cannot rely on human review, for catching OFAC-sanctioned counterparties, unlimited allowances, or phishing-style Permit/Seaport signatures. Choose this over generic contract explorers when you need a machine-readable verdict (green/orange/red + reason codes) that can gate signing logic programmatically.

## Known failure modes

- Unsupported chain ID returns an error (only chains 1, 10, 56, 137, 8453, 42161 are supported)
- Missing required fields for the chosen type (e.g. approval without spender) returns a 422 validation error
- Malformed calldata or invalid address format causes a parsing error
- Rate limiting or insufficient credits results in a 402 Payment Required response
- Unrecognized typedData schema may produce an incomplete analysis

## How this service works

Is this transaction, approval or signature safe to sign? Check it before your AI agent or wallet signs it: pre-sign verdict (green/orange/red + reason codes) for EVM transactions, token approvals and Permit/Permit2/EIP-3009/Seaport signatures. Screens the spender or recipient wallet for OFAC sanctions and scam, phishing or theft reports, and flags unlimited allowances, plain-wallet spenders and risky tokens. Bulk: 100 checks for $0.80 via /v1/credits.

## Output

A pre-sign verdict of green (safe), orange (caution), or red (dangerous) accompanied by structured reason codes such as OFAC_MATCH, SCAM_REPORTED, UNLIMITED_ALLOWANCE, PLAIN_WALLET_SPENDER, RISKY_TOKEN, NEW_DOMAIN, or similar flags explaining the risk level.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "to": {
   "type": "string",
   "description": "transaction: target contract"
  },
  "tx": {
   "type": "object",
   "description": "xrpl: the unsigned transaction JSON"
  },
  "data": {
   "type": "string",
   "description": "transaction: 0x-prefixed calldata"
  },
  "from": {
   "type": "string",
   "description": "optional: your wallet; an EVM transaction is then simulated"
  },
  "lang": {
   "enum": [
    "en",
    "nl"
   ],
   "type": "string",
   "description": "explain only: en or nl"
  },
  "type": {
   "enum": [
    "approval",
    "transaction",
    "signature",
    "message",
    "solana",
    "xrpl",
    "algorand"
   ],
   "type": "string",
   "description": "What is about to be signed"
  },
  "x402": {
   "type": "object",
   "description": "optional, EIP-3009 payments: the x402 accepts entry being paid"
  },
  "token": {
   "type": "string",
   "description": "approval: token contract"
  },
  "value": {
   "type": "string",
   "description": "transaction: native value in wei"
  },
  "amount": {
   "type": "string",
   "description": "approval: amount in base units (0 = revoke)"
  },
  "intent": {
   "type": "string",
   "maxLength": 500,
   "description": "optional: what the agent means to do, in one sentence"
  },
  "method": {
   "enum": [
    "personal_sign",
    "eth_sign"
   ],
   "type": "string",
   "description": "message: personal_sign (default) or eth_sign"
  },
  "origin": {
   "type": "string",
   "description": "optional: the site asking (URL or hostname)"
  },
  "chainId": {
   "enum": [
    1,
    10,
    56,
    137,
    8453,
    42161
   ],
   "type": "integer",
   "description": "EVM chain; required for approval, transaction and signature"
  },
  "mandate": {
   "type": "object",
   "description": "optional, EIP-3009 payments: the spending mandate paid under"
  },
  "message": {
   "type": "string",
   "maxLength": 16384,
   "description": "message: the text or 0x-hex to be signed"
  },
  "network": {
   "enum": [
    "xrpl:0",
    "xrpl:1"
   ],
   "type": "string",
   "description": "xrpl: xrpl:0 (default) or xrpl:1"
  },
  "spender": {
   "type": "string",
   "description": "approval: who gets the allowance"
  },
  "typedData": {
   "type": [
    "object",
    "string"
   ],
   "description": "signature: the eth_signTypedData_v4 payload"
  },
  "transaction": {
   "type": "string",
   "maxLength": 12000,
   "description": "solana: the base64 wire transaction; algorand: one base6
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/presign-guard-v1-check-3b86cebe/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from presign-guard.fizzl.eu](https://www.zero.xyz/host/presign-guard.fizzl.eu/llms.txt)
