{"count":12,"tools":[{"name":"get_gas_price","description":"Get the current gas price on an EVM chain. Use this when the user asks about transacton costs, whether gas is cheap right now, or when planning a swap/bridge. Returns gas price in gwei (human-readable unit).","input_schema":{"type":"object","properties":{"chain":{"type":"string","enum":["ethereum","base","arbitrum","optimism","polygon"],"description":"Which EVM chain to query."}},"required":["chain"]}},{"name":"get_token_overview","description":"Get current market data for a token: price, 24h volume, liquidity, FDV, market cap, price changes over 5m/1h/6h/24h. Use this as the first check on any token the user asks about. Automatically picks the most liquid trading pair. Returns an error if the token has no tracked pairs.","input_schema":{"type":"object","properties":{"chain":{"type":"string","enum":["ethereum","base","arbitrum","bsc","polygon","optimism"],"description":"Which EVM chain the token is on."},"token_address":{"type":"string","description":"The ERC20 contract address of the token."}},"required":["chain","token_address"]}},{"name":"scan_new_pairs","description":"Scan recently launched tokens and filter for promising candidates. Uses Dexscreener's latest token profiles, filters by chain and optional minimum liquidity. Use this when the user asks about new launches, fresh meme coins, or wants to see what's just shipping. Results are sorted by recency.","input_schema":{"type":"object","properties":{"chain":{"type":"string","enum":["ethereum","base","arbitrum","bsc","polygon","optimism"],"description":"Which EVM chain to filter for."},"limit":{"type":"integer","description":"Max number of pairs to return (default 10, max 20).","minimum":1,"maximum":20},"min_liquidity_usd":{"type":"number","description":"Minimum USD liquidity filter (default 5000). Lower values surface more results but include more rugs.","minimum":0}},"required":["chain"]}},{"name":"get_token_social_stats","description":"Get social links and metadata for a token: website URLs, Twitter, Telegram, Discord, and other socials if present. Useful to verify a token has a real project behind it and to follow community channels. Does NOT give follower counts — just what links exist.","input_schema":{"type":"object","properties":{"chain":{"type":"string","enum":["ethereum","base","arbitrum","bsc","polygon","optimism"],"description":"Which EVM chain the token is on."},"token_address":{"type":"string","description":"The ERC20 contract address of the token."}},"required":["chain","token_address"]}},{"name":"get_token_security","description":"Run a comprehensive security check on a token contract: honeypot detection, buy/sell tax, mint authority, ownership renunciation, LP lock status, blacklis/whitelist flags, transfer pause capability. ALWAYS call this before recommending any new or unverified token. The boolean fields directly feed into the Red Flag output section.","input_schema":{"type":"object","properties":{"chain":{"type":"string","enum":["ethereum","base","arbitrum","bsc","polygon","optimism"],"description":"EVM chain the token is on."},"token_address":{"type":"string","description":"ERC20 contract address."}},"required":["chain","token_address"]}},{"name":"get_holder_distribution","description":"Get top holders of an ERC-20 token. Primary data from Moralis; Alchemy is run in parallel as a cross-check. Returns top N holders by balance, aggregate holder count, and concentration metrics (top-10 % of supply). Burn / zero addresses are filtered so stats reflect REAL wallets. IMPORTANT — interpret output: if cross_check.agreement is false, explicitly communicate the discrepancy to the user (both counts, likely cause). if holder_count is null (data_unavailable_note present), do NOT fabricate numbers — tell the user holder data is unavailable and why.","input_schema":{"type":"object","properties":{"chain":{"type":"string","enum":["ethereum","base","arbitrum","bsc","polygon","optimism"],"description":"EVM chain the token is on."},"token_address":{"type":"string","description":"ERC20 contract address."},"top_n":{"type":"integer","description":"How many top holders to return (default 10, max 25).","minimum":1,"maximum":25}},"required":["chain","token_address"]}},{"name":"get_wallet_pnl","description":"Get the PnL (profit and loss) breakdown for any wallet address: realized gains, unrealized gains, net invested, total sent, total received, total fees. Works across all major EVM chains and Solana in a single call. Use this to assess whether a wallet is actually profitable before treating its trades as signal.","input_schema":{"type":"object","properties":{"address":{"type":"string","description":"Wallet address (EVM 0x... or Solana base58)."},"currency":{"type":"string","description":"Fiat currency to denominate values in (default usd).","enum":["usd","eur","gbp"]}},"required":["address"]}},{"name":"track_smart_money","description":"Get recent trades from curated 'smart money' wallets (known profitable/notable addresses) or a user-supplied address. Returns the last N trade transactions. Use this when the user asks 'what are the whales doing' or 'is [address] buying X'. Lists available smart money labels when called with no arguments.","input_schema":{"type":"object","properties":{"label":{"type":"string","description":"Curated wallet label to look up (e.g. 'Vitalik Buterin'). Case-insensitive substring match."},"address":{"type":"string","description":"Explicit wallet address to query. Use this OR label, not both."},"limit":{"type":"integer","description":"Max number of trades to return (default 10, max 25).","minimum":1,"maximum":25}}}},{"name":"get_historical_ohlc","description":"Get historical candle data (OHLC) for a cryptocurrency over a configurable period. Returns raw candles plus summary stats: period high/low, percent change, drawdown from high. Use this when the user asks about price trends, volatility, or 'how has X been doing'.","input_schema":{"type":"object","properties":{"coin_id":{"type":"string","description":"Coingecko coin ID (e.g. 'bitcoin', 'ethereum', 'solana'). NOT the ticker — if in doubt use the full name."},"days":{"type":"integer","description":"Lookback window in days. 1, 7, 14, 30, 90, 180, 365, or 'max'-ish.","enum":[1,7,14,30,90,180,365]},"vs_currency":{"type":"string","description":"Quote currency (default usd).","enum":["usd","eur","gbp"]}},"required":["coin_id","days"]}},{"name":"simulate_entry","description":"Simulate a hypothetical buy: 'if I had invested $X in token Y, D days ago, where would I be today?' Returns entry price, current price, units held, current USD value, absolute and percent PnL. Great for answering 'what if' questions and historical what-should-I-have-done analysis. Uses Coingecko daily prices — don't expect intra-day precision.","input_schema":{"type":"object","properties":{"coin_id":{"type":"string","description":"Coingecko coin ID (e.g. 'bitcoin', 'ethereum')."},"investment_usd":{"type":"number","description":"USD amount hypothetically invested.","minimum":1},"days_ago":{"type":"integer","description":"How many days back the hypothetical entry happened.","minimum":1,"maximum":1825}},"required":["coin_id","investment_usd","days_ago"]}},{"name":"resolve_ens","description":"Resolve ENS names to addresses or addresses to their primary ENS name. Bidirectional: pass either 'name' (e.g. 'vitalik.eth') OR 'address' (0x...). Use this whenever the user mentions an ENS-like name to convert it to an address before passing to other tools, or to enrich an address with a human-readable label.","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"ENS name to resolve forward (e.g. 'vitalik.eth')."},"address":{"type":"string","description":"Address to reverse-resolve to a primary ENS name."}}}},{"name":"query_0xbrain","description":"Query the 0xbrain knowledge base — a RAG system indexed on crypto protocol whitepapers and documentation. Use this for conceptual / educational questions about how protocols work: 'what is Uniswap V4 concentrated liquidity', 'how does EigenLayer restaking work', 'explain MEV-Boost'. NOT for live data — use other tools for prices, balances, and on-chain state. Optionally narrow with category_filter for more focused results. Returns answer + scored source excerpts.","input_schema":{"type":"object","properties":{"question":{"type":"string","description":"Natural language question about a crypto protocol or concept."},"top_k":{"type":"integer","description":"Number of source chunks to retrieve (default 5, max 10).","minimum":1,"maximum":10},"category_filter":{"type":"string","description":"Narrow the knowledge base by topic. Use when the question is clearly about one area.","enum":["btc","eth","solana","defi","oracle","staking"]}},"required":["question"]}}]}