Wallet Funding Trace MCP x402

EVM wallet funding/origin tracing. Multi-hop predecessor walk over public RPC + classification against CEX / mixer / sanctioned / bridge registries. Surfaces a single-line funding_classification (clean / tc_tainted / sanctioned / mixer_tainted / multi_hop_cex / fresh_mint / unknown) + a 5-band risk_band. Multichain (ethereum / base / arbitrum / optimism / polygon). Pay-per-call USDC on Base — no signup, no API key, no Etherscan key.

Endpoints

PathPriceWhat it does
POST /v1/wallet/funding_trace$0.30Multi-hop predecessor walk. Returns trace_path + terminal_source + funding_classification + risk_band.
POST /v1/wallet/funding_summary$0.101-hop summary — initial funder identity + wallet age.
POST /v1/wallet/funding_path$0.05Predecessor at hop=N (default 1 = immediate funder).

Discovery surfaces

Quick example

curl -X POST https://wallet-funding-trace-mcp.mtree.workers.dev/v1/wallet/funding_trace \
  -H "Content-Type: application/json" \
  -d '{"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","chain":"ethereum","max_hops":3}'
# 402 returned; settle X-PAYMENT and retry.

Methodology

For the target address, find the earliest inbound ERC20 Transfer event among the tracked stablecoin / WETH set (USDC, USDT, DAI, WETH per chain) via eth_getLogs. Take the predecessor (the from address of that Transfer) and classify it via four bundled registries: CEX hot/cold wallets (Binance/Coinbase/Kraken/OKX/Crypto.com/Bitfinex/Bittrex/Gate.io), Tornado Cash pool addresses (multi-denom), OFAC SDN seed list, and major cross-chain bridges (LayerZero/Wormhole/Stargate/Axelar/Across + native L2 bridges). eth_getCode distinguishes contract from EOA. If the predecessor is an unclassified EOA and the hop budget allows, recurse one level back. Terminal classification map: CEX/bridge → clean; Tornado Cash → tc_tainted; OFAC → sanctioned; non-TC mixer → mixer_tainted; CEX after ≥2 EOA hops → multi_hop_cex; unknown contract → fresh_mint; otherwise → unknown.

Repo

github.com/sebastiancoombs/wallet-funding-trace-mcp