crypto_wallet_intel
ActiveTool of gapup-mcp
Multi-chain on-chain analytics for crypto trading agents, on-chain analysts, AML/compliance teams and DeFi BD. Covers Ethereum, Base, Polygon, BSC, Arbitrum, Optimism — EVM-compatible addresses only. 5 modes: • wallet_profile — full wallet summary: type (EOA/contract/CEX/protocol), inferred persona (whale/MEV-bot/DeFi-user/hodler…), age, tx count, native balance, ERC-20 count, NFT collections, OFAC sanctions flag • token_flows — ERC-20 inflows/outflows per token on the selected period, priced in USD via CoinGecko • pnl_estimate — FIFO realized + unrealized P&L on the period with confidence rating (high/medium/low) • counterparties — top 20 counterparties ranked by USD volume with CEX/DEX/protocol labels • defi_positions — active DeFi positions detected via Etherscan interaction history (Aave/Compound/Uniswap/Curve/Lido/Balancer/SushiSwap) Signal detection (P0/P1/P2): P0 if OFAC SDN match OR direct Tornado Cash / sanctioned-protocol interaction P1 if >$1M volume on wallet <30 days old OR MEV-bot pattern OR >80% volume on single counterparty P2 informational (CEX wallet, new wallet, no anomaly) Sources: Etherscan family (keyless free-tier, optional API key per chain), DefiLlama (keyless), public EVM RPC (keyless), CoinGecko free tier (keyless). Cache TTL: 5 min (wallet activity evolves fast). Budget: 8s per source. Env vars (all optional, raise Etherscan rate-limit from 1 req/5s to 5 req/s): ETHERSCAN_API_KEY · BASESCAN_API_KEY · POLYGONSCAN_API_KEY BSCSCAN_API_KEY · ARBISCAN_API_KEY · OPTIMISM_API_KEY
Parameters schema
{
"type": "object",
"required": [
"mode",
"address"
],
"properties": {
"mode": {
"enum": [
"wallet_profile",
"token_flows",
"pnl_estimate",
"counterparties",
"defi_positions"
],
"type": "string",
"description": "Analysis mode. wallet_profile=full wallet summary + persona + sanctions flag. token_flows=ERC-20 inflows/outflows per token priced in USD. pnl_estimate=FIFO realized+unrealized P&L with confidence. counterparties=top 20 counterparties by volume. defi_positions=active positions on Aave/Compound/Uniswap/Curve/Lido/etc."
},
"async": {
"type": "boolean",
"description": "If true, returns a job_id immediately (<200ms) instead of waiting for the result. Poll the result with job_result(job_id). Use for slow tools to avoid client timeouts."
},
"chain": {
"enum": [
"ethereum",
"base",
"polygon",
"bsc",
"arbitrum",
"optimism",
"all"
],
"type": "string",
"description": "Chain to analyze. Default \"ethereum\". Use \"all\" to scan all 6 chains (slower, ~30s)."
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "EVM-compatible wallet address (0x... 40 hex chars). Works on all supported chains."
},
"period_days": {
"type": "number",
"maximum": 365,
"minimum": 1,
"description": "Lookback window in days for token_flows, pnl_estimate, counterparties, defi_positions. Default 30."
},
"min_value_usd": {
"type": "number",
"minimum": 0,
"description": "Minimum USD value filter for token_flows and counterparties. Default $100."
}
}
}Parent server
gapup-mcp
https://github.com/getgapup/gapup-mcp-public
2/7 registries