# Base Multicall Onchain Data Executor

> Base Multicall Onchain Data Executor is a paid API for AI agents from x402-data-api.bodhinindustries.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-14).

Executes batched raw calldata against multiple Base chain contract addresses in a single request, returning raw hex return data for each call, all computed live from the Base blockchain with no third-party data.

## Facts

- Endpoint: GET https://x402-data-api.bodhinindustries.workers.dev/multicall
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/base-multicall-onchain-data-executor-81b8e4be
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_nGRUoSabVQajucT0Gt5t6

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 base-multicall-onchain-data-executor-81b8e4be
```

Example prompt: Run three live Base chain contract calls for me: check the ERC-20 balance of 0xAbCd...1234 on the USDC contract at 0xA0b8...eB48, check its allowance for the Uniswap router at 0x2626...7F73, and check the token's total supply — all batched in one request, no third-party data.

## When to prefer this

Choose this endpoint when you need to batch multiple raw EVM calldata reads against Base chain contracts in a single HTTP call with no reliance on third-party indexers or price feeds. Ideal for agents performing onchain token safety scans, wallet approval audits, TWAP price checks, or contract intel queries that require live, self-computed Base chain data. Prefer over single-call endpoints when combining multiple contract reads to minimize latency and cost.

## Known failure modes

- Individual sub-calls may revert (success: false) if the contract call fails or the address has no matching function
- Calls with malformed addresses or invalid calldata hex are skipped and listed in the skipped array with a reason
- Requesting more than 20 addresses in one call may exceed limits
- Empty calldata defaults to 0x but may yield emptyReturn: true
- Network-level failures from the Base RPC or Cloudflare Worker may result in a 5xx error

## How this service works

Self-computed Base onchain toolkit for AI agents: ERC-20 safety scan, manipulation-resistant TWAP price oracle, gas/fee oracle, calldata decoder, token/address/contract intel, wallet approval-risk audit, and batch token triage — all computed live from raw Base chain, no third-party data.

## Output

An array of results per call, each containing the target address, its positional index, a success boolean, raw 0x-hex return data to decode client-side, an emptyReturn flag, and the byte length of the return. Also returns the pinned block number, count of valid calls executed, any skipped calls with reasons (invalid_address or invalid_data), the Multicall3 contract address used, and a timestamp. thirdPartyDataUsed is always false.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "to"
 ],
 "properties": {
  "to": {
   "type": "string",
   "description": "Repeatable target address; one per call (1-20), paired positionally with data."
  },
  "data": {
   "type": "string",
   "description": "Repeatable calldata hex, positionally matched to each to (empty=0x)."
  },
  "calls": {
   "type": "string",
   "description": "Compact fallback: addr:data,addr:data,..."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "block": {
   "type": "integer",
   "description": "pinned block (or null)"
  },
  "count": {
   "type": "integer",
   "description": "valid calls executed"
  },
  "results": {
   "type": "array",
   "items": {
    "type": "object",
    "properties": {
     "to": {
      "type": "string",
      "description": "target"
     },
     "index": {
      "type": "integer",
      "description": "caller position"
     },
     "success": {
      "type": "boolean",
      "description": "false only if the sub-call reverted"
     },
     "returnData": {
      "type": "string",
      "description": "raw 0x-hex to decode client-side"
     },
     "emptyReturn": {
      "type": "boolean",
      "description": "success but returnData is 0x"
     },
     "returnBytes": {
      "type": "integer",
      "description": "byte length"
     }
    }
   }
  },
  "skipped": {
   "type": "array",
   "items": {
    "type": "object",
    "properties": {
     "index": {
      "type": "integer",
      "description": "excluded index"
     },
     "reason": {
      "type": "string",
      "description": "invalid_address | invalid_data"
     }
    }
   }
  },
  "computedAt": {
   "type": "string",
   "description": "ISO-8601 timestamp"
  },
  "multicall3": {
   "type": "string",
   "description": "Multicall3 address used"
  },
  "thirdPartyDataUsed": {
   "type": "boolean",
   "description": "always false"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/base-multicall-onchain-data-executor-81b8e4be/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-data-api.bodhinindustries.workers.dev](https://www.zero.xyz/host/x402-data-api.bodhinindustries.workers.dev/llms.txt)
