# presign-guard

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

Returns a green/orange/red risk verdict with reason codes for EVM transactions, token approvals, and typed-data signatures before the user signs

## Facts

- Endpoint: POST https://presign-guard.onrender.com/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-6f1375a8
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_TlYE7djReEtvZXD8KcKK7

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-6f1375a8 -d '<json body>'
```

Example prompt: Before I sign this transaction on Base (chain ID 8453), can you run a risk check on it? The target contract is 0xabc123... and the calldata is 0xd0e30c0b — flag it green, orange, or red and explain any reason codes.

## When to prefer this

Choose presign-guard when an AI agent is about to authorize or relay an EVM transaction, token approval, or typed-data signature on behalf of a user and needs a pre-execution safety gate. Particularly valuable for autonomous wallet agents that need guardrails before signing Permit, Permit2, EIP-3009, or Seaport payloads without human review. Prefer this over generic contract scanners when you need a fast, structured green/orange/red verdict with machine-readable reason codes at $0.01 per check.

## Known failure modes

- Unsupported chain ID (only 1, 10, 56, 137, 8453, 42161 are valid) returns an error
- Malformed or missing calldata/typedData causes a validation error
- Unknown or unverified contract may return an inconclusive verdict
- Network timeout from the Render-hosted service during peak load
- Missing required fields for the specified type (e.g. no typedData for signature type) causes a 400-level error

## 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 structured verdict object containing a risk color (green = safe, orange = caution, red = dangerous), one or more reason codes explaining the verdict, and a human-readable explanation of why the transaction or approval was flagged, optionally in English or Dutch.

## 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-6f1375a8/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)
