# presign-guard /v1/check/explain

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

Returns a pre-sign risk verdict (green/orange/red) plus a plain-language explanation in English or Dutch for a transaction, token approval, or signature

## Facts

- Endpoint: POST https://presign-guard.onrender.com/v1/check/explain?utm_source=zero.xyz
- Price: $0.03/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-explain-75247c58
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_tWElUbSJxNALb9xbDdO0r

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-explain-75247c58 -d '<json body>'
```

Example prompt: Before I sign this approval, can you explain what it does and whether it's safe? The spender is 0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F, the token is 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 (USDC), the amount is 115792089237316195423570985008687907853269984665640564039457584007913129639935 (max), on chain 1 — explain it in English.

## When to prefer this

Choose this endpoint when you need not just a pass/fail verdict but a human-readable explanation of why a transaction or approval is risky — especially useful when the agent must relay the reasoning to a non-technical user. It is ideal when you need bilingual support (Dutch or English) or when the user wants to understand a complex EIP-712 typed data payload such as Permit, Permit2, or Seaport orders before signing. Prefer the sibling /check endpoint if you only need the verdict and reason code without a verbose explanation.

## Known failure modes

- Unsupported chainId (not in [1,10,56,137,8453,42161]) returns validation error
- Missing required fields for the given type (e.g. no 'to' or 'data' for a transaction) returns error
- Malformed calldata or invalid contract address returns parsing error
- Unrecognized typed data schema may result in lower-confidence verdict
- Payment failure (x402) blocks the request if USDC payment is not attached

## How this service works

Pre-sign risk verdict plus a plain-language explanation in Dutch or English

## Output

A JSON response containing a risk verdict (green, orange, or red), and a plain-language explanation in English or Dutch describing what the transaction/approval/signature does, why it is or isn't risky, and any specific red flags detected such as unlimited approvals, new domains, or known exploit patterns.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "to": {
   "type": "string",
   "description": "transaction: target contract"
  },
  "data": {
   "type": "string",
   "description": "transaction: 0x-prefixed calldata"
  },
  "lang": {
   "enum": [
    "en",
    "nl"
   ],
   "type": "string",
   "description": "explain only: language of the explanation (default en)"
  },
  "type": {
   "enum": [
    "approval",
    "transaction",
    "signature"
   ],
   "type": "string",
   "description": "What the agent is about to sign"
  },
  "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)"
  },
  "origin": {
   "type": "string",
   "description": "optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange"
  },
  "chainId": {
   "enum": [
    1,
    10,
    56,
    137,
    8453,
    42161
   ],
   "type": "integer"
  },
  "spender": {
   "type": "string",
   "description": "approval: who gets the allowance"
  },
  "typedData": {
   "type": [
    "object",
    "string"
   ],
   "description": "signature: the eth_signTypedData_v4 payload (Permit, Permit2, EIP-3009 x402 payment, Seaport)"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/presign-guard-v1-check-explain-75247c58/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from presign-guard.onrender.com](https://www.zero.xyz/host/presign-guard.onrender.com/llms.txt)
