ERC-20 token risk scan (owner, proxy, liquidity) API
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.
$0.01 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/token-scan
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
chain | string: base, ethereum, arbitrum, optimism, polygon, avalanche | yes | 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. e.g. base |
address | string | yes | Token contract address (0x followed by 40 hex characters). e.g. 0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed |
Example request
https://api.kit-rx.com/v1/chain/token-scan?chain=base&address=0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed
Without payment the server answers 402 Payment Required with the price (10000 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/token-scan?chain=base&address=0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"
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/token-scan?chain=base&address=0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed");
console.log(await res.json());
Example response
{
"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"
}
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.