# EVM Address Contract vs EOA Checker

> EVM Address Contract vs EOA Checker is a paid API for AI agents from payai.agentstools.dev, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-15).

Checks whether an Ethereum-compatible address is a smart contract or an externally owned account (EOA) on Base, Ethereum, Arbitrum, Optimism, Polygon, or BNB Chain, returning is_contract flag, deployed bytecode size, and keccak256 code hash.

## Facts

- Endpoint: GET https://payai.agentstools.dev/code
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/evm-address-contract-vs-eoa-checker-2f2cf09e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_AjEPKEpmHT8dNj8O-liyu

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 evm-address-contract-vs-eoa-checker-2f2cf09e
```

Example prompt: Is 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 a smart contract or a regular wallet on Ethereum? And what's its code size and code hash?

## When to prefer this

Use this endpoint when you need to classify an EVM address as a smart contract or EOA across multiple chains (Base, Ethereum, Arbitrum, Optimism, Polygon, BNB), especially when you need the exact bytecode size or code hash for further analysis. Prefer this over block explorers when you need a programmatic, paid API response with structured output for agent workflows.

## Known failure modes

- Invalid address format (not a 0x hex address) returns an error
- Unsupported network value returns a validation error
- Address not found on the specified network may return is_contract=false with 0 bytes
- Network RPC node unavailability may cause a 500 or timeout
- Payment not included or insufficient USDC triggers 402 response

## How this service works

Is an address a contract or an EOA on Base, Ethereum, Arbitrum, Optimism, Polygon or BNB (default Base)? Returns is_contract, deployed code size in bytes, and the keccak256 code hash (eth_getCode).

## Output

Returns a JSON object with: is_contract (boolean indicating whether the address has deployed bytecode), the size of the deployed code in bytes, and the keccak256 hash of the bytecode (from eth_getCode). EOAs return false with zero bytes.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "address"
     ],
     "properties": {
      "address": {
       "type": "string",
       "description": "Address (0x..)"
      },
      "network": {
       "enum": [
        "base",
        "ethereum",
        "arbitrum",
        "optimism",
        "polygon",
        "bnb"
       ],
       "type": "string",
       "description": "EVM network to read from (default base)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/evm-address-contract-vs-eoa-checker-2f2cf09e/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from payai.agentstools.dev](https://www.zero.xyz/host/payai.agentstools.dev/llms.txt)
