Base contract bytecode, proxy-slot and zero-supply heuristics
Limited Base contract bytecode, EIP-1967 slot and zero-supply heuristics. Missing or unsupported property reads are null; RPC transport failures return 502. Ownership renunciation requires a confirmed zero owner. Empty slots do not identify uninitialized proxies. EOAs return not-applicable. Not a full security audit; see endpoint details for coverage limits. Use before approving or calling an unfamiliar Base contract.
Inputs
| Name | Type | Description |
|---|---|---|
address (required) | string | Base chain contract address, 0x-prefixed 20-byte hex |
Request
Over HTTP, with a card key from /credits:
curl -H "Authorization: Bearer adt_…" "https://agent-data-tools.revmesh2074.workers.dev/contract-risk?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
Or one of your 25 free calls, no key:
curl "https://agent-data-tools.revmesh2074.workers.dev/contract-risk?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&trial=1"
Without a key, the same URL answers 402 Payment Required with x402 and MPP terms, so an agent with a wallet pays per call in USDC (Base, Polygon, Arbitrum, Monad, World Chain or Tempo) and retries.
Example result
{
"chain": "base",
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"type": "contract",
"riskLevel": "low",
"riskFlags": [],
"summary": "low risk: 0 flag(s). Bytecode 8953 bytes.",
"facts": {
"bytecodeSize": 8953,
"deployedAt": null,
"hasCode": true,
"isProxy": false,
"proxyImplementation": null
},
"tokenProperties": {
"name": "USD Coin",
"symbol": "USDC",
"decimals": 6,
"totalSupply": "10000000000000",
"owner": "0x0000000000000000000000000000000000000001",
"ownershipRenounced": false,
"paused": null
},
"lastUpdatedBlock": 18650000
}
From an AI agent (MCP)
Add the MCP server to Claude, Cursor or any MCP client. This tool is contract_risk, and the first 25 successful calls are free:
https://agent-data-tools.revmesh2074.workers.dev/mcp
Details and limits
Base contract bytecode size and EIP-1967 slot check (a confirmed zero slot returns isProxy false; an empty/unreadable slot response returns null; RPC failures return 502). A nonzero slot with a zero implementation flags proxy-impl-unset. ERC-20 property reads run only for 500–50,000-byte contracts; individual unsupported/reverting reads are null, while multicall transport failures return 502. Zero supply requires a successful zero read; ownershipRenounced is true only for zero owner, false for nonzero, else null; paused is null if unsupported. Risk tiers are limited bytecode/proxy/zero-supply heuristics, not a full audit; empty slots cannot identify uninitialized proxies. EOAs return not-applicable.