# Tanod chainpeek – Ethereum/Base Event Logs (eth_getLogs)

> Tanod chainpeek – Ethereum/Base Event Logs (eth_getLogs) is a paid API for AI agents from tanod.dev, paid per call via x402, $0.003/call, status unknown (last checked 2026-10-10).

Fetches and decodes on-chain event logs (eth_getLogs) over a block range on Ethereum or Base, with ERC-20/721 Transfer, Approval, and other common events automatically decoded.

## Facts

- Endpoint: POST https://tanod.dev/v1/chain/events?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-chainpeek-ethereum-base-event-logs-eth-getlogs-0fc76bf7
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_lpvIh69e0JBhyu6C47O9v

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-ethereum-base-event-logs-eth-getlogs-0fc76bf7 -d '<json body>'
```

Example prompt: Can you pull all the ERC-20 Transfer events emitted by the USDC contract (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913) on Base from block 52373400 to 52373503, and show me the decoded from/to/value for each?

## When to prefer this

Choose this endpoint when an AI agent needs to retrieve and decode historical or recent smart contract event logs on Ethereum or Base without running its own node or writing raw eth_getLogs calls. It is especially useful when ERC-20/721 Transfer and Approval decoding out-of-the-box is needed, avoiding manual ABI parsing. Prefer it over raw RPC calls when you want structured, decoded output with minimal setup, and when the query fits within the 2,000-block range limit.

## Known failure modes

- Block range exceeds 2,000-block limit — request rejected
- Invalid address format (not 0x + 40 hex chars) — validation error
- Invalid topic filter (not 0x + 64 hex chars or null) — validation error
- Unsupported chain value — enum validation error
- No logs found in range — empty logs array returned
- RPC timeout or node unavailability — upstream error
- Ambiguous or unrecognized event signature — event decoded with error field populated

## How this service works

One MCP server and HTTP API with 193 pay-per-call tools for AI agents (security checks, chain data, finance, aviation, documents), plus free uptime and MikroTik monitoring and 130+ free browser tools. No signup; free daily tier. Operated by an AI.

## Output

Returns a JSON object containing an array of decoded log entries, each with the emitting contract address, block number, transaction hash, log index, raw topics and data, and a decoded event object (name, standard, signature, arguments like from/to/value, and any decoding errors). Also includes metadata: total logs returned, number decoded, whether results were truncated, block range queried, and a caveat note about trusting decoded events only after verifying the emitting address.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "chain": {
   "enum": [
    "ethereum",
    "base",
    "robinhood"
   ],
   "type": "string",
   "description": "ethereum, base or robinhood (Robinhood Chain, chain id 4663)."
  },
  "topics": {
   "type": "array",
   "items": {
    "anyOf": [
     {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{64}$"
     },
     {
      "type": "null"
     }
    ]
   },
   "maxItems": 4,
   "description": "Up to 4 topic filters, each 0x + 64 hex or null for any; topics[0] is the event signature hash (for ERC-20/721 Transfer: keccak('Transfer(address,address,uint256)'))."
  },
  "address": {
   "anyOf": [
    {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]{40}$"
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Emitting contract. Send an address, a topic0, or both."
  },
  "to_block": {
   "anyOf": [
    {
     "type": "integer",
     "minimum": 0,
     "exclusiveMaximum": 1099511627776
    },
    {
     "type": "string",
     "const": "latest"
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Last block (inclusive). Default: the latest block."
  },
  "from_block": {
   "anyOf": [
    {
     "type": "integer",
     "minimum": 0,
     "exclusiveMaximum": 1099511627776
    },
    {
     "type": "string",
     "const": "latest"
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "First block (inclusive). Default: the last 100 blocks ending at to_block. The range is at most 2,000 blocks."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "logs": [
   {
    "data": "0x0000000000000000000000000000000000000000000000000000001f2a9d77df",
    "block": 52373503,
    "event": {
     "args": {
      "to": "0xb093da272A66D47b7445cA389CEbdc6d3Ac7753D",
      "from": "0xb2cc224c1c9feE385f8ad6a55b4d94E92359DC59",
      "value": "133858949087"
     },
     "name": "Transfer",
     "error": null,
     "standard": "erc20",
     "signature": "Transfer(address,address,uint256)"
    },
    "topics": [
     "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
     "0x000000000000000000000000b2cc224c1c9fee385f8ad6a55b4d94e92359dc59",
     "0x000000000000000000000000b093da272a66d47b7445ca389cebdc6d3ac7753d"
    ],
    "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "log_index": 26,
    "data_bytes": 32,
    "data_truncated": false,
    "transaction_hash": "0x58d0d17b5944b268a414c87a2feca10ace73f0746b522e4e90ad329b630f490d"
   },
   {
    "data": "0x00000000000000000000000000000000000000000000000000000000025b41fa",
    "block": 52373503,
    "event": {
     "args": {
      "to": "0xe4eac6027AAbe094453b02401ef7C5B789439621",
      "from": "0xD69E78df9972EEa3d0A3bCC83243D8b2583052C5",
      "value": "39535098"
     },
     "name": "Transfer",
     "error": null,
     "standard": "erc20",
     "signature": "Transfer(address,address,uint256)"
    },
    "topics": [
     "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
     "0x000000000000000000000000d69e78df9972eea3d0a3bcc83243d8b2583052c5",
     "0x000000000000000000000000e4eac6027aabe094453b02401ef7c5b789439621"
    ],
    "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "log_index": 37,
    "data_bytes": 32,
    "data_truncated": false,
    "transaction_hash": "0x59bbb9378816a6b28e392de121fd8d431344ec46cca4ca207ac6827496ec56b6"
   }
  ],
  "note": "events are decoded by signature only: any contract can emit any event, so check the emitting address before trusting a decoded Transfer or Swap",
  "chain": "base",
  "blocks": 1,
  "topics": [
   "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
  ],
  "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "decoded": 2,
  "returned": 2,
  "to_block": 52373503,
  "log_count": 2,
  "rpc_calls": 2,
  "truncated": false,
  "from_block": 52373503,
  "untrusted_content": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-chainpeek-ethereum-base-event-logs-eth-getlogs-0fc76bf7/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)
