# Saylor Innovations EVM Calldata Decoder

> Saylor Innovations EVM Calldata Decoder is a paid API for AI agents from saylorinnovations.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-21).

Decodes EVM transaction calldata into plain English with risk flags for dangerous operations like unlimited approvals, setApprovalForAll, and proxy upgrades

## Facts

- Endpoint: GET https://saylorinnovations.com/api/crypto/tx-explain?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-21
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/saylor-innovations-evm-calldata-decoder-20232b1a
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_gqsr6vbicyN_ZExd3XYW8

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 saylor-innovations-evm-calldata-decoder-20232b1a
```

Example prompt: Before I sign this transaction, can you decode and explain what this calldata is doing — it's going to contract 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 on Ethereum with data 0x095ea7b3000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff — and flag any risks like unlimited approvals?

## When to prefer this

Use this endpoint when an AI agent or user needs to understand what an EVM transaction will do before signing it — especially for security-sensitive operations like token approvals, NFT permissions, DeFi protocol interactions, or proxy upgrades. It is ideal for wallet assistants, transaction pre-flight checks, and security auditing workflows where the raw calldata needs to be translated into plain English with risk classification. Prefer this over generic blockchain explorers when you need programmatic, structured risk flags and human-readable summaries in a single API call.

## Known failure modes

- Unknown or unrecognized function selector returns decoded=null with known_function=false
- Invalid or malformed hex calldata may return an error or unparseable result
- Unverified or unrecognized contract address yields no to_label
- Unsupported chain value returns an error or falls back to no contract-vs-account check
- Missing required 'to' parameter returns a validation error
- Network or upstream failure returns a non-200 response

## How this service works

Decode EVM calldata into plain English: ERC-20, NFT, Uniswap, Aave and permit calls, with risk flags for unlimited approvals, setApprovalForAll and proxy upgrades.

## Output

Returns a JSON object containing a plain-English summary of the transaction, the decoded function call and its arguments, the risk level (e.g. low/medium/high), an array of specific risk flags (e.g. unlimited approval, setApprovalForAll, proxy upgrade), the native token value in wei and human-readable form, a label for the destination contract if known, whether the function selector is recognized, the blockchain context, and a caveat note for interpreting the result.

## 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": [
      "to"
     ],
     "properties": {
      "to": {
       "type": "string",
       "description": "the contract or recipient address (0x...)"
      },
      "data": {
       "type": "string",
       "description": "optional calldata as 0x hex; omit for a plain transfer"
      },
      "chain": {
       "type": "string",
       "description": "optional: ethereum, base, arbitrum, optimism, polygon, bsc or avalanche; adds a contract-vs-account check on the destination"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "json"
    },
    "example": {
     "type": "object",
     "required": [
      "value_wei",
      "value_native",
      "native_symbol",
      "summary",
      "risk_level",
      "risks",
      "note",
      "source"
     ],
     "properties": {
      "to": {
       "type": [
        "string",
        "null"
       ],
       "description": "End of the range"
      },
      "note": {
       "type": "string",
       "description": "Caveat or context for reading the result"
      },
      "chain": {
       "type": [
        "string",
        "null"
       ],
       "description": "Blockchain the data is for"
      },
      "risks": {
       "type": "array"
      },
      "source": {
       "type": "string",
       "description": "Data source the values come from"
      },
      "decoded": {
       "type": [
        "object",
        "null"
       ]
      },
      "summary": {
       "type": "string",
       "description": "Short summary"
      },
      "to_kind": {
       "type": [
        "string",
        "null"
       ],
       "description": "To kind"
      },
      "selector": {
       "type": [
        "string",
        "null"
       ]
      },
      "to_label": {
       "type": [
        "string",
        "null"
       ],
       "description": "To label"
      },
      "value_wei": {
       "type": "string",
       "description": "Value wei"
      },
      "r
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/saylor-innovations-evm-calldata-decoder-20232b1a/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from saylorinnovations.com](https://www.zero.xyz/host/saylorinnovations.com/llms.txt)
