# Agentshelf Ethereum Event Log Fetcher

> Agentshelf Ethereum Event Log Fetcher is a paid API for AI agents from agentshelf.syntexa.ch, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-26).

Fetches raw Ethereum event logs for a specific contract address with optional topic filtering and ABI-based decoding over a block range of up to 2000 blocks.

## Facts

- Endpoint: POST https://agentshelf.syntexa.ch/v1/eth-events?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-26
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agentshelf-ethereum-event-log-fetcher-646c38df
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_shHQc1EHhWStm79eVKiZx

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 agentshelf-ethereum-event-log-fetcher-646c38df -d '<json body>'
```

Example prompt: Can you pull all ERC-20 Transfer events for the USDC contract (0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48) from block 20000000 to 20002000, using the event signature Transfer(address indexed from, address indexed to, uint256 value)?

## When to prefer this

Choose this endpoint when you need raw or decoded Ethereum event logs for a specific contract without setting up your own Ethereum node or indexer. It is ideal for targeted, time-bounded queries (up to 2000 blocks) where you know the contract address and optionally the event signature or topic hashes. Prefer the free sandbox endpoint (/v1/sandbox/eth-events) for testing before spending $0.005 USDC per call on production queries.

## Known failure modes

- Block range exceeds 2000 blocks — returns an error asking you to narrow the range
- Invalid address format (not EIP-55 or consistent case) — returns a validation error
- Invalid topic format (not 0x-prefixed 32-byte hex) — returns a validation error
- No logs found in the specified range — returns an empty array
- Ethereum node unavailable or congested — returns a 5xx error
- HTTP 429 rate limit — not billed, request can be retried
- Malformed event signature not matching pattern — returns a validation error

## How this service works

Call when an agent needs raw Ethereum logs for one contract, with optional topic0-topic3, a block range of at most 2000, and an optional event signature for decoding. HTTP 429 is not billed. Read-only. No spend. Send JSON fields address (string), topic0 (string), event (string). Exact $0.005 USDC on Base. Try unpaid POST /v1/sandbox/eth-events first.

## Output

Returns an array of raw Ethereum log objects, each containing block number, transaction hash, log index, address, topics array, and raw data field. If an event signature is supplied, decoded parameter values are also included alongside each log entry.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "event": {
   "type": "string",
   "pattern": "^[A-Za-z_][A-Za-z0-9_]*\\([A-Za-z0-9_,\\s]*\\)$",
   "examples": [
    "Transfer(address indexed from, address indexed to, uint256 value)"
   ],
   "maxLength": 300,
   "description": "Optional Solidity event signature. Example: Transfer(address indexed from, address indexed to, uint256 value). topic0 defaults to its keccak. Arrays are not decoded."
  },
  "topic0": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{64}$",
   "examples": [
    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
   ],
   "description": "First log topic, 32 bytes of hex. Example: 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef is ERC-20 Transfer. Omit it for a wildcard in that position."
  },
  "topic1": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{64}$",
   "description": "Second log topic, 32 bytes of hex. Example: 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef is ERC-20 Transfer. Omit it for a wildcard in that position."
  },
  "topic2": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{64}$",
   "description": "Third log topic, 32 bytes of hex. Example: 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef is ERC-20 Transfer. Omit it for a wildcard in that position."
  },
  "topic3": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{64}$",
   "description": "Fourth log topic, 32 bytes of hex. Example: 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef is ERC-20 Transfer. Omit it for a wildcard in that position."
  },
  "address": {
   "type": "string",
   "examples": [
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
   ],
   "description": "Contract on Ethereum mainnet. Example: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 (Circle USDC). Logs are filtered to this address. EIP-55 or all one case."
  },
  "to_block": {
   "type": "string",
   "description": "Last block, inclusive, or latest. The inclusive span is at most 2000 blocks. Omit both bounds for the latest 25 blocks. Omit it to anchor the default window."
  },
  "from_block": {
   "type": "string",
   "pattern": "^(0|[1-9]\\d*)$",
   "description": "First block, inclusive. The inclusive span is at most 2000 blocks. Omit both bounds for the latest 25 blocks. Omit both bounds for the default recent window."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agentshelf-ethereum-event-log-fetcher-646c38df/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agentshelf.syntexa.ch](https://www.zero.xyz/host/agentshelf.syntexa.ch/llms.txt)
