# Agent402 Asset Transfers — EVM On-Chain Transfer History

> Agent402 Asset Transfers — EVM On-Chain Transfer History is a paid API for AI agents from agent402.tools, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-14).

Fetches paginated on-chain asset transfer history (ETH, ERC-20, ERC-721, ERC-1155) for an EVM wallet or contract address across major networks, powered by Alchemy.

## Facts

- Endpoint: POST https://agent402.tools/api/asset-transfers
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agent402-asset-transfers-evm-on-chain-transfer-history-0dbe33fe
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Yc4C8Zyq-NkhULGp-nAih

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 agent402-asset-transfers-evm-on-chain-transfer-history-0dbe33fe -d '<json body>'
```

Example prompt: Show me the last 10 USDC transfers received by wallet 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 on Ethereum, newest first.

## When to prefer this

Choose this endpoint when you need comprehensive, paginated on-chain transfer history for a specific EVM wallet or contract across major networks (Ethereum, Base, Polygon, Arbitrum, Optimism). It is ideal for auditing wallet activity, tracking token flows, building portfolio history, or monitoring NFT movements — especially when you need filtering by asset category, direction (in/out), counterparty, or specific token contracts. Prefer this over block explorers when you need structured JSON output ready for agent consumption without API keys.

## Known failure modes

- Invalid or malformed EVM address returns a 400 error
- Unsupported network name returns an error — only ethereum/base/polygon/arbitrum/optimism are valid
- Inner dimensions mismatch if both address and contracts are omitted
- pageKey from a different query or expired cursor returns no results or an error
- maxCount outside 1–100 range is rejected
- Block numbers specified as invalid hex or decimal strings may cause a parse error

## How this service works

Token and native transfer history for any EVM address across major chains: direction, counterparty, asset, exact decimal value, block and transaction hash, filterable by category and block range with a cursor for paging. Use it to reconstruct what an address actually did, rather than only what it holds now.

## Output

Returns a paginated JSON object containing the transfer count, network details, a page cursor for continuation, and an array of transfer records — each with sender, recipient, transaction hash, block number, timestamp, asset name, token value, raw value, decimals, contract address, token ID, and category (e.g. erc20, erc721).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "order": {
   "type": "string",
   "description": "desc (newest first, default) or asc."
  },
  "address": {
   "type": "string",
   "description": "0x-prefixed 40-char EVM address (the wallet or contract whose transfers you want). Optional when `contracts` is set."
  },
  "network": {
   "type": "string",
   "description": "ethereum / base / polygon / arbitrum / optimism (default ethereum)."
  },
  "pageKey": {
   "type": "string",
   "description": "Cursor from a previous response to fetch the next page."
  },
  "toBlock": {
   "type": "string",
   "description": "End block (decimal, 0x hex, or latest). Default latest."
  },
  "category": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "Subset of external, internal, erc20, erc721, erc1155, specialnft. Default external+erc20+erc721+erc1155 (erc20+erc721+erc1155 when `contracts` is set)."
  },
  "maxCount": {
   "type": "number",
   "description": "Rows per call, 1-100 (default 25)."
  },
  "contracts": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "Optional token contract filter, up to 10 addresses (token categories only)."
  },
  "direction": {
   "type": "string",
   "description": "in (transfers TO address) or out (transfers FROM address). Default in."
  },
  "fromBlock": {
   "type": "string",
   "description": "Start block (decimal or 0x hex). Default 0 = genesis."
  },
  "counterparty": {
   "type": "string",
   "description": "Optional other party: with direction in, only transfers FROM this address; with out, only transfers TO it."
  },
  "includeZeroValue": {
   "type": "boolean",
   "description": "Include zero-value transfers (plain contract calls). Default false."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 5,
  "order": "desc",
  "source": "alchemy",
  "address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
  "chainId": 1,
  "network": "ethereum",
  "pageKey": "1f449b0c-…",
  "toBlock": "latest",
  "maxCount": 5,
  "contracts": [
   "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
  ],
  "direction": "in",
  "fetchedAt": "2026-08-22T12:00:00.000Z",
  "fromBlock": "0x0",
  "transfers": [
   {
    "to": "0xd8da…6045",
    "from": "0xa916…6081",
    "hash": "0x214b…e56b",
    "asset": "USDC",
    "value": "0.42",
    "tokenId": null,
    "blockNum": 25563191,
    "category": "erc20",
    "contract": "0xa0b8…eb48",
    "decimals": 6,
    "rawValue": "420000",
    "timestamp": "2026-07-19T00:32:23.000Z"
   }
  ],
  "categories": [
   "erc20"
  ],
  "counterparty": null
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agent402-asset-transfers-evm-on-chain-transfer-history-0dbe33fe/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agent402.tools](https://www.zero.xyz/host/agent402.tools/llms.txt)
