chainpeek: check a transfer recipient for address poisoning on Base, Ethereum or Robinhood Chain
check_address_poisoningCheck a transfer recipient for address-poisoning lookalikes in the sender's past transfers, returning a risk level and evidence before you send funds.
Instructions
chainpeek: Check a transfer recipient for address poisoning: lookalikes in the sender's history. For balance, gas and blacklist checks too use transfer_preflight; for OFAC use check_sanctions. Returns a risk (high | medium | low) for paying to: reads from's transfers of one token (default USDC) over the last 2,000 blocks and finds addresses with to's first 4 and last 4 hex characters; each reason carries its evidence (tx hash, block, amount, direction). High: to was never paid and imitates an address from paid or a contact, or appears only in zero-value or dust transfers. Medium: a lookalike exists but to was paid or is a contact. Older history, other tokens and other lookalikes are not seen. Bad input is a 422, a failed read a 502 (neither charged). Typically 0.5-4 s. Price: USD 0.002. Free: 10 chain reads per IP per UTC day. Docs: https://tanod.dev/learn/address-poisoning-check-api.html
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | The recipient about to be paid (0x + 40 hex). Must differ from `from`. | |
| from | Yes | The sending wallet whose transfer history is read (0x + 40 hex). | |
| chain | Yes | ethereum, base or robinhood (Robinhood Chain, chain id 4663). | |
| token | No | USDC (default), USDT, or a token contract address. Only this token's transfers are read. On robinhood pass a contract address. | USDC |
| contacts | No | Up to 100 addresses you trust (your address book); `to` is compared with them too, without any chain read. | |
| dust_threshold | No | 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 | No | 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. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No | ||
| risk | No | ||
| chain | No | ||
| error | No | Only on an error result: an object {code, message}, or the reason string of an x402 PaymentRequired object. | |
| rules | No | ||
| token | No | ||
| limits | No | ||
| history | No | ||
| matches | No | ||
| reasons | No | ||
| decimals | No | ||
| rpc_calls | No | ||
| to_history | No | ||
| token_symbol | No | ||
| matches_total | No | ||
| dust_threshold | No | ||
| contacts_checked | No | ||
| dust_threshold_raw | No |