EVM contract ABI, proxy info and signatures (6 chains) API

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.

$0.002 per call  USDC over x402 v2 on Base, Polygon, Arbitrum, Avalanche or Sei. No signup, no API key. Requests that fail or match nothing are not charged.

Endpoint

GET https://api.kit-rx.com/v1/chain/contract-abi

Parameters

NameTypeRequiredDescription
chainstringyesChain by name, alias or chain id: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114). e.g. base
addressstringyesContract address (0x + 40 hex characters, any letter case). e.g. 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
formatstring: json, humannojson (default) adds the JSON ABI (up to 500 KB); human returns only the signature lists and metadata. e.g. json

Example request

https://api.kit-rx.com/v1/chain/contract-abi?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Without payment the server answers 402 Payment Required with the price (2000 atomic USDC) in the PAYMENT-REQUIRED header. Any x402 v2 client pays and retries automatically. A request with no parameters runs this example.

curl -i "https://api.kit-rx.com/v1/chain/contract-abi?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

Pay from an agent

AgentCash: fetch the URL. OpenDexter MCP: x402_fetch. Kit Rx MCP server: https://api.kit-rx.com/mcp. Code:

import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.BUYER_KEY) });
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://api.kit-rx.com/v1/chain/contract-abi?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913");
console.log(await res.json());

Example response

{
  "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"
}

Kit Rx: Pay-per-call data and safety tools for AI agents, paid in USDC over x402. No signup, no API key. Machine-readable: OpenAPI, llms.txt, /.well-known/x402, agent skills.