{
  "openapi": "3.1.0",
  "info": {
    "title": "Kit Rx EVM Gas, Token Scan & Tx Decode API",
    "version": "1.0.0",
    "description": "Gas oracle across Base, Ethereum, Arbitrum, Optimism, Polygon and Avalanche with USD costs; token risk scan (owner, mint/pause/blacklist functions, proxy, liquidity) and on-chain DEX price; pre-signing safety for calldata and EIP-712 typed data (Permit, Permit2, EIP-3009); human-readable transaction decoding; verified ABIs via Sourcify; wallet balances with USDC by chain; ENS and Basename resolution. Each call is one x402 v2 payment in USDC on Base, Polygon, Arbitrum, Avalanche or Sei; no signup or API key. Requests that fail or match nothing are not charged.",
    "x-guidance": "GET endpoints under /v1 take query-string parameters and return JSON. Pay per call with x402 v2 (USDC on Base); only 2xx responses are settled. Parameter details and examples: /llms.txt and /catalog.json.",
    "contact": {
      "name": "Kit Rx EVM Gas, Token Scan & Tx Decode",
      "url": "https://chain.kit-rx.com"
    }
  },
  "servers": [
    {
      "url": "https://chain.kit-rx.com"
    }
  ],
  "x-agentcash-guidance": {
    "llmsTxtUrl": "https://chain.kit-rx.com/llms.txt"
  },
  "x-agentcash-provenance": {
    "ownershipProofs": [
      "0xbb35f5ed4a619ec57fad87162d4afa7e72c1905a3531fb8f6adc9ab459eab7cc42de9a031bbb3d77d71afe40e1239ab1194ad8ab51212eaa1a0b5bb4e3c3edd21b"
    ]
  },
  "x-discovery": {
    "ownershipProofs": [
      "0xbb35f5ed4a619ec57fad87162d4afa7e72c1905a3531fb8f6adc9ab459eab7cc42de9a031bbb3d77d71afe40e1239ab1194ad8ab51212eaa1a0b5bb4e3c3edd21b"
    ]
  },
  "paths": {
    "/v1/chain/gas": {
      "get": {
        "operationId": "chain_gas",
        "summary": "EVM gas fees and USD transaction costs (6 chains)",
        "description": "Live gas fees and estimated USD transaction costs on Base, Ethereum, Arbitrum, OP Mainnet, Polygon and Avalanche: base fee and next-block estimate, priority fee p25/p50/p75 over 10 blocks, gas price, 10-block base-fee trend, suggested max fee, and USD cost of a native transfer, ERC-20 transfer and swap (upper-bound rollup L1 fees included), plus the cheapest chain per action. Sources: JSON-RPC via PublicNode (public RPC fallback); prices from on-chain Uniswap v3 pools.",
        "tags": [
          "crypto",
          "gas",
          "evm",
          "fees",
          "blockchain"
        ],
        "security": [],
        "parameters": [
          {
            "name": "chains",
            "in": "query",
            "required": false,
            "description": "Comma-separated chains by name or chain id: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114). Default: all six.",
            "schema": {
              "type": "string"
            },
            "example": "base,ethereum,polygon"
          },
          {
            "name": "speed",
            "in": "query",
            "required": false,
            "description": "Priority-fee level used for suggested fees and costs: slow (p25), standard (p50) or fast (p75). Default standard.",
            "schema": {
              "type": "string",
              "enum": [
                "slow",
                "standard",
                "fast"
              ]
            },
            "example": "standard"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.002"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "chains": [
                      "base",
                      "ethereum",
                      "polygon"
                    ],
                    "speed": "standard"
                  },
                  "result": {
                    "speed": "standard",
                    "priority_percentile": "p50",
                    "gas_units": {
                      "native_transfer": 21000,
                      "erc20_transfer": 65000,
                      "swap": 180000
                    },
                    "chains": [
                      {
                        "chain": "base",
                        "chain_id": 8453,
                        "native_symbol": "ETH",
                        "block": {
                          "number": 57559128,
                          "age_s": 0
                        },
                        "base_fee_gwei": 0.005,
                        "next_base_fee_estimate_gwei": 0.005,
                        "priority_fee_gwei": {
                          "p25": 0.00067667,
                          "p50": 0.001125,
                          "p75": 0.0025
                        },
                        "gas_price_gwei": 0.006,
                        "trend_10_blocks": {
                          "direction": "flat",
                          "change_pct": 0,
                          "min_base_fee_gwei": 0.005,
                          "max_base_fee_gwei": 0.0050038,
                          "avg_block_fullness_pct": 10.5
                        },
                        "at_speed": {
                          "max_priority_fee_gwei": 0.001125,
                          "max_fee_gwei": 0.011125,
                          "effective_gas_price_gwei": 0.006125
                        },
                        "native_usd": {
                          "price": 1766.62,
                          "pair": "WETH/USDC",
                          "pool": "0x6c561B446416E1A00E8E93E221854d6eA4171372",
                          "fee_pct": 0.3
                        },
                        "usd_cost": {
                          "native_transfer": 0.000232,
                          "erc20_transfer": 0.00071,
                          "swap": 0.00197
                        },
                        "native_cost": {
                          "native_transfer": 1.316e-7,
                          "erc20_transfer": 4.02e-7,
                          "swap": 0.000001116
                        },
                        "l1_data_fee_included": true
                      },
                      {
                        "chain": "ethereum",
                        "chain_id": 1,
                        "native_symbol": "ETH",
                        "block": {
                          "number": 26416784,
                          "age_s": 10
                        },
                        "base_fee_gwei": 0.27772,
                        "next_base_fee_estimate_gwei": 0.28739,
                        "priority_fee_gwei": {
                          "p25": 0.0054569,
                          "p50": 0.15241,
                          "p75": 0.93107
                        },
                        "gas_price_gwei": 0.27773,
                        "trend_10_blocks": {
                          "direction": "falling",
                          "change_pct": -8.59,
                          "min_base_fee_gwei": 0.27045,
                          "max_base_fee_gwei": 0.32531,
                          "avg_block_fullness_pct": 46.7
                        },
                        "at_speed": {
                          "max_priority_fee_gwei": 0.15241,
                          "max_fee_gwei": 0.72719,
                          "effective_gas_price_gwei": 0.4398
                        },
                        "native_usd": {
                          "price": 1763.04,
                          "pair": "WETH/USDC",
                          "pool": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640",
                          "fee_pct": 0.05
                        },
                        "usd_cost": {
                          "native_transfer": 0.0163,
                          "erc20_transfer": 0.0504,
                          "swap": 0.14
                        },
                        "native_cost": {
                          "native_transfer": 0.000009236,
                          "erc20_transfer": 0.00002859,
                          "swap": 0.00007916
                        },
                        "l1_data_fee_included": false
                      }
                    ],
                    "cheapest_chain": {
                      "native_transfer": {
                        "chain": "base",
                        "usd": 0.000232
                      },
                      "erc20_transfer": {
                        "chain": "base",
                        "usd": 0.00071
                      },
                      "swap": {
                        "chain": "base",
                        "usd": 0.00197
                      }
                    },
                    "errors": []
                  },
                  "sources": [
                    {
                      "name": "Base JSON-RPC via PublicNode",
                      "url": "https://base-rpc.publicnode.com"
                    },
                    {
                      "name": "Ethereum JSON-RPC via PublicNode",
                      "url": "https://ethereum-rpc.publicnode.com"
                    }
                  ],
                  "notes": [
                    "Gwei = 1e-9 of the native coin. Cost = gas units x (next base fee + p50 priority fee), plus an upper-bound L1 data fee on Base, OP Mainnet and Arbitrum. Priority fees are medians of eth_feeHistory percentiles over 10 blocks; Arbitrum charges none."
                  ],
                  "generated_at": "2026-11-15T00:23:21.259Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    },
    "/v1/chain/calldata-decode": {
      "get": {
        "operationId": "chain_calldata_decode",
        "summary": "EVM calldata decoder with pre-signing risk flags",
        "description": "Decodes EVM calldata before signing: function signature, selector, named arguments, candidate signatures for ambiguous selectors, one level of bundled calls (multicall, Multicall3, ERC-4337 execute, Safe execTransaction, multiSend), token symbol and decimals, and risk flags with reasons for unlimited approvals, setApprovalForAll, permits, transferFrom, admin calls and delegatecall. Sources: Sourcify ABIs and 4byte signatures, JSON-RPC via PublicNode.",
        "tags": [
          "crypto",
          "evm",
          "calldata",
          "security",
          "agent-safety"
        ],
        "security": [],
        "parameters": [
          {
            "name": "data",
            "in": "query",
            "required": true,
            "description": "Transaction calldata, 0x-prefixed hex with a 4-byte selector; at most 16,384 hex digits (8 KB).",
            "schema": {
              "type": "string"
            },
            "example": "0x095ea7b3000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Contract the transaction is sent to. When given, its Sourcify-verified ABI (following a proxy to its implementation) decodes the call, and token symbol, decimals and contract-code checks are added.",
            "schema": {
              "type": "string"
            },
            "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
          },
          {
            "name": "chain",
            "in": "query",
            "required": false,
            "description": "Chain of the transaction by name or id: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114). Default base when to is given.",
            "schema": {
              "type": "string"
            },
            "example": "base"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.002"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "data": "0x095ea7b3000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3... (68 bytes)",
                    "to": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                    "chain": "base"
                  },
                  "result": {
                    "selector": "0x095ea7b3",
                    "function": "approve(address,uint256)",
                    "name": "approve",
                    "decoded_with": "sourcify_abi",
                    "signature_verified": true,
                    "args": [
                      {
                        "name": "spender",
                        "type": "address",
                        "value": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
                      },
                      {
                        "name": "value",
                        "type": "uint256",
                        "value": "115792089237316195423570985008687907853269984665640564039457584007913129639935"
                      }
                    ],
                    "exact_encoding": true,
                    "target": {
                      "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "chain": "base",
                      "chain_id": 8453,
                      "label": null,
                      "is_contract": true,
                      "delegated_to": null,
                      "verified": true,
                      "contract_name": "FiatTokenProxy",
                      "proxy_type": "ZeppelinOSProxy",
                      "implementation": {
                        "address": "0x2Ce6311ddAE708829bc0784C967b7d77D19FD779",
                        "name": "FiatTokenV2_2"
                      },
                      "token": {
                        "symbol": "USDC",
                        "name": "USD Coin",
                        "decimals": 6
                      }
                    },
                    "nested": null,
                    "addresses": [
                      {
                        "address": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
                        "role": "spender",
                        "label": "Uniswap Permit2",
                        "is_contract": true,
                        "delegated_to": null,
                        "verified_name": null
                      }
                    ],
                    "risk_level": "high",
                    "flags": [
                      {
                        "code": "unlimited_approval",
                        "severity": "high",
                        "reason": "Grants 0x000000000022D473030F116dDEE9F6B43aC78BA3 (Uniswap Permit2) an unlimited allowance on USDC (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913): it can move all of the sender's balance of this token, now and later, until the allowance is revoked."
                      }
                    ],
                    "summary": "Approves 0x000000000022D473030F116dDEE9F6B43aC78BA3 (Uniswap Permit2) to spend an unlimited amount of USDC (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913). Risk: high (unlimited_approval)."
                  },
                  "sources": [
                    {
                      "name": "Sourcify verified contract repository",
                      "url": "https://sourcify.dev/"
                    },
                    {
                      "name": "Base JSON-RPC via PublicNode",
                      "url": "https://base-rpc.publicnode.com"
                    }
                  ],
                  "attribution": [
                    "Contract metadata and function/event signatures from Sourcify (https://sourcify.dev), the open-source smart contract ...",
                    "Blockchain data read through PublicNode public RPC endpoints (https://www.publicnode.com, operated by Allnodes Inc.);..."
                  ],
                  "generated_at": "2026-11-15T01:18:49.839Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    },
    "/v1/chain/sign-inspect": {
      "get": {
        "operationId": "chain_sign_inspect",
        "summary": "EIP-712 signature request inspector (permits, x402)",
        "description": "Inspects EIP-712 typed data before signing: kind (EIP-2612 or DAI permit, Permit2 allowance or transfer, EIP-3009 transfer authorization as used by x402, Seaport order, Safe transaction, generic), digest, chain id with mismatch check, verifying contract with token symbol and decimals, spender or recipient, raw and formatted amount, unlimited flag, deadline window in ISO time, risk level, flags with reasons, one-line summary. Sources: JSON-RPC via PublicNode, Sourcify.",
        "tags": [
          "crypto",
          "eip-712",
          "permit",
          "security",
          "x402"
        ],
        "security": [],
        "parameters": [
          {
            "name": "typed",
            "in": "query",
            "required": true,
            "description": "EIP-712 typed data as JSON (URL-encoded in the query) or base64 of it, max 16 KB; also accepts eth_signTypedData_v4 params [address, typedData].",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expected_chain",
            "in": "query",
            "required": false,
            "description": "Chain the signature should be for (id such as 8453 or eip155:8453, or a supported name); a different domain chainId is flagged.",
            "schema": {
              "type": "string"
            },
            "example": "base"
          },
          {
            "name": "expected_spender",
            "in": "query",
            "required": false,
            "description": "Address expected as spender or recipient (the payTo for an x402 payment); a different address is flagged.",
            "schema": {
              "type": "string"
            },
            "example": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.002"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "typed": "TransferWithAuthorization (667 chars)",
                    "expected_chain": 8453,
                    "expected_spender": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
                  },
                  "result": {
                    "kind": "eip3009_transfer",
                    "kind_label": "EIP-3009 TransferWithAuthorization (one-time transfer, x402 exact scheme)",
                    "primary_type": "TransferWithAuthorization",
                    "digest": "0x001bce51ac376ae48d55d5a36116124c831407c7d2423d92b42867785fd7d21b",
                    "chain_id": 8453,
                    "chain": "base",
                    "expected_chain_id": 8453,
                    "chain_mismatch": false,
                    "domain": {
                      "name": "USD Coin",
                      "version": "2",
                      "salt": null,
                      "fields": [
                        "name",
                        "version",
                        "chainId",
                        "verifyingContract"
                      ]
                    },
                    "verifying_contract": {
                      "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "label": null,
                      "is_contract": true,
                      "token": {
                        "symbol": "USDC",
                        "name": "USD Coin",
                        "decimals": 6
                      },
                      "domain_separator_match": true
                    },
                    "signer": "0x1111111111111111111111111111111111111111",
                    "spender": {
                      "address": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70",
                      "role": "recipient",
                      "label": null,
                      "is_contract": false,
                      "delegated_to": null,
                      "verified_name": null,
                      "matches_expected": true
                    },
                    "amount": {
                      "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "symbol": "USDC",
                      "decimals": 6,
                      "raw": "2000",
                      "formatted": "0.002",
                      "unlimited": false
                    },
                    "amounts": [
                      {
                        "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                        "symbol": "USDC",
                        "decimals": 6,
                        "raw": "2000",
                        "formatted": "0.002",
                        "unlimited": false
                      }
                    ],
                    "validity": {
                      "valid_after": null,
                      "deadline": "2030-01-01T00:00:00.000Z",
                      "deadline_unix": "1893456000",
                      "never_expires": false,
                      "seconds_remaining": 98750471,
                      "expired": false,
                      "not_yet_valid": false,
                      "too_long": true
                    },
                    "details": {
                      "nonce": "0x8f3c6a1e5b2d4f7a9c0e1b3d5f7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a"
                    },
                    "risk_level": "low",
                    "flags": [
                      {
                        "code": "payment_authorization",
                        "severity": "low",
                        "reason": "Signing authorizes a one-time transfer of 0.002 USDC from 0x1111111111111111111111111111111111111111 to 0xA..."
                      },
                      {
                        "code": "long_validity",
                        "severity": "low",
                        "reason": "The authorization end (validBefore) is 3 years away (more than 1 hour). x402 payment authorizations are nor..."
                      }
                    ],
                    "summary": "TransferWithAuthorization of 0.002 USDC from 0x1111111111111111111111111111111111111111 to 0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70 on Base, vali..."
                  },
                  "sources": [
                    {
                      "name": "Base JSON-RPC via PublicNode",
                      "url": "https://base-rpc.publicnode.com"
                    }
                  ],
                  "attribution": [
                    "Blockchain data read through PublicNode public RPC endpoints (https://www.publicnode.com, operated by Allnodes Inc.);..."
                  ],
                  "generated_at": "2026-11-15T01:18:49.923Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    },
    "/v1/chain/contract-abi": {
      "get": {
        "operationId": "contract_abi",
        "summary": "EVM contract ABI, proxy info and signatures (6 chains)",
        "description": "ABI and metadata for an EVM contract on Base, Ethereum, Arbitrum, OP Mainnet, Polygon or Avalanche: Sourcify verification match, contract name, compiler, proxy type and implementations (implementation ABI merged), function, event and error signatures with selectors and topics, and read vs write function lists. Unverified contracts get a best-effort function list from bytecode selectors named via the Sourcify 4byte database. Sources: Sourcify, chain JSON-RPC via PublicNode.",
        "tags": [
          "crypto",
          "evm",
          "abi",
          "smart-contracts",
          "sourcify"
        ],
        "security": [],
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": true,
            "description": "Chain by name, alias or chain id: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114).",
            "schema": {
              "type": "string"
            },
            "example": "base"
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "Contract address (0x + 40 hex characters, any letter case).",
            "schema": {
              "type": "string"
            },
            "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "json (default) adds the JSON ABI (up to 500 KB); human returns only the signature lists and metadata.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "human"
              ]
            },
            "example": "json"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.002"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "chain": "base",
                    "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                    "format": "json"
                  },
                  "result": {
                    "chain": "base",
                    "chain_id": 8453,
                    "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                    "verified": true,
                    "name": "FiatTokenProxy",
                    "verification": {
                      "match": "exact_match",
                      "creation_match": "exact_match",
                      "runtime_match": "exact_match",
                      "verified_at": "2024-08-08T13:59:29Z"
                    },
                    "compiler": {
                      "language": "Solidity",
                      "compiler_version": "0.6.12+commit.27d51765",
                      "evm_version": "istanbul",
                      "optimizer": {
                        "enabled": true,
                        "runs": 10000000
                      },
                      "source_file": "FiatTokenProxy.sol"
                    },
                    "bytecode_size": 1852,
                    "proxy": {
                      "is_proxy": true,
                      "type": "ZeppelinOSProxy",
                      "implementations": [
                        {
                          "address": "0x2Ce6311ddAE708829bc0784C967b7d77D19FD779",
                          "name": "FiatTokenV2_2"
                        }
                      ]
                    },
                    "implementation": {
                      "address": "0x2Ce6311ddAE708829bc0784C967b7d77D19FD779",
                      "name": "FiatTokenV2_2",
                      "verified": true,
                      "verification": {
                        "match": "exact_match",
                        "creation_match": "exact_match",
                        "runtime_match": "exact_match",
                        "verified_at": "2026-09-13T14:12:39Z"
                      },
                      "compiler": {
                        "language": "Solidity",
                        "compiler_version": "0.6.12+commit.27d51765",
                        "evm_version": "istanbul",
                        "optimizer": {
                          "enabled": true,
                          "runs": 10000000
                        },
                        "source_file": "FiatTokenV2_2.sol"
                      }
                    },
                    "counts": {
                      "functions": 60,
                      "read": 26,
                      "write": 34,
                      "events": 19,
                      "errors": 0,
                      "abi_entries": 81
                    },
                    "constructor": "constructor(address implementationContract)",
                    "fallback": true,
                    "receive": false,
                    "functions": {
                      "read": [
                        {
                          "selector": "0x70a08231",
                          "signature": "balanceOf(address)",
                          "human": "function balanceOf(address account) view returns (uint256)",
                          "state_mutability": "view"
                        }
                      ],
                      "write": [
                        {
                          "selector": "0xa9059cbb",
                          "signature": "transfer(address,uint256)",
                          "human": "function transfer(address to, uint256 value) returns (bool)",
                          "state_mutability": "nonpayable"
                        }
                      ],
                      "unclassified": []
                    },
                    "events": [
                      {
                        "topic0": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                        "signature": "Transfer(address,address,uint256)",
                        "human": "event Transfer(address indexed from, address indexed to, uint256 value)"
                      }
                    ],
                    "errors": [],
                    "abi": [
                      {
                        "name": "balanceOf",
                        "type": "function",
                        "inputs": [
                          {
                            "name": "account",
                            "type": "address",
                            "internalType": "address"
                          }
                        ],
                        "outputs": [
                          {
                            "name": "",
                            "type": "uint256",
                            "internalType": "uint256"
                          }
                        ],
                        "stateMutability": "view"
                      }
                    ],
                    "truncated": {
                      "summary": false,
                      "abi": false
                    },
                    "abi_source": "sourcify_verified_proxy_and_implementation"
                  },
                  "sources": [
                    {
                      "name": "Sourcify verified contract repository",
                      "url": "https://sourcify.dev/"
                    },
                    {
                      "name": "Base JSON-RPC via PublicNode",
                      "url": "https://base-rpc.publicnode.com"
                    }
                  ],
                  "notes": [
                    "Selectors are the first 4 bytes of keccak256 of the canonical signature; event topic0 is the full hash. Read functions are view or pure."
                  ],
                  "attribution": [
                    "Contract metadata and function/event signatures from Sourcify (https://sourcify.dev), the open-source smart contract verification service. Kit Rx is not affiliated with or endorsed by Sourcify.",
                    "Blockchain data read through PublicNode public RPC endpoints (https://www.publicnode.com, operated by Allnodes Inc.); figures are derived by Kit Rx (aggregated, decoded or converted), not a raw RPC feed. Not affiliated with or endorsed by PublicNode or Allnodes."
                  ],
                  "generated_at": "2026-11-15T01:14:47.893Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    },
    "/v1/chain/tx-decode": {
      "get": {
        "operationId": "tx_decode",
        "summary": "Decode an EVM transaction: method, events, transfers",
        "description": "Decoded EVM transaction on Base, Ethereum, Arbitrum, OP Mainnet, Polygon or Avalanche: status, block time, sender, target, value and fee in native coin and USD (current price), method and arguments, decoded events, ERC-20/721 token transfers, net token flows per address and a one-line summary. ABIs from Sourcify verified contracts or the Sourcify 4byte database. Ethereum receipts cover about the last 2 days. Sources: PublicNode and official chain JSON-RPC, Uniswap v3 pools.",
        "tags": [
          "crypto",
          "evm",
          "transaction",
          "decoder",
          "blockchain"
        ],
        "security": [],
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": true,
            "description": "Chain by name, alias or chain id: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114).",
            "schema": {
              "type": "string"
            },
            "example": "base"
          },
          {
            "name": "hash",
            "in": "query",
            "required": true,
            "description": "Transaction hash (0x + 64 hex characters).",
            "schema": {
              "type": "string"
            },
            "example": "0xa8970f8f69f1dbedac711cfdec10dbd690e7c039304aed363fc843c4fd88d3b1"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.005"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "chain": "base",
                    "hash": "0xa8970f8f69f1dbedac711cfdec10dbd690e7c039304aed363fc843c4fd88d3b1"
                  },
                  "result": {
                    "chain": "base",
                    "chain_id": 8453,
                    "hash": "0xa8970f8f69f1dbedac711cfdec10dbd690e7c039304aed363fc843c4fd88d3b1",
                    "status": "success",
                    "summary": "Swapped 0.1475 WETH for 258 USDC",
                    "block": 57562921,
                    "timestamp": "2026-11-15T00:35:59.000Z",
                    "from": "0x3623C63AB138Af28b7F3005E9906FEd7a2A618B1",
                    "to": "0x678Aa4bF4E210cf2166753e054d5b7c31cc7fa86",
                    "to_name": "SmartRouter",
                    "contract_created": null,
                    "nonce": 242154,
                    "value": {
                      "amount": "0",
                      "symbol": "ETH",
                      "usd": 0
                    },
                    "fee": {
                      "amount": "0.000001466323151794",
                      "symbol": "ETH",
                      "usd": 0.002541,
                      "gas_used": 137681,
                      "gas_limit": 1000000,
                      "effective_gas_price_gwei": 0.010625,
                      "l1_data_fee": "0.000000003462389113"
                    },
                    "native_usd_price": 1732.73,
                    "method": {
                      "selector": "0x04e45aaf",
                      "name": "exactInputSingle",
                      "signature": "exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))",
                      "decoded_with": "sourcify_verified_abi",
                      "args": [
                        {
                          "name": "params",
                          "type": "(address,address,uint24,address,uint256,uint256,uint160)",
                          "value": {
                            "tokenIn": "0x4200000000000000000000000000000000000006",
                            "tokenOut": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                            "fee": 100,
                            "recipient": "0x3623C63AB138Af28b7F3005E9906FEd7a2A618B1",
                            "amountIn": "147489999000000000",
                            "amountOutMinimum": "0",
                            "sqrtPriceLimitX96": "3313737701918105378226176"
                          }
                        }
                      ]
                    },
                    "token_transfers": [
                      {
                        "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                        "symbol": "USDC",
                        "standard": "erc20",
                        "from": "0x72AB388E2E2F6FaceF59E3C3FA2C4E29011c2D38",
                        "to": "0x3623C63AB138Af28b7F3005E9906FEd7a2A618B1",
                        "amount": "257.999859"
                      }
                    ],
                    "token_transfers_total": 2,
                    "net_flows": [
                      {
                        "address": "0x3623C63AB138Af28b7F3005E9906FEd7a2A618B1",
                        "role": "sender",
                        "name": null,
                        "changes": [
                          {
                            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                            "symbol": "USDC",
                            "amount": "257.999859"
                          },
                          {
                            "asset": "0x4200000000000000000000000000000000000006",
                            "symbol": "WETH",
                            "amount": "-0.147489999"
                          }
                        ]
                      }
                    ],
                    "events": [
                      {
                        "log_index": 11,
                        "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                        "name": "Transfer",
                        "signature": "Transfer(address,address,uint256)",
                        "decoded_with": "standard_abi",
                        "args": [
                          {
                            "name": "from",
                            "type": "address",
                            "value": "0x72AB388E2E2F6FaceF59E3C3FA2C4E29011c2D38"
                          },
                          {
                            "name": "to",
                            "type": "address",
                            "value": "0x3623C63AB138Af28b7F3005E9906FEd7a2A618B1"
                          },
                          {
                            "name": "value",
                            "type": "uint256",
                            "value": "257999859"
                          }
                        ]
                      }
                    ],
                    "events_total": 3,
                    "events_truncated": false,
                    "contracts": [
                      {
                        "address": "0x678Aa4bF4E210cf2166753e054d5b7c31cc7fa86",
                        "name": "SmartRouter",
                        "proxy_type": null,
                        "implementation_name": null
                      }
                    ]
                  },
                  "sources": [
                    {
                      "name": "Base JSON-RPC via PublicNode",
                      "url": "https://base-rpc.publicnode.com"
                    },
                    {
                      "name": "Sourcify verified contract repository",
                      "url": "https://sourcify.dev/"
                    }
                  ],
                  "notes": [
                    "Amounts are decimal strings in token units (raw integers when decimals are unknown). USD values use the current price from the chain's deepest Uniswap v3 wrapped-native/USDC pool, not the price at transaction time."
                  ],
                  "attribution": [
                    "Blockchain data read through PublicNode public RPC endpoints (https://www.publicnode.com, operated by Allnodes Inc.); figures are derived by Kit Rx (aggregated, decoded or converted), not a raw RPC feed. Not affiliated with or endorsed by PublicNode or Allnodes.",
                    "Contract metadata and function/event signatures from Sourcify (https://sourcify.dev), the open-source smart contract verification service. Kit Rx is not affiliated with or endorsed by Sourcify."
                  ],
                  "generated_at": "2026-11-15T01:14:48.045Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    },
    "/v1/chain/token-scan": {
      "get": {
        "operationId": "token_scan",
        "summary": "ERC-20 token risk scan (owner, proxy, liquidity)",
        "description": "Heuristic risk screen of an ERC-20 token on Base, Ethereum, Arbitrum, OP Mainnet, Polygon or Avalanche: name, symbol, supply; owner and renounce status; proxy and upgradeability; Sourcify verification; privileged functions in bytecode or verified ABI (mint, pause, blacklist, fee, limit, trading switch); Uniswap v2/v3 and Aerodrome pools with USD depth; risk score 0-100 with a reason per flag. Sources: on-chain reads via PublicNode JSON-RPC, Sourcify.",
        "tags": [
          "crypto",
          "token",
          "security",
          "erc20",
          "evm"
        ],
        "security": [],
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": true,
            "description": "Chain of the token: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114). Chain ids and aliases such as eth, arb, op, matic, avax are also accepted.",
            "schema": {
              "type": "string",
              "enum": [
                "base",
                "ethereum",
                "arbitrum",
                "optimism",
                "polygon",
                "avalanche"
              ]
            },
            "example": "base"
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "Token contract address (0x followed by 40 hex characters).",
            "schema": {
              "type": "string"
            },
            "example": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.01"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "chain": "base",
                    "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"
                  },
                  "result": {
                    "chain": "base",
                    "chain_id": 8453,
                    "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed",
                    "token": {
                      "name": "Degen",
                      "symbol": "DEGEN",
                      "decimals": 18,
                      "total_supply": "35850686746.3298680797264344",
                      "burned_pct": 0.0006,
                      "contract_self_balance_pct": 0.0267
                    },
                    "contract": {
                      "code_size_bytes": 11608,
                      "verified": true,
                      "verified_name": "DegenToken",
                      "verified_match": "exact_match",
                      "compiler_version": "0.8.20+commit.a1b79de6",
                      "proxy": {
                        "is_proxy": false,
                        "upgradeable": false,
                        "type": null,
                        "implementation": null,
                        "implementation_verified": null,
                        "implementation_name": null,
                        "beacon": null,
                        "admin": null,
                        "admin_is_contract": null
                      }
                    },
                    "ownership": {
                      "owner": "0x704Ec5C12Ca20a293C2C0B72B22619A4231f3c0d",
                      "owner_source": "owner()",
                      "renounced": false,
                      "owner_is_contract": true,
                      "owner_balance_pct": 0.5312,
                      "minter": null,
                      "authority": null
                    },
                    "status": {
                      "paused": false,
                      "trading_enabled": null,
                      "trading_getters": {},
                      "limits_in_effect": null,
                      "fee_getters_pct": {}
                    },
                    "privileged_functions": [
                      {
                        "category": "mint",
                        "signature": "mint(address,uint96)",
                        "source": "verified_abi"
                      }
                    ],
                    "liquidity": {
                      "price_usd": 0.000693288,
                      "native_usd": 1726.92,
                      "total_liquidity_usd": 380800,
                      "total_quote_reserve_usd": 191300,
                      "best_pool_address": "0xc9034c3E7F58003E6ae0C8438e7c8f4598d5ACAA",
                      "pools": [
                        {
                          "dex": "Uniswap v3",
                          "address": "0xc9034c3E7F58003E6ae0C8438e7c8f4598d5ACAA",
                          "pair": "DEGEN/WETH",
                          "fee_pct": 0.3,
                          "price_usd": 0.000693288,
                          "liquidity_usd": 195100,
                          "quote_reserve_usd": 98950,
                          "in_range": true
                        }
                      ],
                      "pools_found": 16
                    },
                    "risk_score": 32,
                    "risk_level": "medium",
                    "flags": [
                      {
                        "code": "can_mint",
                        "severity": "high",
                        "points": 15,
                        "reason": "Can create new tokens, diluting holders (mint)."
                      }
                    ],
                    "block": 57571655
                  },
                  "sources": [
                    {
                      "name": "Base JSON-RPC via PublicNode",
                      "url": "https://base-rpc.publicnode.com"
                    },
                    {
                      "name": "Sourcify verified contract repository",
                      "url": "https://sourcify.dev/"
                    }
                  ],
                  "notes": [
                    "Pools covered: Uniswap v3 (4 fee tiers), Uniswap v2, Aerodrome v2 and Slipstream, against WETH or native USDC."
                  ],
                  "generated_at": "2026-11-15T01:05:06.702Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    },
    "/v1/chain/token-price": {
      "get": {
        "operationId": "token_price",
        "summary": "ERC-20 token USD price from on-chain DEX pools",
        "description": "Spot USD and native-coin price of an ERC-20 token on Base, Ethereum, Arbitrum, OP Mainnet, Polygon or Avalanche from its deepest Uniswap v2/v3 pool (plus Aerodrome on Base) paired with the wrapped native coin or USDC, with each pool's fee and USD liquidity, the best pool, a confidence level and the block read. Sources: on-chain reads via PublicNode JSON-RPC (official RPC fallback); native USD from Uniswap v3 pools.",
        "tags": [
          "crypto",
          "token",
          "price",
          "dex",
          "evm"
        ],
        "security": [],
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": true,
            "description": "Chain of the token: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114). Chain ids and aliases such as eth, arb, op, matic, avax are also accepted.",
            "schema": {
              "type": "string",
              "enum": [
                "base",
                "ethereum",
                "arbitrum",
                "optimism",
                "polygon",
                "avalanche"
              ]
            },
            "example": "base"
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "Token contract address (0x followed by 40 hex characters).",
            "schema": {
              "type": "string"
            },
            "example": "0x940181a94A35A4569E4529A3CDfB74e38FD98631"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.002"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "chain": "base",
                    "address": "0x940181a94A35A4569E4529A3CDfB74e38FD98631"
                  },
                  "result": {
                    "chain": "base",
                    "chain_id": 8453,
                    "address": "0x940181a94A35A4569E4529A3CDfB74e38FD98631",
                    "symbol": "AERO",
                    "decimals": 18,
                    "price_usd": 0.423687,
                    "price_native": 0.000245343,
                    "native_symbol": "ETH",
                    "native_usd": 1726.92,
                    "best_pool": {
                      "dex": "Aerodrome",
                      "address": "0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d",
                      "pair": "AERO/USDC",
                      "fee_pct": 0.3,
                      "stable": false,
                      "price_usd": 0.423687,
                      "liquidity_usd": 3678000,
                      "quote_reserve_usd": 1839000
                    },
                    "pools": [
                      {
                        "dex": "Aerodrome",
                        "address": "0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d",
                        "pair": "AERO/USDC",
                        "fee_pct": 0.3,
                        "stable": false,
                        "price_usd": 0.423687,
                        "liquidity_usd": 3678000,
                        "quote_reserve_usd": 1839000
                      },
                      {
                        "dex": "Uniswap v3",
                        "address": "0x3d5D143381916280ff91407FeBEB52f2b60f33Cf",
                        "pair": "AERO/WETH",
                        "fee_pct": 0.3,
                        "price_usd": 0.42352,
                        "liquidity_usd": 1015000,
                        "quote_reserve_usd": 303200,
                        "in_range": true
                      }
                    ],
                    "pools_found": 24,
                    "total_liquidity_usd": 6513000,
                    "price_spread_pct": 0.887,
                    "confidence": "high",
                    "confidence_reasons": [],
                    "block": 57571656
                  },
                  "sources": [
                    {
                      "name": "Base JSON-RPC via PublicNode",
                      "url": "https://base-rpc.publicnode.com"
                    }
                  ],
                  "notes": [
                    "Spot price (before fees and price impact) from the pool with the largest WETH or USDC reserves; WETH converted via Base's deepest Uniswap v3 WETH/USDC pool, USDC = $1. liquidity_usd values the token side at price_usd; quote_reserve_usd is the WETH or USDC side alone; confidence counts at most twice that side."
                  ],
                  "generated_at": "2026-11-15T01:05:06.894Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    },
    "/v1/chain/wallet-balances": {
      "get": {
        "operationId": "wallet_balances",
        "summary": "Multi-chain wallet balances in USD (curated tokens)",
        "description": "Balances of an EVM wallet (0x address, ENS name or Basename) on Base, Ethereum, Arbitrum, OP Mainnet, Polygon and Avalanche: native coin plus a curated list of 9-13 major tokens per chain (USDC, USDT, DAI, WETH, WBTC/cbBTC, AERO, ARB, OP and more), USD values, per-chain and total USD, chains holding funds, and native USDC per chain for x402 payments. Sources: each chain's JSON-RPC via PublicNode; prices from on-chain Uniswap v3 and Velodrome pools.",
        "tags": [
          "crypto",
          "wallet",
          "balances",
          "usdc",
          "evm"
        ],
        "security": [],
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "Wallet as a 0x EVM address, or an ASCII ENS name (vitalik.eth) or Basename (jesse.base.eth) resolved to its ETH address record.",
            "schema": {
              "type": "string"
            },
            "example": "vitalik.eth"
          },
          {
            "name": "chains",
            "in": "query",
            "required": false,
            "description": "Comma-separated chains by name or chain id: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114). Default: all six.",
            "schema": {
              "type": "string"
            },
            "example": "base,ethereum,arbitrum"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.003"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "address": "vitalik.eth",
                    "chains": [
                      "base",
                      "ethereum",
                      "arbitrum"
                    ]
                  },
                  "result": {
                    "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
                    "ens_name": "vitalik.eth",
                    "total_usd": 20016.36,
                    "chains_with_funds": [
                      "base",
                      "ethereum",
                      "arbitrum"
                    ],
                    "usdc_by_chain": [
                      {
                        "chain": "arbitrum",
                        "network": "eip155:42161",
                        "usdc": 158.162265,
                        "token": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
                      },
                      {
                        "chain": "base",
                        "network": "eip155:8453",
                        "usdc": 81.809468,
                        "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
                      },
                      {
                        "chain": "ethereum",
                        "network": "eip155:1",
                        "usdc": 39.192124,
                        "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
                      }
                    ],
                    "usdc_total": 279.163857,
                    "coverage": "curated_tokens_only",
                    "chains": [
                      {
                        "chain": "base",
                        "chain_id": 8453,
                        "network": "eip155:8453",
                        "block": 57565841,
                        "native": {
                          "symbol": "ETH",
                          "balance": 3.128853190363307,
                          "usd": 5492.83,
                          "price_usd": 1755.54
                        },
                        "tokens": [
                          {
                            "symbol": "WETH",
                            "address": "0x4200000000000000000000000000000000000006",
                            "balance": 0.27558524550948865,
                            "usd": 483.8,
                            "price_usd": 1755.54
                          },
                          {
                            "symbol": "USDC",
                            "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                            "balance": 81.809468,
                            "usd": 81.81,
                            "price_usd": 1
                          }
                        ],
                        "total_usd": 6075.66,
                        "unpriced_tokens": [],
                        "tokens_checked": 10
                      },
                      {
                        "chain": "ethereum",
                        "chain_id": 1,
                        "network": "eip155:1",
                        "block": 26416895,
                        "native": {
                          "symbol": "ETH",
                          "balance": 5.798969845714111,
                          "usd": 10192.79,
                          "price_usd": 1757.69
                        },
                        "tokens": [
                          {
                            "symbol": "WETH",
                            "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
                            "balance": 1.468927766030343,
                            "usd": 2581.92,
                            "price_usd": 1757.69
                          }
                        ],
                        "total_usd": 13125.83,
                        "unpriced_tokens": [],
                        "tokens_checked": 13
                      }
                    ],
                    "errors": []
                  },
                  "sources": [
                    {
                      "name": "Ethereum JSON-RPC via PublicNode",
                      "url": "https://ethereum-rpc.publicnode.com"
                    },
                    {
                      "name": "Base JSON-RPC via PublicNode",
                      "url": "https://base-rpc.publicnode.com"
                    }
                  ],
                  "notes": [
                    "Only the native coin and a curated list of major tokens per chain are checked (tokens_checked per chain); other ERC-20s, NFTs, LP positions and DeFi deposits are not included, so total_usd is a lower bound."
                  ],
                  "generated_at": "2026-11-15T00:45:43.911Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    },
    "/v1/chain/ens": {
      "get": {
        "operationId": "ens_resolve",
        "summary": "ENS and Basenames resolver (forward and reverse)",
        "description": "ENS and Basenames lookup: name to address, or address to primary name with forward verification. Returns the ETH address, resolver contract, text records (url, avatar, description, Twitter, GitHub, Telegram, and email when set on-chain) and decoded contenthash (IPFS, IPNS, Swarm, Arweave). Sources: ENS Universal Resolver on Ethereum and the Basenames registry on Base, read via PublicNode JSON-RPC; offchain (CCIP-read) names are reported, not followed.",
        "tags": [
          "crypto",
          "ens",
          "basenames",
          "identity",
          "evm"
        ],
        "security": [],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "ASCII ENS name (vitalik.eth) or Basename (jesse.base.eth) for a forward lookup. Mutually exclusive with address.",
            "schema": {
              "type": "string"
            },
            "example": "vitalik.eth"
          },
          {
            "name": "address",
            "in": "query",
            "required": false,
            "description": "0x EVM address for a reverse lookup: its primary name on Ethereum (ENS) and Base (Basenames), checked by forward resolution, plus that name's records.",
            "schema": {
              "type": "string"
            },
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.002"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "name": "vitalik.eth"
                  },
                  "result": {
                    "lookup": "forward",
                    "name": "vitalik.eth",
                    "network": "ethereum",
                    "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
                    "resolver": "0x394D8EB4a4fDF599384DeAb25F31d111d755c398",
                    "is_offchain": false,
                    "wildcard": false,
                    "text": {
                      "url": "https://vitalik.ca",
                      "avatar": "https://euc.li/vitalik.eth",
                      "description": "mi pinxe lo crino tcati",
                      "com.twitter": "VitalikButerin",
                      "com.github": "vbuterin",
                      "org.telegram": null,
                      "email": null
                    },
                    "contenthash": {
                      "protocol": "ipfs",
                      "uri": "ipfs://bafybeia5eyombgegdwmvfzwisveadaaok2vdjkv5rklfdmcljysjrjc4km"
                    },
                    "forward_verified": null
                  },
                  "sources": [
                    {
                      "name": "Ethereum JSON-RPC via PublicNode",
                      "url": "https://ethereum-rpc.publicnode.com"
                    }
                  ],
                  "notes": [
                    "Text records are public on-chain values set by the name's owner; empty records are null."
                  ],
                  "generated_at": "2026-11-15T00:45:43.981Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    }
  }
}