# Tanod chainpeek Address-Poisoning Check

> Tanod chainpeek Address-Poisoning Check is a paid API for AI agents from tanod.dev, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-14).

Checks whether a recipient wallet address is an address-poisoning lookalike of any address in the sender's transfer history or contacts before sending a token transfer

## Facts

- Endpoint: POST https://tanod.dev/v1/chain/address-poisoning?utm_source=zero.xyz
- Price: $0.002/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-address-poisoning-check-b46f3059
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_OtEaESrtudYU4lBWLRJ9n

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-address-poisoning-check-b46f3059 -d '<json body>'
```

Example prompt: Before I send 500 USDC to 0xAbCd...1234 from my wallet 0x9876...5678 on Base, run a chainpeek address-poisoning check against my last 2000 blocks of transfer history and my contacts list to make sure that recipient isn't a lookalike of an address I've used before.

## When to prefer this

Choose this endpoint when an AI agent or wallet application is about to execute a token transfer and needs a fast, pre-send safety check specifically for address-poisoning attacks (same first/last 4 hex character lookalikes). It is purpose-built for this single security use case across Ethereum, Base, and Robinhood Chain, with configurable history depth and contact book support — unlike generic address screening tools that focus on sanctions or AML checks rather than lookalike detection.

## Known failure modes

- Invalid address format (not 0x + 40 hex) returns a validation error
- Unsupported chain value returns enum error
- Token address not matching USDC/USDT pattern or valid contract address returns error
- lookback_blocks exceeding 2000 returns a bounds error
- contacts array exceeding 100 items is rejected
- from and to address being identical is rejected
- Chain RPC unavailability may cause lookup failure
- Payment failure (x402) blocks the request if USDC balance is insufficient

## How this service works

chainpeek (Tanod) address-poisoning check before a token transfer: is the recipient a lookalike (same first and last 4 hex characters) of an address in the sender's history or contacts? Use when an a…

## Output

Returns whether the recipient address is a suspected address-poisoning lookalike, including which historical or contact addresses it resembles and how (same first/last 4 hex characters pattern), along with the matched addresses and risk assessment details.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "to": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$",
   "description": "The recipient about to be paid (0x + 40 hex). Must differ from `from`."
  },
  "from": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$",
   "description": "The sending wallet whose transfer history is read (0x + 40 hex)."
  },
  "chain": {
   "enum": [
    "ethereum",
    "base",
    "robinhood"
   ],
   "type": "string",
   "description": "ethereum, base or robinhood (Robinhood Chain, chain id 4663)."
  },
  "token": {
   "type": "string",
   "default": "USDC",
   "pattern": "^(USDC|USDT|0x[0-9a-fA-F]{40})$",
   "description": "USDC (default), USDT, or a token contract address. Only this token's transfers are read. On robinhood pass a contract address."
  },
  "contacts": {
   "anyOf": [
    {
     "type": "array",
     "items": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$"
     },
     "maxItems": 100
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Up to 100 addresses you trust (your address book); `to` is compared with them too, without any chain read."
  },
  "dust_threshold": {
   "anyOf": [
    {
     "type": "number",
     "maximum": 1000000000000,
     "minimum": 0
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Incoming transfers below this many token units count as dust. Default 0.01 for USDC and USDT; off for other tokens unless set; 0 turns it off."
  },
  "lookback_blocks": {
   "type": "integer",
   "default": 2000,
   "maximum": 2000,
   "minimum": 0,
   "description": "How many of the latest blocks of history to read (0-2,000; default 2,000, about 67 minutes on Base and 6.7 hours on Ethereum). 0 reads nothing and checks `contacts` only."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-chainpeek-address-poisoning-check-b46f3059/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)
