{"serverId":"mcp-registry/xyz.scanhood/mcp","tools":[{"name":"get_bots_claim_prefs","fixed":{"name":"get_bots_claim_prefs","description":"Per-token preferences for automatic trading-fee claiming.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get fee auto-claim preferences"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":57,"tokensAfter":57},{"name":"get_bots_stats","fixed":{"name":"get_bots_stats","description":"Stats from ScanHood's own arbitrage and fee-claim bots.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get ScanHood bot activity stats"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":55,"tokensAfter":55},{"name":"get_bridge_quote","fixed":{"name":"get_bridge_quote","description":"Read-only quote (no execution) for bridging native ETH/BNB between Robinhood Chain and Ethereum, Base, Arbitrum, or BNB Chain, via relay.link — the same route ScanHood's own Bridge tab uses. No ScanHood fee. Returns amountOut, an ETA in seconds, relay's own fee in USD, and the raw unsigned deposit tx (to/value/data) for the caller's own wallet to sign and send on the fromChain — ScanHood never holds funds or keys.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["fromChain","toChain","amount"],"properties":{"user":{"type":"string","description":"wallet address that will send the bridge — improves quote accuracy, optional"},"amount":{"type":"string","description":"native-token amount to bridge (ETH, or BNB if fromChain is 56), as a decimal string"},"toChain":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"destination chain id — same supported set as fromChain, must differ from it"},"fromChain":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"source chain id — one of 4663 (Robinhood), 1 (Ethereum), 8453 (Base), 42161 (Arbitrum), 56 (BNB Chain)"}}},"annotations":{"readOnlyHint":true},"title":"Get a cross-chain bridge quote"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":342,"tokensAfter":342},{"name":"get_ohlcv","fixed":{"name":"get_ohlcv","description":"On-chain OHLCV candles for a pool, for charting/backtesting.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["pool"],"properties":{"pool":{"type":"string","description":"pool/pair address, 0x + 40 hex chars"},"timeframe":{"enum":["5m","15m","1h","4h","1d"],"type":"string","default":"1h"}}},"annotations":{"readOnlyHint":true},"title":"Get OHLCV candles"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"get_paid_tier_info","fixed":{"name":"get_paid_tier_info","description":"Treasury address and minimum payment to upgrade an existing partner key from the free tier (40r/s) to the paid tier (200r/s) via a Robinhood-Chain ETH payment.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get paid API tier info"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":85,"tokensAfter":85},{"name":"get_partner_status","fixed":{"name":"get_partner_status","description":"Look up which site a partner key is registered to, when it was issued, and whether it has been upgraded to the paid tier.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["key"],"properties":{"key":{"type":"string","description":"partner API key, starts with \"sh_\""}}},"annotations":{"readOnlyHint":true},"title":"Check a partner API key"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"get_scan_log","fixed":{"name":"get_scan_log","description":"Recent completed token safety scans across all of ScanHood (real activity, not a sample) — powers the \"recent rugs caught\" / \"safe launches today\" homepage modules. Optionally filter by verdict.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":100,"minimum":1,"description":"max entries, default 20"},"verdict":{"enum":["PASS","CAUTION","DANGER"],"type":"string","description":"filter to only this verdict"}}},"annotations":{"readOnlyHint":true},"title":"Get recent scan history"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":150,"tokensAfter":150},{"name":"get_scan_pricing","fixed":{"name":"get_scan_pricing","description":"Free quota, price per scan, the Robinhood Chain treasury address, live wei amounts, and the step-by-step pay-and-retry recipe for when scan_token returns error free_quota_exceeded.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Scan API pricing and how to pay"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":90,"tokensAfter":90},{"name":"get_scan_rollup","fixed":{"name":"get_scan_rollup","description":"Daily counts of PASS/CAUTION/DANGER verdicts plus a sample of real DANGER catches per day, for up to 60 days back. Powers the weekly \"State of the Chain\" report.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"days":{"type":"integer","maximum":60,"minimum":1,"description":"how many days back, default 60"}}},"annotations":{"readOnlyHint":true},"title":"Get daily scan-verdict rollups"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":112,"tokensAfter":112},{"name":"get_stock_fundamentals","fixed":{"name":"get_stock_fundamentals","description":"Fundamentals for every US stock Robinhood has tokenized on Robinhood Chain (194 total, refreshed every 15min from public market data): price, market cap, trailing+forward P/E, EPS, price-to-book, dividend yield, 52-week high/low position, and on-chain \"basis\" — how far the on-chain pool price sits from the real listed price (spot a genuine discount or a broken pool before trading; a withheld basis means the pool price is implausible, not merely missing). Pass a symbol for one stock, or omit it f","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"symbol":{"type":"string","description":"stock ticker, e.g. AAPL — omit for the full list of all 194"}}},"annotations":{"readOnlyHint":true},"title":"Get tokenized-stock fundamentals"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":210,"tokensAfter":210},{"name":"get_stockback_deck","fixed":{"name":"get_stockback_deck","description":"StockBack pays a share of real ScanHood trading-fee revenue as real tokenized stock, not points. Lists which real tokens are currently earnable and whether a reward auto-routes into a real covered-call yield vault.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List StockBack's earnable stock assets"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"get_stockback_vault","fixed":{"name":"get_stockback_vault","description":"Real Pending/Funded/Claimed StockBack state for one wallet. Pending is a promised USD value not yet backed by a purchase; Funded means a real on-chain stock purchase already confirmed and is waiting to be claimed; Claimed means it was already sent to the wallet. Works for any address, including ones that have never earned anything.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["wallet"],"properties":{"wallet":{"type":"string","description":"wallet address, 0x + 40 hex chars"}}},"annotations":{"readOnlyHint":true},"title":"Get a wallet's real StockBack balances"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":161,"tokensAfter":161},{"name":"get_streak","fixed":{"name":"get_streak","description":"A wallet's consecutive-day ScanHood usage streak.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["wallet"],"properties":{"wallet":{"type":"string","description":"wallet address, 0x + 40 hex chars"}}},"annotations":{"readOnlyHint":true},"title":"Get a wallet's scan streak"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":80,"tokensAfter":80},{"name":"get_swap_quote","fixed":{"name":"get_swap_quote","description":"Read-only swap quote (no execution) for a token against the ScanHood swap contract — expected output for a given ETH-in (buy) or token-in (sell).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["token","side","amount"],"properties":{"side":{"enum":["buy","sell"],"type":"string"},"token":{"type":"string","description":"token address"},"amount":{"type":"string","description":"ETH amount (buy) or token amount (sell), as a decimal string"}}},"annotations":{"readOnlyHint":true},"title":"Get a swap quote"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":148,"tokensAfter":148},{"name":"get_watchlist","fixed":{"name":"get_watchlist","description":"Returns the token addresses a wallet has saved to its ScanHood watchlist.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address"],"properties":{"address":{"type":"string","description":"wallet address, 0x + 40 hex chars"}}},"annotations":{"readOnlyHint":true},"title":"Get a wallet's saved watchlist"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":88,"tokensAfter":88},{"name":"search_token","fixed":{"name":"search_token","description":"Find any Robinhood-Chain token by symbol, name, or address across the whole chain (not just the top pairs).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"query":{"type":"string","description":"symbol, name, or 0x address"}}},"annotations":{"readOnlyHint":true},"title":"Search for a token"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":94,"tokensAfter":94},{"name":"set_bots_claim_prefs","fixed":{"name":"set_bots_claim_prefs","description":"Enable or disable automatic fee claiming for a token. Requires a signature proving ownership of 'address': sign the exact string in 'message' with that wallet's key and pass it as 'signature'. Not usable without real wallet-signing capability.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address","token","enabled","message","signature"],"properties":{"token":{"type":"string","description":"token address, 0x + 40 hex chars"},"address":{"type":"string","description":"wallet address, 0x + 40 hex chars"},"enabled":{"type":"boolean"},"message":{"type":"string","description":"the exact message that was signed"},"signature":{"type":"string","description":"signature of `message` from `address`"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set fee auto-claim preference for a token"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":222,"tokensAfter":222}],"toolsChanged":17,"tokensSaved":0,"todo":[{"tool":"build_launch_tx","params":["description"]},{"tool":"get_ohlcv","params":["timeframe"]},{"tool":"get_swap_quote","params":["side"]},{"tool":"set_bots_claim_prefs","params":["enabled"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}