# Agentshelf Ethereum eth_call

> Agentshelf Ethereum eth_call is a paid API for AI agents from agentshelf.syntexa.ch, paid per call via x402, $0.003/call, status unknown (last checked 2026-10-21).

Executes a read-only Ethereum mainnet eth_call given a contract address and calldata or function signature, returning decoded results or revert reasons.

## Facts

- Endpoint: POST https://agentshelf.syntexa.ch/v1/eth-call?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-21
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agentshelf-ethereum-eth-call-31f98642
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_D8Cr828vBkOg0RH13fthI

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-eth-call-31f98642 -d '<json body>'
```

Example prompt: Can you call the totalSupply() function on the USDC contract at 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 on Ethereum mainnet and tell me the result?

## When to prefer this

Use this endpoint when you need to read on-chain Ethereum mainnet state from a smart contract without sending a transaction or spending gas. Prefer it over web3 library calls when running in an environment without direct Ethereum node access. It supports both raw calldata hex and human-readable function signatures with typed arguments, and it decodes revert reasons automatically. Try the free sandbox endpoint at /v1/sandbox/eth-call first to validate your call before paying.

## Known failure modes

- Contract does not exist at the given address — returns an error or empty result
- Calldata is malformed or signature is invalid — returns a parse or revert error
- Both data and signature provided simultaneously — returns a validation error
- Block tag is invalid or not yet available — returns an error
- Contract call reverts — returns a decoded revert reason string
- Network timeout or Ethereum node unavailability — returns a 5xx error
- Payment not received (x402) — returns 402 Payment Required before processing

## How this service works

Call when an agent needs a read-only Ethereum eth_call. Send to and data (hex) or a function signature plus args. Optional from and block. Reverts return a decoded reason. No state change and no spend. Send JSON {"to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","data":"0x18160ddd"}. Exact $0.003 USDC on Base. Try unpaid POST /v1/sandbox/eth-call first.

## Output

Returns the decoded output of the eth_call — such as a uint256 balance, a string name, or a boolean — along with a decoded revert reason if the call reverted. No transaction is broadcast and no ETH or gas is spent.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "to": {
   "type": "string",
   "examples": [
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
   ],
   "description": "Contract to call on Ethereum mainnet. Example: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48. The call is eth_call with no value, so it cannot change state."
  },
  "args": {
   "type": "string",
   "maxLength": 2048,
   "minLength": 2,
   "description": "JSON array of arguments. Example: [\"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\"]. A POST array is accepted. Requires signature."
  },
  "data": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]*$",
   "examples": [
    "0x18160ddd"
   ],
   "description": "Calldata, 0x hex, at most 2048 characters. Example: 0x18160ddd (totalSupply()). Send data or signature, not both. eth_call cannot change state."
  },
  "from": {
   "type": "string",
   "description": "Optional eth_call from address. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. It is not a transaction sender and nothing is spent."
  },
  "block": {
   "type": "string",
   "description": "Block tag. Example: latest. Also finalized, safe, or a block number. Default latest."
  },
  "signature": {
   "type": "string",
   "maxLength": 180,
   "minLength": 3,
   "description": "Function signature. Example: decimals() or balanceOf(address)(uint256). args is a JSON array when the function has parameters. Send signature or data, not both."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agentshelf-ethereum-eth-call-31f98642/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)
