# Tanod chainpeek Token Approvals Audit

> Tanod chainpeek Token Approvals Audit is a paid API for AI agents from tanod.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-14).

Returns live ERC-20 and Permit2 token allowances for a wallet on Base or Ethereum, with risk flags and unsigned revoke transactions ready to broadcast.

## Facts

- Endpoint: POST https://tanod.dev/v1/chain/approvals?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-chainpeek-token-approvals-audit-8287fced
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_tML-2JDeanr5q174iwmwW

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 tanod-chainpeek-token-approvals-audit-8287fced -d '<json body>'
```

Example prompt: Show me all live token approvals for my wallet 0xAbCd...1234 on Base — flag any risky or stale ones and give me unsigned revoke transactions I can broadcast for anything suspicious.

## When to prefer this

Use this endpoint when an agent needs to audit a specific wallet's live token spending permissions on Base or Ethereum, especially after a suspicious signature, on a security schedule, or when revoke-ready transaction payloads are needed. Prefer it over generic block explorer queries because it combines ERC-20 approval event scanning, direct Permit2 slot reads, risk classification, and unsigned revoke transaction generation in a single call.

## Known failure modes

- Invalid wallet or token address format (must be 0x + 40 hex chars)
- Unsupported chain value (only 'base' or 'ethereum' accepted)
- Token or spender list exceeds 50 entries (400 error)
- tokens × spenders product exceeds 200 (coverage cap)
- RPC or indexer timeout for high lookback_blocks ranges
- Payment failure or insufficient USDC balance (x402 protocol rejection)
- No approvals found returns empty list, not an error

## How this service works

chainpeek (Tanod) live token approvals of a wallet: ERC-20 and Permit2 allowances with risk flags and unsigned revoke transactions, on Base or Ethereum. Use when an agent must list and revoke its wallet's live token approvals, on a schedule or after a risky signature.

## Output

A list of live ERC-20 and Permit2 allowances for the audited wallet, each annotated with risk flags (e.g. unlimited allowance, unknown spender, stale usage), the spender address, token details, and a pre-built unsigned revoke transaction payload ready to sign and broadcast.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "chain": {
   "enum": [
    "base",
    "ethereum"
   ],
   "type": "string",
   "description": "base or ethereum (the chains with built-in USDC and USDT here)."
  },
  "tokens": {
   "anyOf": [
    {
     "type": "array",
     "items": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$"
     },
     "maxItems": 50,
     "minItems": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Up to 50 token contracts to audit. Default: USDC, USDT and up to 18 tokens the wallet has sent (from its transfer history)."
  },
  "wallet": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$",
   "description": "The wallet whose approvals are audited (0x + 40 hex)."
  },
  "spenders": {
   "anyOf": [
    {
     "type": "array",
     "items": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$"
     },
     "maxItems": 50,
     "minItems": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Up to 50 spender addresses whose ERC-20 and Permit2 allowances are read directly on every audited token, however old (tokens x spenders at most 200). The full-coverage path for spenders you know."
  },
  "stale_days": {
   "type": "integer",
   "default": 90,
   "maximum": 3650,
   "minimum": 1,
   "description": "An allowance is stale when the spender pulled nothing from the wallet in this many days (1-3,650; default 90)."
  },
  "lookback_blocks": {
   "type": "integer",
   "default": 6000,
   "maximum": 6000,
   "minimum": 0,
   "description": "Latest blocks scanned for approval events (0-6,000; default 6,000, about 3.3 hours on Base and 20 hours on Ethereum). 0 scans nothing and checks `spenders` and Permit2 only."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-chainpeek-token-approvals-audit-8287fced/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tanod.dev](https://www.zero.xyz/host/tanod.dev/llms.txt)
