MCP Server

alphapipeline

io.github.parkyucheol-del/alphapipeline
Crypto & Web3 Finance & Investing Security Public & reachable MCP 2026-07-28

What this MCP does

Provides paid crypto market, derivatives, arbitrage, DEX liquidity, prediction-market, token security, and unlock-risk analytics.

arb.spread_matrix
Use this tool before executing a cross-venue arbitrage trade to check whether a global reference price (Coinbase spot, CoinGecko fallback - not a specific exchange orderbook) and a DEX pool price diverge enough to be worth trading after an assumed flat gas cost. Returns gross/net spread percentages and an is_profitable boolean - note net_spread_pct does NOT subtract the DEX pool's own swap fee (see pool_fee_pct), CEX trading fees, or slippage, so a spread that clears the threshold before those costs may not clear it after. Do not use for DEX-only liquidity depth checks or contract security. Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'description': 'Ticker symbol, e.g. SUI, BTC, ETH.'}, 'network': {'type': 'string', 'description': 'GeckoTerminal network id, e.g. base, eth. Defaults to base.'}, 'pool_address': {'type': 'string', 'description': 'Specific DEX pool contract address (optional if token_address is given).'}, 'token_address': {'type': 'string', 'description': 'Token contract address - the most liquid pool is auto-selected (optional if pool_address is given).'}, 'trade_size_usd': {'type': 'number', 'description': 'Hypothetical trade size in USD. Defaults to 1000.'}, 'min_spread_threshold_pct': {'type': 'number', 'description': 'Net spread threshold (%) above which is_profitable is true. Defaults to 0.8.'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'symbol', 'network', 'status_message', 'is_profitable', 'trade_size_usd', 'assumed_gas_cost_usd', 'min_spread_threshold_pct', 'data_source'], 'properties': {'notice': {'type': ['string', 'null']}, 'symbol': {'type': 'string'}, 'network': {'type': 'string'}, 'direction': {'type': ['string', 'null']}, 'data_source': {'type': 'string'}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'pool_address': {'type': ['string', 'null']}, 'pool_fee_pct': {'type': ['number', 'null'], 'description': "DEX pool's fee tier (e.g. 0.05 for 0.05%), parsed from the pool name. Informational only - net_spread_pct does not subtract it."}, 'cex_price_usd': {'type': ['number', 'null']}, 'dex_price_usd': {'type': ['number', 'null']}, 'is_profitable': {'type': 'boolean'}, 'net_spread_pct': {'type': ['number', 'null']}, 'status_message': {'type': 'string'}, 'trade_size_usd': {'type': 'number'}, 'gross_spread_pct': {'type': ['number', 'null']}, 'assumed_gas_cost_usd': {'type': 'number'}, 'min_spread_threshold_pct': {'type': 'number'}}}
calendar.macro_dday
Use this tool when an agent plans trading schedules around major US macroeconomic volatility, specifically days remaining until FOMC rate decisions, CPI prints, or NFP jobs reports. Zero-dependency static 2026 macro calendar with 100% uptime and no upstream failure risk. Do not use for real-time market price data or economic forecast consensus figures. No input parameters. Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': [], 'properties': {}}
Output schema
{'type': 'object', 'required': ['generated_at', 'tags', 'upcoming_events', 'data_source'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}, 'd_day': {'type': ['integer', 'null']}, 'notice': {'type': ['string', 'null']}, 'event_name': {'type': ['string', 'null']}, 'event_type': {'type': ['string', 'null']}, 'data_source': {'type': 'string'}, 'description': {'type': ['string', 'null']}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'impact_level': {'type': ['string', 'null']}, 'event_datetime': {'anyOf': [{'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, {'type': 'null'}]}, 'time_remaining': {'anyOf': [{'type': 'object', 'required': ['days', 'hours', 'minutes'], 'properties': {'days': {'type': 'integer'}, 'hours': {'type': 'integer'}, 'minutes': {'type': 'integer'}}}, {'type': 'null'}]}, 'upcoming_events': {'type': 'array', 'items': {'type': 'object', 'required': ['event_name', 'event_type', 'event_datetime', 'impact_level'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}, 'event_name': {'type': 'string'}, 'event_type': {'type': 'string'}, 'impact_level': {'type': 'string'}, 'event_datetime': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}}}}}}
derivatives.funding_apr_matrix
Use this tool to evaluate a spot+perpetual carry trade: annualizes the current perpetual funding rate into an APR, flags which side (SHORT or LONG perp) currently collects funding, and computes how many days of that funding income it takes to recoup an assumed round-trip trading cost. Pure calculation on top of funding_rate data - no extra upstream call. Do not use for the raw current funding rate alone (use derivatives.funding_rate) or for spot price data. Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'description': 'Ticker symbol, e.g. BTC, ETH, or BTCUSDT.'}, 'assumed_round_trip_cost_pct': {'type': 'number', 'description': 'Combined entry+exit trading fee percentage across both the spot and perpetual legs. Defaults to 0.2.'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'symbol', 'assumed_round_trip_cost_pct', 'data_source'], 'properties': {'notice': {'type': ['string', 'null']}, 'symbol': {'type': 'string'}, 'data_source': {'type': 'string'}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'breakeven_days': {'type': ['number', 'null']}, 'periods_per_year': {'type': ['integer', 'null']}, 'annualized_rate_pct': {'type': ['number', 'null']}, 'funding_collector_side': {'type': ['string', 'null']}, 'funding_interval_hours': {'type': ['integer', 'null']}, 'funding_rate_percentage': {'type': ['number', 'null']}, 'daily_funding_income_pct': {'type': ['number', 'null']}, 'assumed_round_trip_cost_pct': {'type': 'number'}}}
derivatives.funding_rate
Use this tool when analyzing perpetual futures funding rates, long/short market sentiment crowding, or timing hedging strategies before settlement periods. Aggregates Bybit (primary) and Binance (fallback) perpetual funding rates, plus mark_price/index_price (both paths) and open_interest_usd (Bybit path only - null on the Binance fallback). Do not use for spot market volume or token security checks. Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'description': 'Ticker symbol, e.g. BTC, ETH, or BTCUSDT.'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'symbol', 'data_source'], 'properties': {'notice': {'type': ['string', 'null']}, 'symbol': {'type': 'string'}, 'mark_price': {'type': ['number', 'null'], 'description': 'Perpetual futures mark price at lookup time. Populated on both the Bybit and Binance paths.'}, 'data_source': {'type': 'string'}, 'index_price': {'type': ['number', 'null'], 'description': "Underlying spot index price feeding the perpetual's funding calculation. Populated on both the Bybit and Binance paths."}, 'funding_rate': {'type': ['number', 'null']}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'predicted_rate': {'type': ['number', 'null']}, 'next_funding_time': {'anyOf': [{'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, {'type': 'null'}]}, 'open_interest_usd': {'type': ['number', 'null'], 'description': "Total open interest in USD notional. Only available via the Bybit path - always null on the Binance fallback, since Binance's premiumIndex endpoint does not report open interest."}, 'funding_interval_hours': {'type': ['integer', 'null']}, 'funding_rate_percentage': {'type': ['number', 'null']}}}
derivatives.whale_position_audit
Use this tool to audit a Hyperliquid wallet address you already know: every open perpetual position with side, size, leverage, max_leverage, unrealized PnL, return_on_equity_pct, liquidation price, and distance-to-liquidation percentage (max_leverage and return_on_equity_pct are Hyperliquid's own reported fields, not derived by this tool). This does not discover or rank 'smart money' wallets - Hyperliquid's public API has no leaderboard or large-trader disclosure endpoint, so it only audits an address you supply. risk_flags (HIGH_LEVERAGE, NEAR_LIQUIDATION) come from fixed numeric thresholds only. Do not use for spot price data or any exchange other than Hyperliquid. Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'Hyperliquid/EVM wallet address to audit (0x...).'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'wallet_address', 'open_position_count', 'positions', 'risk_flags', 'data_source'], 'properties': {'notice': {'type': ['string', 'null']}, 'positions': {'type': 'array', 'items': {'type': 'object', 'required': ['coin', 'side', 'size', 'leverage_type'], 'properties': {'coin': {'type': 'string'}, 'side': {'type': 'string'}, 'size': {'type': 'number'}, 'leverage': {'type': ['number', 'null']}, 'mark_price': {'type': ['number', 'null']}, 'entry_price': {'type': ['number', 'null']}, 'max_leverage': {'type': ['number', 'null'], 'description': "Hyperliquid's own reported leverage ceiling for this asset/account setting - not the leverage actually in use."}, 'leverage_type': {'type': 'string'}, 'liquidation_price': {'type': ['number', 'null']}, 'position_value_usd': {'type': ['number', 'null']}, 'unrealized_pnl_usd': {'type': ['number', 'null']}, 'return_on_equity_pct': {'type': ['number', 'null'], 'description': "Hyperliquid's own reported ROE for this position, as a percentage - not derived by this tool."}, 'distance_to_liquidation_pct': {'type': ['number', 'null']}}}}, 'risk_flags': {'type': 'array', 'items': {'type': 'string'}}, 'data_source': {'type': 'string'}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'wallet_address': {'type': 'string'}, 'margin_usage_pct': {'type': ['number', 'null']}, 'withdrawable_usd': {'type': ['number', 'null']}, 'account_value_usd': {'type': ['number', 'null']}, 'open_position_count': {'type': 'integer'}, 'total_margin_used_usd': {'type': ['number', 'null']}, 'total_notional_position_usd': {'type': ['number', 'null']}}}
dex.liquidity_slippage
Use this tool to calculate expected DEX price slippage, pool liquidity depth, and optimal routing before executing an on-chain token swap. GeckoTerminal-backed pool analytics with constant-product slippage estimation for the requested trade_size_usd, plus a slippage_tiers array with the same estimate at fixed $1,000/$5,000/$10,000 sizes so an agent can gauge depth at a glance without extra calls. Do not use for centralized exchange (CEX) orderbooks or contract risk analysis. Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['trade_size_usd'], 'properties': {'network': {'type': 'string', 'description': 'GeckoTerminal network id, e.g. base, eth. Defaults to base.'}, 'pool_address': {'type': 'string', 'description': 'Specific DEX pool contract address (optional if token_address is given).'}, 'token_address': {'type': 'string', 'description': 'Token contract address - the most liquid pool is auto-selected (optional if pool_address is given).'}, 'trade_size_usd': {'type': 'number', 'description': 'Hypothetical trade size in USD to estimate slippage for.'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'network', 'trade_size_usd', 'price_impact_model', 'data_source'], 'properties': {'notice': {'type': ['string', 'null']}, 'network': {'type': 'string'}, 'pool_name': {'type': ['string', 'null']}, 'data_source': {'type': 'string'}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'pool_address': {'type': ['string', 'null']}, 'pool_fee_pct': {'type': ['number', 'null'], 'description': 'Swap fee tier of the selected pool, parsed from pool_name. Disclosed for reference only - not subtracted from the slippage estimate.'}, 'liquidity_usd': {'type': ['number', 'null']}, 'token_address': {'type': ['string', 'null']}, 'slippage_tiers': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['trade_size_usd'], 'properties': {'warning_level': {'type': ['string', 'null']}, 'trade_size_usd': {'type': 'number'}, 'estimated_price_impact_pct': {'type': ['number', 'null']}}}}, 'trade_size_usd': {'type': 'number'}, 'volume_24h_usd': {'type': ['number', 'null']}, 'price_impact_model': {'type': 'string'}, 'quote_token_symbol': {'type': ['string', 'null'], 'description': "Parsed from pool_name (e.g. 'USDC' from 'WETH / USDC 0.05%')."}, 'assumed_gas_cost_usd': {'type': ['number', 'null'], 'description': 'Flat per-swap gas estimate for this network, not a live gas quote.'}, 'estimated_slippage_pct': {'type': ['number', 'null']}, 'quote_token_is_stablecoin': {'type': ['boolean', 'null'], 'description': "If false or null, this pool isn't USD-quoted - an extra hop is needed to reach USD, not accounted for in the slippage estimate."}}}
market.kimchi_alert
Use this tool when evaluating Korean exchange price premiums, the 'kimchi premium', Upbit price gaps vs a global reference price, cross-border crypto arbitrage, or sudden Korea-specific price anomalies. Real-time Upbit vs Coinbase spot (CoinGecko fallback) - NOT a live Binance orderbook, despite the legacy binance_price_usdt field name kept for backward compatibility - with reverse-premium and surge alerts. Do not use for general USD spot prices or on-chain DEX swaps. Paid in USDC on Base (free while KIMCHI_ALERT_ENABLED=false).
Read only
Input schema
{'type': 'object', 'required': [], 'properties': {'symbol': {'type': 'string', 'description': 'Crypto ticker symbol to check, e.g. BTC, ETH, SOL. Defaults to BTC.'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'symbol', 'upbit_price_krw', 'binance_price_usdt', 'usdkrw_rate_estimate', 'kimchi_premium_pct', 'premium_change_1h_pct', 'alerts', 'thresholds'], 'properties': {'alerts': {'type': 'object', 'required': ['reverse_premium', 'premium_surge_1h'], 'properties': {'reverse_premium': {'type': 'boolean'}, 'premium_surge_1h': {'type': 'boolean'}}}, 'notice': {'type': 'string'}, 'symbol': {'type': 'string'}, 'thresholds': {'type': 'object', 'required': ['reverse_premium_pct', 'surge_1h_pct'], 'properties': {'surge_1h_pct': {'type': 'number'}, 'reverse_premium_pct': {'type': 'number'}}}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'upbit_price_krw': {'type': 'number'}, 'cex_price_source': {'type': 'string'}, 'binance_price_usdt': {'type': 'number', 'description': 'Legacy field name kept for backward compatibility - NOT a live Binance price, see notice/cex_price_source.'}, 'kimchi_premium_pct': {'type': 'number'}, 'usdkrw_rate_estimate': {'type': 'number'}, 'premium_change_1h_pct': {'type': 'number'}, 'cex_reference_price_usdt': {'type': 'number', 'description': 'Same value as binance_price_usdt under an honestly-named field.'}}}
prediction.exit_capacity_audit
Walk a single Polymarket outcome's live order book to determine how much of a given position size can actually be filled right now, at what average price, and with how much price impact versus the best quote - a live snapshot, not historical liquidity. Also returns book_snapshot_time (the book's own reported timestamp) and Polymarket's own tick_size/min_order_size for this market (null if the book response didn't include them). Accepts either a raw token_id or a market_slug (+ outcome) to resolve it automatically - exact slug only, no fuzzy keyword search. Do not use for multi-outcome basket arbitrage detection (use prediction.neg_risk_arbitrage instead). Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['position_size_shares'], 'properties': {'side': {'type': 'string', 'description': '"sell" (default) or "buy".'}, 'outcome': {'type': 'string', 'description': '"yes" (default) or "no" - which side to resolve when using market_slug.'}, 'token_id': {'type': 'string', 'description': "The outcome's CLOB token_id / asset_id, if already known."}, 'market_slug': {'type': 'string', 'description': 'Exact Polymarket market slug, used to resolve token_id automatically.'}, 'position_size_shares': {'type': 'number', 'description': 'Number of outcome shares to sell (or buy). Must be positive.'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'token_id', 'side', 'position_size_shares', 'executable', 'max_executable_shares', 'data_source'], 'properties': {'side': {'type': 'string'}, 'notice': {'type': ['string', 'null']}, 'token_id': {'type': 'string'}, 'tick_size': {'type': ['number', 'null'], 'description': "Polymarket's own reported minimum price increment for this market. Null if the book response didn't include it."}, 'best_quote': {'type': ['number', 'null']}, 'executable': {'type': 'boolean'}, 'data_source': {'type': 'string'}, 'market_slug': {'type': ['string', 'null']}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'avg_exit_price': {'type': ['number', 'null']}, 'min_order_size': {'type': ['number', 'null'], 'description': "Polymarket's own reported minimum order size for this market. Null if the book response didn't include it."}, 'price_impact_pct': {'type': ['number', 'null']}, 'book_snapshot_time': {'anyOf': [{'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, {'type': 'null'}], 'description': "The order book's own reported snapshot timestamp, so you can judge how fresh this read is."}, 'position_size_shares': {'type': 'number'}, 'max_executable_shares': {'type': 'number'}}}
prediction.hip4_snapshot
Real-time probability snapshot of Hyperliquid's HIP-4 outcome (prediction) markets - crypto price binaries, sports game winners, tournament winners, Fed rate decisions, and any other market type Hyperliquid adds, all in one call. No curated market list - every field under 'fields' on each row is parsed verbatim from Hyperliquid's own description string, so new HIP-4 market types appear automatically. standalone_markets covers two-sided markets (most crypto/sports games); grouped_questions covers mutually-exclusive multi-outcome groups (e.g. a league winner) with a fallback price for 'none of the above'. Optional template/underlying filters narrow the result. Do not use for Polymarket data (use prediction.neg_risk_arbitrage/exit_capacity_audit instead). Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max rows per list (standalone_markets / grouped_questions each). Defaults to 100, max 500.'}, 'template': {'type': 'string', 'description': "Optional substring filter on the market's template name (e.g. 'sportsContestWinner', 'priceBinary')."}, 'underlying': {'type': 'string', 'description': "Optional asset symbol filter for crypto markets (e.g. 'BTC', 'ETH', 'SOL', 'HYPE')."}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'standalone_count', 'grouped_question_count', 'standalone_markets', 'grouped_questions', 'data_source'], 'properties': {'notice': {'type': ['string', 'null']}, 'data_source': {'type': 'string'}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'template_filter': {'type': ['string', 'null']}, 'standalone_count': {'type': 'integer'}, 'grouped_questions': {'type': 'array', 'items': {'type': 'object', 'required': ['question_id', 'template', 'fields', 'outcomes'], 'properties': {'fields': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'fallback': {'anyOf': [{'type': 'object', 'required': ['outcome_id', 'label'], 'properties': {'label': {'type': 'string'}, 'price': {'type': ['number', 'null']}, 'outcome_id': {'type': 'integer'}}}, {'type': 'null'}], 'description': "The residual 'none of the named outcomes' price."}, 'outcomes': {'type': 'array', 'items': {'type': 'object', 'required': ['outcome_id', 'label'], 'properties': {'label': {'type': 'string'}, 'price': {'type': ['number', 'null']}, 'outcome_id': {'type': 'integer'}}}}, 'template': {'type': 'string'}, 'question_id': {'type': 'integer'}}}}, 'underlying_filter': {'type': ['string', 'null']}, 'standalone_markets': {'type': 'array', 'items': {'type': 'object', 'required': ['outcome_id', 'template', 'fields', 'sides'], 'properties': {'sides': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'price': {'type': ['number', 'null']}}}}, 'fields': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'template': {'type': 'string'}, 'outcome_id': {'type': 'integer'}}}}, 'grouped_question_count': {'type': 'integer'}}}
prediction.neg_risk_arbitrage
Detect basket arbitrage in a Polymarket neg-risk (mutually-exclusive, multi-outcome) event - a full YES basket across all outcomes always settles to exactly $1, so a basket price away from $1 (after costs) is a near risk-free edge. Also returns buy/sell_basket_capacity_shares, the actual liquidity-bottleneck size executable right now, so this isn't just a top-of-book mirage - note *_capacity_notional_usd still prices that size at top-of-book (optimistic), so use *_capacity_vwap_notional_usd for the realistic fill cost. Also returns oldest_book_snapshot_time, the staleness bottleneck across all legs. Polymarket only. Do not use for binary Yes/No markets (no basket to arbitrage) or for Kalshi (its Data ToS forbids this use). Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['event_slug'], 'properties': {'event_slug': {'type': 'string', 'description': "Polymarket event slug, from the event's URL on polymarket.com."}, 'max_slippage_pct': {'type': 'number', 'description': "How far past each leg's best price to walk the book when sizing capacity. Defaults to 1.0."}, 'min_net_edge_pct': {'type': 'number', 'description': 'Minimum net edge (%) required to flag arbitrage_viable: true. Defaults to 1.0.'}, 'assumed_round_trip_cost_pct': {'type': 'number', 'description': 'Gas + fees + slippage buffer, as a percentage of $1 basket notional. Defaults to 1.5.'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'event_slug', 'num_outcomes', 'assumed_round_trip_cost_pct', 'buy_basket_capacity_shares', 'sell_basket_capacity_shares', 'opportunity', 'arbitrage_viable', 'data_source'], 'properties': {'notice': {'type': ['string', 'null']}, 'event_slug': {'type': 'string'}, 'data_source': {'type': 'string'}, 'opportunity': {'type': 'string'}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'num_outcomes': {'type': 'integer'}, 'basket_ask_sum': {'type': ['number', 'null']}, 'basket_bid_sum': {'type': ['number', 'null']}, 'arbitrage_viable': {'type': 'boolean'}, 'buy_basket_net_edge_usd': {'type': ['number', 'null']}, 'sell_basket_net_edge_usd': {'type': ['number', 'null']}, 'buy_basket_gross_edge_usd': {'type': ['number', 'null']}, 'oldest_book_snapshot_time': {'anyOf': [{'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, {'type': 'null'}], 'description': "The oldest of each leg's own order-book snapshot timestamp - the staleness bottleneck across all legs, since the whole basket calculation is only as fresh as its stalest leg. Null if no leg reported a timestamp."}, 'buy_basket_capacity_shares': {'type': 'number'}, 'sell_basket_gross_edge_usd': {'type': ['number', 'null']}, 'assumed_round_trip_cost_pct': {'type': 'number'}, 'sell_basket_capacity_shares': {'type': 'number'}, 'buy_basket_capacity_notional_usd': {'type': ['number', 'null']}, 'sell_basket_capacity_notional_usd': {'type': ['number', 'null']}, 'buy_basket_capacity_vwap_notional_usd': {'type': ['number', 'null'], 'description': 'Volume-weighted price of filling buy_basket_capacity_shares by walking the order book depth, instead of pricing it at top-of-book like buy_basket_capacity_notional_usd does - more realistic actual fill cost.'}, 'sell_basket_capacity_vwap_notional_usd': {'type': ['number', 'null']}}}
security.contract_health_audit
Use this tool to check whether a token's liquidity pool is locked, burned, or freely held by a single wallet before trusting its liquidity - a rug-pull signal that security.token_risk does not cover. Reuses the same GoPlus data as token_risk (no extra upstream call) and rolls it up into a liquidity_health category (LOCKED/PARTIALLY_LOCKED/UNLOCKED/NO_LP_DATA). Does not include any qualitative 'suspicious transaction' judgment - only GoPlus's own lock/burn numbers. Do not use for honeypot or tax checks (use security.token_risk) or market price data. Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['chain_id', 'contract_address'], 'properties': {'chain_id': {'type': 'integer', 'description': 'EVM chain id, e.g. 8453 for Base.'}, 'contract_address': {'type': 'string', 'description': 'Token contract address (0x...).'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'chain_id', 'contract_address', 'liquidity_health', 'risk_flags', 'data_source'], 'properties': {'notice': {'type': ['string', 'null']}, 'chain_id': {'type': 'integer'}, 'risk_flags': {'type': 'array', 'items': {'type': 'string'}}, 'token_name': {'type': ['string', 'null']}, 'data_source': {'type': 'string'}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'token_symbol': {'type': ['string', 'null']}, 'lp_burned_pct': {'type': ['number', 'null']}, 'lp_locked_pct': {'type': ['number', 'null']}, 'lp_holder_count': {'type': ['integer', 'null']}, 'lp_total_supply': {'type': ['number', 'null']}, 'contract_address': {'type': 'string'}, 'liquidity_health': {'type': 'string'}, 'top_unlocked_holder_pct': {'type': ['number', 'null']}}}
security.token_diagnostic
Use this tool right before buying or swapping an unfamiliar token when you need a single-call combined security check: runs security.token_risk and security.contract_health_audit in parallel against the same GoPlus data and returns both, plus a deduped union of risk_flags and a plain risk_flags_count. Deliberately does not compute a composite score or letter grade - every field is copied unchanged from the two underlying tools. Cheaper than calling both separately. Do not use for token unlock/vesting risk (use unlocks.dump_risk) or if you only need one of the two checks (call that tool directly and pay less). Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['chain_id', 'contract_address'], 'properties': {'chain_id': {'type': 'integer', 'description': 'EVM chain id, e.g. 8453 for Base.'}, 'contract_address': {'type': 'string', 'description': 'Token contract address (0x...).'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'chain_id', 'contract_address', 'liquidity_health', 'risk_flags', 'risk_flags_count', 'checks_completed', 'checks_total', 'data_sources'], 'properties': {'notice': {'type': ['string', 'null']}, 'chain_id': {'type': 'integer'}, 'risk_flags': {'type': 'array', 'items': {'type': 'string'}}, 'token_name': {'type': ['string', 'null']}, 'buy_tax_pct': {'type': ['number', 'null']}, 'is_honeypot': {'type': ['boolean', 'null']}, 'is_mintable': {'type': ['boolean', 'null']}, 'checks_total': {'type': 'integer'}, 'data_sources': {'type': 'array', 'items': {'type': 'string'}}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'holder_count': {'type': ['integer', 'null']}, 'sell_tax_pct': {'type': ['number', 'null']}, 'token_symbol': {'type': ['string', 'null']}, 'lp_burned_pct': {'type': ['number', 'null']}, 'lp_locked_pct': {'type': ['number', 'null']}, 'is_open_source': {'type': ['boolean', 'null']}, 'owner_renounced': {'type': ['boolean', 'null']}, 'checks_completed': {'type': 'integer'}, 'contract_address': {'type': 'string'}, 'liquidity_health': {'type': 'string'}, 'risk_flags_count': {'type': 'integer'}, 'top_unlocked_holder_pct': {'type': ['number', 'null']}}}
security.token_risk
Use this tool before executing any on-chain swap to verify if an ERC-20 contract is a honeypot, rug-pull risk, or has malicious buy/sell taxes and mintability backdoors. GoPlus/Honeypot.is-backed security audit for a given contract address - beyond is_honeypot, also surfaces individual GoPlus risk signals (cannot_buy, cannot_sell_all, hidden_owner, transfer_pausable, selfdestruct, is_blacklisted, slippage_modifiable, owner_percent) into risk_flags, plus is_proxy/trading_cooldown as informational-only fields (not flagged, since both are common in legitimate contracts). All of these are null when the Honeypot.is fallback path is used. Do not use for market price discovery or liquidity depth. Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['chain_id', 'contract_address'], 'properties': {'chain_id': {'type': 'integer', 'description': 'EVM chain id, e.g. 8453 for Base.'}, 'contract_address': {'type': 'string', 'description': 'Token contract address (0x...).'}}}
Output schema
{'type': 'object', 'required': ['generated_at', 'chain_id', 'contract_address', 'risk_level', 'risk_flags', 'data_source'], 'properties': {'notice': {'type': ['string', 'null']}, 'chain_id': {'type': 'integer'}, 'is_proxy': {'type': ['boolean', 'null'], 'description': 'GoPlus-only, null on Honeypot.is fallback. Informational only - does not feed risk_flags.'}, 'is_in_dex': {'type': ['boolean', 'null']}, 'cannot_buy': {'type': ['boolean', 'null'], 'description': 'GoPlus-only, null on Honeypot.is fallback. Feeds risk_flags.'}, 'risk_flags': {'type': 'array', 'items': {'type': 'string'}}, 'risk_level': {'type': 'string'}, 'token_name': {'type': ['string', 'null']}, 'buy_tax_pct': {'type': ['number', 'null']}, 'data_source': {'type': 'string'}, 'is_honeypot': {'type': ['boolean', 'null']}, 'is_mintable': {'type': ['boolean', 'null']}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'hidden_owner': {'type': ['boolean', 'null'], 'description': 'GoPlus-only, null on Honeypot.is fallback. Feeds risk_flags.'}, 'holder_count': {'type': ['integer', 'null']}, 'selfdestruct': {'type': ['boolean', 'null'], 'description': 'GoPlus-only, null on Honeypot.is fallback. Feeds risk_flags.'}, 'sell_tax_pct': {'type': ['number', 'null']}, 'token_symbol': {'type': ['string', 'null']}, 'owner_address': {'type': ['string', 'null']}, 'owner_percent': {'type': ['number', 'null'], 'description': "Owner's % of total supply, GoPlus-only. Feeds 'high_owner_concentration' risk_flag at >=50%."}, 'is_blacklisted': {'type': ['boolean', 'null'], 'description': 'GoPlus-only, null on Honeypot.is fallback. Feeds risk_flags.'}, 'is_open_source': {'type': ['boolean', 'null']}, 'cannot_sell_all': {'type': ['boolean', 'null'], 'description': 'GoPlus-only, null on Honeypot.is fallback. Feeds risk_flags.'}, 'owner_renounced': {'type': ['boolean', 'null']}, 'contract_address': {'type': 'string'}, 'trading_cooldown': {'type': ['boolean', 'null'], 'description': 'GoPlus-only, null on Honeypot.is fallback. Informational only - does not feed risk_flags.'}, 'transfer_pausable': {'type': ['boolean', 'null'], 'description': 'GoPlus-only, null on Honeypot.is fallback. Feeds risk_flags.'}, 'slippage_modifiable': {'type': ['boolean', 'null'], 'description': 'GoPlus-only, null on Honeypot.is fallback. Feeds risk_flags.'}}}
tools.ai_markdown
Use this tool when an agent needs to parse clean webpage article content without wasting context tokens on ads, scripts, navigation, and HTML boilerplate, or when summarizing a specific URL. Converts any URL into clean Markdown optimized for LLM context windows. Do not use for raw API endpoints or binary files (PDF/images). Paid in USDC on Base.
Read only
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Full http(s) URL of the webpage to convert to Markdown.'}}}
Output schema
{'type': 'object', 'required': ['url', 'title', 'markdown', 'char_count'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'markdown': {'type': 'string'}, 'char_count': {'type': 'integer'}}}
unlocks.dump_risk
Use this tool to evaluate token unlock/vesting supply overhang risk before taking mid-to-long term positions - returns tokens whose currently-locked or unlock-eligible supply exceeds a materiality threshold, each with a computed risk_level (LOW/MEDIUM/HIGH). Default data source (on-chain Sablier vesting, the current configuration - no DropsTab key set) does NOT classify VC/team vs. other holders (is_insider_vc_team is always null) and does NOT provide exact unlock timing (days_until_unlock is always null, timing_precision='pending_schema_verification') - it only reports the currently-locked supply ratio. It does report vesting_deposit_amount/vesting_withdrawn_amount (Sablier's own depositAmount/withdrawnAmount, aggregated across streams) and vesting_progress_pct (withdrawn/deposit * 100), showing how far along the vesting schedule already is. Treat a null value as 'unknown', never as 'no risk'. Always check the response's coverage_notice field. Do not use for intra-day slippage or real-time transaction simulation. Paid in USDC on Base (free while DUMP_RISK_ENABLED=false).
Read only
Input schema
{'type': 'object', 'required': [], 'properties': {}}
Output schema
{'type': 'object', 'required': ['generated_at', 'supply_pct_threshold', 'protocols_scanned', 'count', 'unlocks'], 'properties': {'count': {'type': 'integer'}, 'notice': {'type': ['string', 'null']}, 'unlocks': {'type': 'array', 'items': {'type': 'object', 'required': ['token', 'unlock_supply_pct', 'category', 'risk_level'], 'properties': {'token': {'type': 'string'}, 'category': {'type': 'string'}, 'risk_level': {'type': 'string'}, 'data_source': {'type': ['string', 'null']}, 'unlock_amount': {'type': ['number', 'null']}, 'unlock_date_utc': {'type': ['string', 'null']}, 'onchain_contract': {'type': ['string', 'null']}, 'timing_precision': {'type': ['string', 'null']}, 'days_until_unlock': {'type': ['number', 'null']}, 'unlock_supply_pct': {'type': 'number'}, 'volume_impact_pct': {'type': ['number', 'null']}, 'is_insider_vc_team': {'type': ['boolean', 'null']}, 'vesting_progress_pct': {'type': ['number', 'null'], 'description': "On-chain-only field: vesting_withdrawn_amount / vesting_deposit_amount * 100 - how far along the vesting schedule already is. Null on the DropsTab path and when deposit data wasn't available."}, 'vesting_deposit_amount': {'type': ['number', 'null'], 'description': "On-chain-only field (Sablier's depositAmount, aggregated across streams). Total amount originally scheduled to vest. Null on the DropsTab path and when unavailable."}, 'vesting_withdrawn_amount': {'type': ['number', 'null'], 'description': "On-chain-only field (Sablier's withdrawnAmount, aggregated across streams). Amount already claimed/withdrawn so far. Null on the DropsTab path and when unavailable."}}}}, 'data_source': {'type': ['string', 'null']}, 'window_days': {'type': ['integer', 'null']}, 'generated_at': {'type': 'object', 'required': ['utc', 'kst'], 'properties': {'kst': {'type': 'string'}, 'utc': {'type': 'string'}}}, 'coverage_notice': {'type': ['string', 'null']}, 'protocols_scanned': {'type': 'integer'}, 'supply_pct_threshold': {'type': 'number'}}}
Added
prediction.hip4_snapshot
Sept. 29, 2026, 2:56 a.m.
Changed
market.kimchi_alert
Sept. 21, 2026, 2:53 a.m.
Changed
unlocks.dump_risk
Sept. 19, 2026, 2:44 a.m.
Changed
prediction.exit_capacity_audit
Sept. 19, 2026, 2:44 a.m.
Changed
prediction.neg_risk_arbitrage
Sept. 19, 2026, 2:44 a.m.
Changed
derivatives.whale_position_audit
Sept. 19, 2026, 2:44 a.m.
Changed
arb.spread_matrix
Sept. 19, 2026, 2:44 a.m.
Changed
dex.liquidity_slippage
Sept. 19, 2026, 2:44 a.m.
Changed
derivatives.funding_rate
Sept. 19, 2026, 2:44 a.m.
Changed
security.token_diagnostic
Sept. 19, 2026, 2:44 a.m.
Changed
security.token_risk
Sept. 19, 2026, 2:44 a.m.
Changed
market.kimchi_alert
Sept. 19, 2026, 2:44 a.m.
Added
unlocks.dump_risk
Sept. 17, 2026, 12:45 p.m.
Added
prediction.exit_capacity_audit
Sept. 17, 2026, 12:45 p.m.
Added
prediction.neg_risk_arbitrage
Sept. 17, 2026, 12:45 p.m.
Added
calendar.macro_dday
Sept. 17, 2026, 12:45 p.m.
Added
derivatives.whale_position_audit
Sept. 17, 2026, 12:45 p.m.
Added
arb.spread_matrix
Sept. 17, 2026, 12:45 p.m.
Added
dex.liquidity_slippage
Sept. 17, 2026, 12:45 p.m.
Added
derivatives.funding_apr_matrix
Sept. 17, 2026, 12:45 p.m.
Added
derivatives.funding_rate
Sept. 17, 2026, 12:45 p.m.
Added
security.token_diagnostic
Sept. 17, 2026, 12:45 p.m.
Added
security.contract_health_audit
Sept. 17, 2026, 12:45 p.m.
Added
security.token_risk
Sept. 17, 2026, 12:45 p.m.
Added
tools.ai_markdown
Sept. 17, 2026, 12:45 p.m.
Added
market.kimchi_alert
Sept. 17, 2026, 12:45 p.m.