ScriptSmith Dashboard
Chain Check API · x402

Pay-per-call crypto safety data for apps and AI agents

Token approvals, phishing URLs, EVM and Solana token risk, contract scans, wallet reports, ENS labels and gas on 7 chains. Pay per request in USDC on Base with the open x402 protocol: no account, no API key, no subscription.

Quick start

  1. Call any endpoint. You get HTTP 402 with the price in a PAYMENT-REQUIRED header (x402 v2) and the JSON body (v1).
  2. Your x402 client signs a USDC transfer authorisation on Base (EIP-3009) and retries with PAYMENT-SIGNATURE.
  3. We verify it, run the query and settle through the PayAI facilitator. The receipt comes back in PAYMENT-RESPONSE.

Invalid input gets a 400 before you pay. If a data source fails, the payment isn't settled, so you're never charged for an error.

# Node, with @x402/fetch
import { wrapFetchWithPayment } from "@x402/fetch";
const pay = wrapFetchWithPayment(fetch, client);
const r = await pay("https://scriptsmith-dashboard.pages.dev/x402/v1/phishing-check?url=metamsk.io");
console.log(await r.json());

# or probe the terms
$ curl -i "https://scriptsmith-dashboard.pages.dev/x402/v1/gas"
Endpoints

8 endpoints, 7 EVM chains plus Solana

GET/x402/v1/token-approvals?chain=…&address=…0.02 USDC

Token approval audit

Active ERC-20 and NFT approvals for a wallet on 7 EVM chains (full Etherscan event history on Ethereum, Arbitrum and Polygon), each re-checked on-chain, with unlimited-allowance and malicious-spender flags and revoke instructions.

ParamDescription
chainEVM chain: eth, base, arbitrum, optimism, polygon, bsc, avalanche
addressWallet address (0x...)
Example response
{
 "active_approvals": 3,
 "unlimited": 2,
 "high_risk": 0,
 "approvals": [
  {
   "symbol": "USDC",
   "spender": "0x...",
   "allowance": "unlimited",
   "risk_level": "medium"
  }
 ]
}
GET/x402/v1/phishing-check?url=…0.005 USDC

Phishing URL check

Check a URL or domain against 460k+ known crypto phishing domains (MetaMask eth-phishing-detect + ScamSniffer), GoPlus phishing data and lookalike/typosquat heuristics.

ParamDescription
urlURL or domain to check
Example response
{
 "host": "metamsk.io",
 "verdict": "danger",
 "listed": [
  {
   "domain": "metamsk.io",
   "sources": [
    "MetaMask"
   ]
  }
 ],
 "signals": [
  {
   "level": "warn",
   "text": "Looks very similar to metamask.io"
  }
 ]
}
GET/x402/v1/token-risk?chain=…&address=…0.02 USDC

EVM token risk score

Token risk score 0-100 (honeypot, buy/sell tax, mint, hidden owner, blacklist, pause, unverified source, LP lock, top holders) for ERC-20s on 7 EVM chains.

ParamDescription
chainEVM chain: eth, base, arbitrum, optimism, polygon, bsc, avalanche
addressToken contract (0x...)
Example response
{
 "symbol": "USDC",
 "risk_score_0_100": 15,
 "verdict": "low",
 "flags": [
  "Owner can mint"
 ]
}
GET/x402/v1/solana-token?mint=…0.02 USDC

Solana token safety check

Solana token safety check: mint and freeze authority, Token-2022 extensions (transfer hooks, permanent delegate, fees), supply and top-holder concentration, with a 0-100 risk score.

ParamDescription
mintSPL or Token-2022 mint address
Example response
{
 "symbol": "Bonk",
 "mint_authority": null,
 "freeze_authority": null,
 "extensions": [],
 "risk_score_0_100": 0,
 "verdict": "low"
}
GET/x402/v1/contract-scan?chain=…&address=…0.02 USDC

Contract capability scan

Smart-contract quick risk scan from bytecode: proxy and admin detection, owner, mint, blacklist, pause, fee-change and trading-toggle capabilities, with plain-English flags.

ParamDescription
chainEVM chain: eth, base, arbitrum, optimism, polygon, bsc, avalanche
addressContract address (0x...)
Example response
{
 "is_contract": true,
 "proxy": {
  "implementation": "0x..."
 },
 "capabilities": {
  "mint": true
 },
 "flags": [
  "Upgradeable proxy"
 ],
 "centralisation_score_0_100": 58
}
GET/x402/v1/wallet-report?address=…0.01 USDC

Multi-chain wallet report

Native, USDC and USDT balances, transaction counts, contract and EIP-7702 delegation detection for one address on Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain and Avalanche.

ParamDescription
addressWallet address (0x...)
Example response
{
 "active_chains": [
  "eth",
  "base"
 ],
 "total_stablecoins_usd": "410.09",
 "chains": {
  "base": {
   "ETH": "3.13",
   "USDC": "79.53",
   "tx_count": 12
  }
 }
}
GET/x402/v1/address-label?q=…0.01 USDC

Address and ENS label

Resolve ENS name <-> address, check whether it is a contract, and flag known-malicious addresses (phishing, scam, sanctions, mixer, hacker) before you send funds.

ParamDescription
q0x address or ENS name
Example response
{
 "address": "0xd8dA...",
 "ens_name": "vitalik.eth",
 "malicious_flags": [],
 "verdict": "no known flags"
}
GET/x402/v1/gas0.005 USDC

Multi-chain gas snapshot

Live gas on 7 EVM chains with base fee and the USD cost of a transfer, ERC-20 transfer, approve, NFT mint and swap, plus the cheapest chain for a swap.

ParamDescription
None
Example response
{
 "chains": {
  "base": {
   "gas_gwei": 0.006,
   "cost_usd": {
    "swap": 0.004
   }
  }
 },
 "cheapest_for_swap": "base"
}
Discovery: /openapi.json and /.well-known/x402. Payments go to 0xee31…D06C on Base. Data comes from public RPC nodes, GoPlus Security, CoinGecko, ENS, Etherscan and Blockscout; it's heuristic, not financial advice or an audit. Contact: scriptsmith@mail.grokbot.com.
FAQ

API questions

What is x402?
An open protocol that uses the HTTP 402 Payment Required status code so a client can pay for a single API call with a stablecoin, without an account or API key. See x402 explained.
Which wallets and chains can pay?
USDC on Base. Any x402 client works, for example @x402/fetch, @x402/axios, or agent wallets that support x402.
Is there a free tier?
The free web tools at /tools/ cover the same checks for people using a browser. The API is pay-per-call only.