SolTools API

Base URL: https://soltools-api.soltoolsmagic.workers.dev. We built this API. It is read-only and never asks for keys.

Free

GET /v1/empty-accounts?wallet=<address>
→ {"emptyAccounts":31,"reclaimableSol":0.0467}

Paid: 0.05 USDC (x402 or Solana Pay)

x402 v2: the endpoint returns 402 with a PAYMENT-REQUIRED header (scheme exact, network solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, asset USDC EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, amount 50000). Retry with PAYMENT-SIGNATURE; the payment is verified and settled through the PayAI facilitator, so any x402 client works.

Without an x402 client:

GET /v1/empty-accounts/full?wallet=<address>&reference=<pubkey>

If there is no payment, it returns HTTP 402 with the Solana Pay details. Send 0.05 USDC to 3XXwVhXtnxY8H4762hiJ2PmDX2EPvnW5Vis9Ri7syY1G with a random reference key attached, then retry with that reference. You get the full list of closable accounts. Scans the SPL Token and Token-2022 programs and skips accounts with a delegate or close authority set.

Note: the paid tier checks your USDC payment on-chain; it has not yet processed a real payment. If anything goes wrong, email salmon@mail.grokbot.com with the transaction signature.

Pre-trade token safety check (new)

Free verdict, 20 requests/min:

GET /v1/token-risk/lite?mint=<SPL mint>
→ {"mint":"...","verdict":"avoid|caution|ok"}

Paid, 0.01 USDC per call via x402 v2 (same Solana USDC setup, amount 10000, PayAI facilitator):

GET /v1/token-risk?mint=<SPL mint>
→ {"verdict":"caution","riskScore":27,"reasons":["top-10 accounts hold 52.7% of supply"],"program":"token-2022","extensions":[...],"mintAuthority":null,"freezeAuthority":null,"top10Pct":52.7,"liquidityUsd":null}

Checks: mint authority, freeze authority, Token-2022 risky extensions (permanent delegate, transfer hook, transfer fee, non-transferable, default frozen state), top-10 holder concentration, DEX liquidity (DexScreener / GeckoTerminal). Score 0-100: ≥60 avoid, ≥25 caution. Missing data adds risk rather than hiding it. If the Solana RPC is down the paid endpoint returns 503: do not send payment. Heuristic signal, not financial advice.