# EVM Calldata Decoder

> EVM Calldata Decoder is a paid API for AI agents from agent-data-tools.revmesh2074.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-26).

Decodes raw EVM transaction calldata into the called function name and its typed arguments, supporting common ERC-20/721/1155/WETH/permit/multicall ABIs or a custom signature.

## Facts

- Endpoint: GET https://agent-data-tools.revmesh2074.workers.dev/evm/decode-calldata?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-26
- Activations on Zero: 0
- Provider: agent-data-tools.revmesh2074.workers.dev
- Website: https://agent-data-tools.revmesh2074.workers.dev
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agent-data-tools-revmesh2074-workers-dev-evm-calldata-decoder-4e5160ae
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_iocAOgmbY0wYaT2ShGF7-

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 agent-data-tools-revmesh2074-workers-dev-evm-calldata-decoder-4e5160ae
```

Example prompt: Can you decode this EVM calldata for me and tell me what function it's calling and what the arguments are? The calldata is 0xa9059cbb000000000000000000000000ab5801a7d398351b8be11c439e05c5b3259aec9000000000000000000000000000000000000000000000000016345785d8a0000

## When to prefer this

Use this endpoint when you have raw EVM hex calldata and need to understand what function call it represents before signing or broadcasting — especially useful for security checks on pending transactions, auditing DeFi interactions, or debugging smart contract calls. Prefer it over manual ABI decoding when dealing with common token standards (ERC-20, ERC-721, ERC-1155, WETH, permit, multicall) since it auto-matches by selector without needing the ABI. Provide the optional `signature` parameter when you know the exact function signature for less common contracts.

## Known failure modes

- 422 Unprocessable Entity — selector not matched by any built-in ABI and no signature provided; call is free
- Malformed calldata (not valid hex or too short) — likely 400 or decode error
- Signature mismatch — provided signature does not match the selector in the calldata, decode fails
- Calldata exceeds 8 KB limit — rejected
- Payment required (402) if free call quota exhausted and no payment provided

## How this service works

Decode calldata. Decode EVM transaction calldata into the function and its arguments with viem: give the function signature (transfer(address,uint256)), or leave it out to try common ERC-20, ERC-721, ERC-1155, WETH, permit and multicall functions by selector. Numbers come back as decimal strings. Use to read what a pending or past transaction does before signing; get calldata from eth_tx. A selector that does not match is 422, uncharged.

## Output

Returns a JSON object with: `decoded` (boolean indicating success), `selector` (4-byte hex selector), `function` (the matched function signature string), and `args` (array of objects each with `type` and `value` as a decimal string for numbers). If the selector doesn't match any known ABI and no signature was provided, returns HTTP 422 and the call is not charged.

## 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"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "data"
     ],
     "properties": {
      "data": {
       "type": "string",
       "examples": [
        "0xa9059cbb000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa960450000000000000000000000000000000000000000000000000000000000989680"
       ],
       "description": "0x calldata (selector plus ABI-encoded arguments), up to 8 KB"
      },
      "signature": {
       "type": "string",
       "examples": [
        "transfer(address,uint256)"
       ],
       "description": "Optional function signature such as transfer(address,uint256)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "args": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "type": {
          "type": "string"
         },
         "value": {
          "type": "string"
         }
        }
       }
      },
      "decoded": {
       "type": "boolean"
      },
      "function": {
       "type": "string"
      },
      "selector": {
       "type": "string"
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "args": [
   {
    "type": "address",
    "value": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
   },
   {
    "type": "uint256",
    "value": "10000000"
   }
  ],
  "decoded": true,
  "function": "transfer(address,uint256)",
  "selector": "0xa9059cbb"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agent-data-tools-revmesh2074-workers-dev-evm-calldata-decoder-4e5160ae/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agent-data-tools.revmesh2074.workers.dev](https://www.zero.xyz/host/agent-data-tools.revmesh2074.workers.dev/llms.txt)
