{"name":"io.github.subsquid-labs/portal-mcp-server","slug":"subsquid-labs-portal-mcp-server","title":"SQD","description":"Query 130+ SQD Portal datasets across blockchains, including native Tron transactions and events.","url":"https://mcp.market/server/subsquid-labs-portal-mcp-server","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":26,"stars":1,"forks":0,"downloads_week":null,"last_push_at":"2026-09-08T10:20:29.000Z","license":"MIT"},"uptime":{"percent":100,"checks":5,"ok":5,"last_checked_at":"2026-09-20T18:26:16.696Z","last_ok_at":"2026-09-20T18:26:16.696Z","latency_ms":131},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/subsquid-labs/portal-mcp-server","website":"https://docs.sqd.dev/en/ai/mcp-server","version":"0.8.5","remotes":[{"type":"streamable-http","url":"https://portal.sqd.dev/mcp"}],"packages":[],"tools":[{"name":"portal_bitcoin_get_analytics","description":"Get the big picture for Bitcoin block, fee, and address activity over a recent or explicit window.\n\nCOMMON USER ASKS:\n- Bitcoin network snapshot\n\nFIRST CHOICE FOR:\n- the big picture for Bitcoin right now\n\nWHEN TO USE:\n- You want the big picture for Bitcoin right now.\n- You want a network-level Bitcoin snapshot.\n- You care about block cadence, fees, SegWit/Taproot adoption, or activity metrics.\n\nDON'T USE:\n- You need raw transactions rather than network analytics.\n\nEXAMPLES:\n- Bitcoin network snapshot: {\"network\":\"bitcoin-mainnet\",\"timeframe\":\"1h\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"default":"bitcoin-mainnet","description":"Network name (default: bitcoin-mainnet)","type":"string"},"timeframe":{"description":"Time range: '1h' (~6 blocks), '6h' (~36 blocks), '24h' (~144 blocks). Default: '1h'","type":"string"},"mode":{"default":"deep","description":"Execution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.","type":"string","enum":["fast","deep"]},"from_block":{"description":"Starting block number (use this OR timeframe)","type":"number"},"to_block":{"description":"Ending block number","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"6h ago\".","anyOf":[{"type":"string"},{"type":"number"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"string"},{"type":"number"}]},"include_address_activity":{"default":true,"description":"Include unique address count and output value (requires extra queries, slower)","type":"boolean"},"response_format":{"default":"full","description":"Response format: 'summary' (high-level metrics only), 'compact' (core sections, lighter payload), 'full' (complete analytics).","type":"string","enum":["full","compact","summary"]}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_bitcoin_query_transactions","description":"Query raw Bitcoin transactions and optionally attach inputs and outputs inline.\n\nCOMMON USER ASKS:\n- Recent Bitcoin transactions\n- Attach inputs and outputs\n\nWHEN TO USE:\n- You need raw Bitcoin transaction records.\n- You want the UTXO envelope without switching to separate input/output tools.\n\nDON'T USE:\n- You only need a quick wallet or network summary.\n\nEXAMPLES:\n- Recent Bitcoin transactions: {\"network\":\"bitcoin-mainnet\",\"timeframe\":\"1h\",\"limit\":20}\n- Attach inputs and outputs: {\"network\":\"bitcoin-mainnet\",\"timeframe\":\"1h\",\"include_inputs\":true,\"include_outputs\":true,\"limit\":10}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name (default: bitcoin-mainnet). Optional when continuing with cursor.","type":"string"},"from_block":{"description":"Starting block number","type":"number"},"to_block":{"description":"Ending block number","type":"number"},"timeframe":{"description":"Time range (e.g., '1h', '24h'). Alternative to from_block/to_block.","type":"string"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"include_inputs":{"default":false,"description":"Attach transaction inputs inline","type":"boolean"},"include_outputs":{"default":false,"description":"Attach transaction outputs inline","type":"boolean"},"response_format":{"description":"Response format: defaults to 'compact' for chat-friendly output. Compact mode keeps inline inputs and outputs in a smaller shape when requested.","type":"string","enum":["full","compact","summary"]},"limit":{"default":20,"description":"Max transactions to return (default: 20, max: 25). With include_inputs or include_outputs and response_format \"full\", a page near the maximum can exceed the 50,000-byte response budget; the response_too_large error then names the limit to retry with.","type":"integer","minimum":1,"maximum":25},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_debug_hyperliquid_query_replica_commands","description":"ADVANCED: Query Hyperliquid replica-command actions such as orders, cancels, and leverage updates.\n\nCOMMON USER ASKS:\n- Recent order action\n\nWHEN TO USE:\n- You are debugging Hyperliquid replica-command records.\n- You need raw order-action events instead of fills or analytics.\n\nDON'T USE:\n- You only need public trading activity; fills and analytics are usually the better fit.\n\nEXAMPLES:\n- Recent order action: {\"network\":\"hyperliquid-replica-cmds\",\"timeframe\":\"5m\",\"limit\":1}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"default":"hyperliquid-replica-cmds","description":"Network name (default: 'hyperliquid-replica-cmds'). Optional when continuing with cursor.","type":"string"},"timeframe":{"description":"Time range (e.g., '1h', '24h'). Alternative to from_block/to_block.","type":"string"},"from_block":{"description":"Starting block number (use this OR timeframe)","type":"number"},"to_block":{"description":"Ending block number","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"action_type":{"description":"Action types to filter","type":"array","items":{"type":"string","enum":["order","cancel","cancelByCloid","batchModify","transfer","withdraw","updateLeverage"]}},"user":{"description":"User wallet addresses (0x-prefixed, lowercase)","type":"array","items":{"type":"string"}},"vault_address":{"description":"Vault addresses (0x-prefixed, lowercase)","type":"array","items":{"type":"string"}},"status":{"description":"Filter by action status","type":"string","enum":["ok","err"]},"limit":{"default":1,"description":"Max actions to return (1). Replica command payloads can contain large batches, so this exact one-record cursor page is the verified safe response budget.","type":"integer","minimum":1,"maximum":1},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_debug_query_blocks","description":"ADVANCED: Query raw block records directly for EVM, Solana, or Bitcoin.\n\nCOMMON USER ASKS:\n- Recent Base blocks\n\nWHEN TO USE:\n- You are debugging Portal coverage or block-level fields.\n- You need raw block records instead of transactions, logs, or summaries.\n\nDON'T USE:\n- You are answering a normal end-user question; prefer recent activity, time series, or raw transaction tools first.\n\nEXAMPLES:\n- Recent Base blocks: {\"network\":\"base-mainnet\",\"timeframe\":\"1h\",\"limit\":5}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name or alias. Optional when continuing with cursor.","type":"string"},"timeframe":{"description":"Time range (e.g., '1h', '24h'). Alternative to from_block/to_block.","type":"string"},"from_block":{"description":"Starting block number (use this OR timeframe)","type":"number"},"to_block":{"description":"Ending block number","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"limit":{"default":20,"description":"Max blocks to return (default: 20). Note: Lower default for MCP to reduce context usage.","type":"number"},"include_l2_fields":{"default":false,"description":"Include L2-specific fields (auto-detected for L2 chains)","type":"boolean"},"field_preset":{"default":"standard","description":"Field preset for EVM datasets: 'minimal' (number+timestamp+gas), 'standard' (+hash+miner+size), 'full' (all block fields). Ignored for Solana/Bitcoin.","type":"string","enum":["minimal","standard","full"]},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_debug_resolve_time_to_block","description":"ADVANCED: Resolve a timestamp to the nearest indexed block or slot.\n\nCOMMON USER ASKS:\n- Resolve one hour ago on Base\n- Resolve an older time on Polkadot\n\nWHEN TO USE:\n- You are debugging timestamp windows or building a manual block-range query.\n- You want to inspect exact versus estimated timestamp-to-block resolution.\n\nDON'T USE:\n- You just want to query by time; most public tools already accept natural timestamps directly.\n\nEXAMPLES:\n- Resolve one hour ago on Base: {\"network\":\"base-mainnet\",\"timestamp\":\"1h ago\"}\n- Resolve an older time on Polkadot: {\"network\":\"polkadot\",\"timestamp\":\"2026-04-08T12:00:00Z\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"type":"string","description":"Network name or alias"},"timestamp":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\""}},"required":["network","timestamp"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_evm_get_analytics","description":"Get the big picture for network-wide EVM activity with ranked contracts and compact overview metrics.\n\nCOMMON USER ASKS:\n- Top contracts on Base\n\nFIRST CHOICE FOR:\n- the big picture for activity on an EVM network like Base or Optimism\n\nWHEN TO USE:\n- You want the big picture for activity on an EVM network.\n- You want the most active contracts on an EVM network.\n- You want an analytics-style network overview instead of a raw record list.\n\nDON'T USE:\n- You need chart buckets over time rather than ranked entities.\n\nEXAMPLES:\n- Top contracts on Base: {\"network\":\"base-mainnet\",\"timeframe\":\"1h\",\"limit\":10}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name (supports short names: 'ethereum', 'polygon', 'base', etc.). Optional when continuing with cursor.","type":"string"},"num_blocks":{"default":50,"description":"Number of recent blocks to analyze when timeframe is omitted (default: 50, max: 10000)","type":"number","maximum":10000},"timeframe":{"description":"Optional natural time window like '1h' or '24h'","type":"string"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"limit":{"default":10,"description":"Number of top contracts to return (default: 10, max: 100)","type":"number","maximum":100},"include_details":{"default":false,"description":"Include sample transaction hashes for each contract","type":"boolean"},"mode":{"default":"deep","description":"Execution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.","type":"string","enum":["fast","deep"]},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_evm_get_contract_activity","description":"Summarize what one specific contract has been doing lately, including recent interactions, unique callers, and optional event activity.\n\nCOMMON USER ASKS:\n- Contract activity snapshot\n\nFIRST CHOICE FOR:\n- what one specific contract has been doing lately on an EVM network\n\nWHEN TO USE:\n- You want to ask \"what has this contract been doing?\" and get a contract-level answer.\n- You want a contract-centric activity summary instead of raw records.\n- You need top callers and interaction volume for one contract.\n\nDON'T USE:\n- You need the underlying raw logs or transactions.\n- You want general recent network activity without naming one contract.\n\nEXAMPLES:\n- Contract activity snapshot: {\"network\":\"base-mainnet\",\"contract_address\":\"0xabc...\",\"timeframe\":\"24h\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"type":"string","description":"Network name or alias"},"contract_address":{"type":"string","description":"Contract address to analyze"},"timeframe":{"default":"1000","description":"Analysis period as timeframe or block count. Examples: '1h', '24h', '7d', '3d', '1000'.","type":"string"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"string"},{"type":"number"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"string"},{"type":"number"}]},"include_events":{"default":true,"description":"Include event log summary","type":"boolean"},"mode":{"default":"deep","description":"Execution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.","type":"string","enum":["fast","deep"]}},"required":["network","contract_address"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_evm_get_contract_deployment","description":"Locate the create trace and parent transaction that deployed a specific EVM contract address within a bounded window.\n\nCOMMON USER ASKS:\n- Find BAYC deployment\n- Find recent deployment\n- Find deployment from known range\n\nFIRST CHOICE FOR:\n- who deployed this EVM contract\n- when was this contract deployed\n- what deployment transaction created this contract\n\nWHEN TO USE:\n- You need the deployer, deployment block, deployment timestamp, or deployment transaction for an EVM contract.\n- You can provide a starting block/time window, a contract address, or a supported well-known contract alias such as BAYC/Bored Apes.\n- You want a deployment lookup instead of general contract activity.\n\nDON'T USE:\n- You need all activity for a contract after deployment.\n- The contract is old and no block/time hint is available; provide from_block or from_timestamp first.\n\nEXAMPLES:\n- Find BAYC deployment: {\"network\":\"ethereum-mainnet\",\"contract\":\"bored apes\",\"from_block\":12000000,\"to_block\":13000000,\"scan_order\":\"earliest\"}\n- Find recent deployment: {\"network\":\"base-mainnet\",\"contract_address\":\"0xabc...\",\"search_depth_blocks\":100000}\n- Find deployment from known range: {\"network\":\"ethereum-mainnet\",\"contract_address\":\"0xabc...\",\"from_block\":17000000,\"to_block\":17100000,\"scan_order\":\"earliest\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"type":"string","description":"EVM network name or alias, e.g. base, ethereum, arbitrum."},"contract_address":{"description":"Contract address whose deployment transaction should be located.","type":"string"},"contract":{"description":"Contract address or a supported well-known alias/name, e.g. \"bayc\" or \"bored apes\" on Ethereum.","type":"string"},"timeframe":{"description":"Optional recent time window to search, e.g. \"24h\" or \"7d\".","type":"string"},"from_block":{"description":"Optional starting block. Provide this for older contracts when the deployment is not recent.","type":"number"},"to_block":{"description":"Optional ending block. Defaults to the indexed head.","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"7d ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"search_depth_blocks":{"default":100000,"description":"When no explicit range is given, search this many recent blocks backward from the indexed head.","type":"number","maximum":250000},"max_scan_blocks":{"description":"Safety cap for historical deployment scans. Default: scan the requested window up to 1,000,000 blocks.","type":"number","maximum":1000000},"scan_order":{"default":"latest","description":"Scan latest first for recent deployments, or earliest first when you provide a historical from_block.","type":"string","enum":["latest","earliest"]}},"required":["network"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_evm_get_ohlc","description":"Build chart-ready EVM OHLC candles plus a recent trade tape from supported DEX event sources, including Uniswap v2-style swaps, Uniswap v3/v4, and Aerodrome Slipstream.\n\nCOMMON USER ASKS:\n- Base Uniswap v2-style swap candles\n- Base Uniswap candles\n- Base Uniswap v4 candles\n\nWHEN TO USE:\n- You need OHLC candles for supported EVM event-derived price sources.\n- You want a candle chart and recent trades instead of scalar time-series buckets.\n- You want a Dexscreener-style pool chart with hover-ready candle metadata and a trade tape.\n\nDON'T USE:\n- You only need counts or scalar metrics over time.\n- You want a simple activity chart for a network rather than pool candles.\n\nEXAMPLES:\n- Base Uniswap v2-style swap candles: {\"network\":\"base-mainnet\",\"source\":\"uniswap_v2_swap\",\"pool_address\":\"0x<pool-address>\",\"duration\":\"1h\",\"interval\":\"5m\",\"price_in\":\"auto\",\"include_recent_trades\":true}\n- Base Uniswap candles: {\"network\":\"base-mainnet\",\"source\":\"uniswap_v3_swap\",\"pool_address\":\"0x<pool-address>\",\"duration\":\"1h\",\"interval\":\"5m\",\"price_in\":\"auto\"}\n- Base Uniswap v4 candles: {\"network\":\"base-mainnet\",\"source\":\"uniswap_v4_swap\",\"pool_id\":\"0x<pool-id>\",\"duration\":\"1h\",\"interval\":\"5m\",\"price_in\":\"auto\",\"include_recent_trades\":true}\n- Base Aerodrome Slipstream candles: {\"network\":\"base-mainnet\",\"source\":\"aerodrome_slipstream_swap\",\"pool_address\":\"0x<pool-address>\",\"duration\":\"1h\",\"interval\":\"5m\",\"price_in\":\"token1\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"default":"base-mainnet","description":"EVM network name (default: base-mainnet)","type":"string"},"pool_address":{"description":"Pool/pair contract address for address-keyed sources like Uniswap v3, Slipstream, or Sync-derived CPMM pools.","type":"string"},"pool_id":{"description":"Uniswap v4 pool id (bytes32). Optional when you provide the full v4 pool key instead.","type":"string"},"pool_manager_address":{"description":"Uniswap v4 PoolManager address. Optional on networks with a built-in official Uniswap deployment mapping.","type":"string"},"source":{"default":"uniswap_v3_swap","description":"Which event source to build candles from. Prefer swap-derived sources for factual trade prices and volumes. Uniswap v4 uses PoolManager Swap events filtered by pool_id, not a per-pool contract address.","type":"string","enum":["uniswap_v2_swap","uniswap_v3_swap","uniswap_v4_swap","aerodrome_slipstream_swap","uniswap_v2_sync"]},"interval":{"default":"auto","description":"Candle interval. auto uses chart-friendly defaults like 1h→5m and 24h→1h.","type":"string","enum":["auto","1m","5m","15m","30m","1h","4h","6h","1d"]},"duration":{"default":"1h","description":"How much recent history to cover. Accepts compact durations like \"1h\" or natural phrases like \"past 30 minutes\".","type":"string"},"mode":{"default":"deep","description":"Execution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.","type":"string","enum":["fast","deep"]},"price_in":{"default":"auto","description":"Choose which token the displayed price should be expressed in. auto picks the more human-readable quote side.","type":"string","enum":["auto","token0","token1"]},"base_token":{"description":"Legacy orientation input. Prefer price_in instead.","type":"string","enum":["token0","token1"]},"include_recent_trades":{"default":true,"description":"Include a recent trade tape for swap-derived sources when factual per-trade amounts are available.","type":"boolean"},"recent_trades_limit":{"default":5,"description":"Maximum number of recent trades to return in the trade tape.","type":"integer","minimum":1,"maximum":50},"currency0_address":{"description":"Optional Uniswap v4 currency0 address. Use with currency1_address, fee, and tick_spacing to derive pool_id factually.","type":"string"},"currency1_address":{"description":"Optional Uniswap v4 currency1 address. Use with currency0_address, fee, and tick_spacing to derive pool_id factually.","type":"string"},"fee":{"description":"Optional Uniswap v4 LP fee in hundredths of a bip, e.g. 3000 for 0.30%.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tick_spacing":{"description":"Optional Uniswap v4 tick spacing. Required with the rest of the pool key when deriving pool_id.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hooks_address":{"description":"Optional Uniswap v4 hooks contract address. Defaults to the zero address when omitted.","type":"string"},"token0_symbol":{"description":"Optional token0 symbol label for summaries","type":"string"},"token1_symbol":{"description":"Optional token1 symbol label for summaries","type":"string"},"token0_decimals":{"description":"Optional token0 decimals for human-readable prices","type":"number"},"token1_decimals":{"description":"Optional token1 decimals for human-readable prices","type":"number"},"token0_address":{"description":"Optional token0 address to infer known decimals","type":"string"},"token1_address":{"description":"Optional token1 address to infer known decimals","type":"string"},"cursor":{"description":"Continuation cursor from a previous candle page","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_evm_query_logs","description":"Query raw EVM logs with address/topic filters, common event aliases, earliest/latest scanning, and optional inline decoding.\n\nCOMMON USER ASKS:\n- Recent USDC Transfer logs\n- First recent USDC Transfer log\n- Latest ERC721/pass mint ID and tx hash\n\nFIRST CHOICE FOR:\n- NFT or ERC721 mint lookups such as latest pass minted, token ID, and mint transaction hash\n- contract event questions where the user needs exact event evidence rather than wallet or transaction summaries\n\nWHEN TO USE:\n- You need event logs filtered by contract or topic signature.\n- You want decoded log hints while still keeping the raw log shape available.\n- You want the first or last matching event in a bounded block/time window.\n- You want common event names such as transfer, approval, swap, mint, or burn instead of remembering topic0 hashes.\n- You need the latest ERC721/pass mint in a bounded deployment/recent window: filter Transfer events with topic1 as the zero address, use scan_order=latest, limit=1, and decode=true to expose decoded_log.decoded.token_id plus transaction_hash.\n\nDON'T USE:\n- You only want token transfers, which are easier with the token-transfer tool.\n\nEXAMPLES:\n- Recent USDC Transfer logs: {\"network\":\"base-mainnet\",\"timeframe\":\"1h\",\"token_symbols\":[\"USDC\"],\"event\":\"transfer\",\"limit\":20}\n- First recent USDC Transfer log: {\"network\":\"base-mainnet\",\"timeframe\":\"1h\",\"token_symbols\":[\"USDC\"],\"event\":\"transfer\",\"scan_order\":\"earliest\",\"limit\":1}\n- Latest ERC721/pass mint ID and tx hash: {\"network\":\"base-mainnet\",\"from_block\":46020000,\"to_block\":46100000,\"addresses\":[\"0xE4E70FdF2Fc1147a7f35c4c5de88E6BeA63eeAfA\"],\"event\":\"transfer\",\"topic1\":[\"0x0000000000000000000000000000000000000000000000000000000000000000\"],\"scan_order\":\"latest\",\"decode\":true,\"include_transaction\":true,\"limit\":1}\n- Decode logs inline: {\"network\":\"ethereum-mainnet\",\"timeframe\":\"1h\",\"topic0\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\"],\"decode\":true,\"limit\":10}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name or alias. Optional when continuing with cursor.","type":"string"},"timeframe":{"description":"Natural time range such as '5m', '1h', '24h', '7d', or 'past 30 minutes'. Alternative to from_block/to_block.","type":"string"},"from_block":{"description":"Starting block number (use this OR timeframe)","type":"number"},"to_block":{"description":"Ending block number. RECOMMENDED: <10k blocks for fast (<1s) responses. Larger ranges may be slow or timeout.","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"addresses":{"description":"Contract addresses to filter (e.g., ['0xUSDC...', '0xDAI...']). IMPORTANT: Always include this or topics for fast queries.","type":"array","items":{"type":"string"}},"token_symbols":{"description":"Token symbols to resolve via open token-list data and merge into addresses, e.g. [\"USDC\"].","type":"array","items":{"type":"string"}},"max_token_symbol_matches":{"default":5,"description":"Maximum token-list matches to include per token symbol. Use addresses for deterministic single-contract filters.","type":"number","minimum":1,"maximum":20},"event":{"description":"Common event alias or topic0 hash. Examples: \"transfer\", \"approval\", \"swap\", \"sync\", \"deposit\", \"withdrawal\". Merges with topic0.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"topic0":{"description":"Event signatures (topic0). E.g., Transfer = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","type":"array","items":{"type":"string"}},"topic1":{"description":"Topic1 filter (often: from address in Transfer, indexed parameter 1)","type":"array","items":{"type":"string"}},"topic2":{"description":"Topic2 filter (often: to address in Transfer, indexed parameter 2)","type":"array","items":{"type":"string"}},"topic3":{"description":"Topic3 filter (indexed parameter 3, chain-specific)","type":"array","items":{"type":"string"}},"scan_order":{"default":"latest","description":"Which side of the block window to scan first. Use earliest for first-event questions.","type":"string","enum":["latest","earliest"]},"max_scan_blocks":{"description":"Maximum blocks to inspect for bounded earliest/latest scans. Sparse latest searches default to 25,000 blocks to stay within MCP request timeouts; raise only when deeper coverage is worth the added latency.","type":"integer","minimum":1,"maximum":250000},"limit":{"default":20,"description":"Max logs to return (default: 20, max: 25). This verified ceiling keeps pages within MCP client budgets.","type":"integer","minimum":1,"maximum":25},"field_preset":{"default":"standard","description":"Field preset: 'minimal' (address+topic0+block, ~80% smaller), 'standard' (all topics+timestamp), 'full' (includes raw data hex, largest). Use 'minimal' to reduce context usage.","type":"string","enum":["minimal","standard","full"]},"response_format":{"description":"Response format: defaults to 'compact' for chat-friendly output, or stays 'full' when inline transaction context is requested. Use 'summary' for counting or categorizing.","type":"string","enum":["full","compact","summary"]},"include_transaction":{"default":false,"description":"Include parent transaction data","type":"boolean"},"include_transaction_traces":{"default":false,"description":"Include traces for parent transactions","type":"boolean"},"include_transaction_logs":{"default":false,"description":"Include all logs from parent transactions","type":"boolean"},"decode":{"default":false,"description":"Decode known log signatures inline when topics/data are available","type":"boolean"},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_evm_query_token_transfers","description":"Query token-transfer activity on EVM without needing to remember Transfer event signatures. Best for \"did token X move?\" and asset-tracing questions.\n\nCOMMON USER ASKS:\n- Recent USDC transfers\n- First recent USDC transfer\n\nWHEN TO USE:\n- You want ERC-20 style transfer activity filtered by token, sender, or recipient.\n- You want the fastest answer to a token movement question like \"did USDC move?\".\n- You are tracing suspicious, stolen, bridged, or exploit-related token movement and need sender/recipient/transaction pivots.\n- You want the easiest raw transfer query on an EVM network.\n- You need the first matching transfer in a bounded window without typing the Transfer topic hash.\n\nDON'T USE:\n- You need arbitrary event logs beyond token transfers.\n\nEXAMPLES:\n- Recent USDC transfers: {\"network\":\"base-mainnet\",\"timeframe\":\"1h\",\"token_symbols\":[\"USDC\"],\"limit\":20}\n- First recent USDC transfer: {\"network\":\"base-mainnet\",\"timeframe\":\"1h\",\"token_symbols\":[\"USDC\"],\"scan_order\":\"earliest\",\"limit\":1}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name or alias. Optional when continuing with cursor.","type":"string"},"from_block":{"description":"Starting block number","type":"number"},"to_block":{"description":"Ending block number. RECOMMENDED: <10k blocks for fast responses.","type":"number"},"timeframe":{"description":"Time range (e.g., '1h', '24h'). Alternative to block numbers.","type":"string"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"token_addresses":{"description":"Token contract addresses","type":"array","items":{"type":"string"}},"token_symbols":{"description":"Token symbols to resolve via open token-list data, e.g. [\"USDC\"]. Merges with token_addresses.","type":"array","items":{"type":"string"}},"max_token_symbol_matches":{"default":5,"description":"Maximum token-list matches to include per token symbol. Use token_addresses for deterministic single-contract filters.","type":"number","minimum":1,"maximum":20},"from_addresses":{"description":"Sender addresses","type":"array","items":{"type":"string"}},"to_addresses":{"description":"Recipient addresses","type":"array","items":{"type":"string"}},"scan_order":{"default":"latest","description":"Which side of the block window to scan first. Use earliest for first-transfer questions.","type":"string","enum":["latest","earliest"]},"limit":{"default":50,"description":"Max transfers","type":"number"},"include_token_info":{"default":false,"description":"Include token metadata (symbol, decimals) inline. Avoids separate token metadata lookups.","type":"boolean"},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_evm_query_traces","description":"Query raw EVM traces: internal calls, contract creations, self-destructs, and block rewards, filtered by caller, callee, method, deployer, or one transaction, with the parent transaction hash on every row.\n\nCOMMON USER ASKS:\n- Internal calls of one transaction\n- Recent internal calls into a contract\n- Contracts deployed by an address\n\nFIRST CHOICE FOR:\n- what a transaction called internally, including value moved by internal calls\n- contracts deployed by an address, or the internal call tree behind an incident\n\nWHEN TO USE:\n- You need the internal calls of a transaction: which contracts it called, with what selector and value, and which calls failed.\n- You want contracts created by a deployer or the creation trace of a contract.\n- You are tracing an exploit or incident below the top-level transaction and log surface.\n- You want internal ETH transfers between contracts that emit no event.\n\nDON'T USE:\n- You only need top-level transactions or event logs; those tools are cheaper.\n- You need storage changes; state diffs are not exposed by this tool.\n\nEXAMPLES:\n- Internal calls of one transaction: {\"network\":\"ethereum-mainnet\",\"from_block\":12244145,\"to_block\":12244145,\"transaction_hash\":\"0x851bad0415758075a1eb86776749c829b866d43179c57c3e4a4b9359a0358231\",\"limit\":25}\n- Recent internal calls into a contract: {\"network\":\"base-mainnet\",\"timeframe\":\"10m\",\"type\":[\"call\"],\"call_to\":[\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"],\"method\":\"transfer\",\"limit\":20}\n- Contracts deployed by an address: {\"network\":\"base-mainnet\",\"timeframe\":\"24h\",\"type\":[\"create\"],\"create_from\":[\"0x4200000000000000000000000000000000000006\"],\"limit\":10}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name or alias. Optional when continuing with cursor.","type":"string"},"from_block":{"description":"Starting block number (use this OR timeframe)","type":"number"},"to_block":{"description":"Ending block number. Traces are expensive: keep filtered windows under 5,000 blocks.","type":"number"},"timeframe":{"description":"Time range (e.g., '10m', '1h'). Alternative to from_block/to_block. Keep it short for traces.","type":"string"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"description":"FILTER: trace types. 'create' covers both CREATE and CREATE2; 'reward' only exists on proof-of-work history.","type":"array","items":{"type":"string","enum":["call","create","suicide","reward"]}},"call_from":{"description":"FILTER (call traces): calling addresses, contracts or wallets.","type":"array","items":{"type":"string"}},"call_to":{"description":"FILTER (call traces): called addresses.","type":"array","items":{"type":"string"}},"call_sighash":{"description":"FILTER (call traces): 4-byte selectors such as 0xa9059cbb.","type":"array","items":{"type":"string"}},"method":{"description":"FILTER (call traces): method alias such as transfer, approve, deposit, or a 4-byte selector. Merges with call_sighash.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"create_from":{"description":"FILTER (create traces): deployer addresses.","type":"array","items":{"type":"string"}},"create_result_address":{"description":"FILTER (create traces): deployed contract addresses.","type":"array","items":{"type":"string"}},"transaction_hash":{"description":"FILTER: keep only traces of this transaction. Give its block (from_block = to_block) or a window of at most 1,000 blocks; find the block with portal_evm_query_transactions first when unknown.","type":"string"},"include_transaction":{"default":false,"description":"Attach the parent transaction (sender, recipient, value, status). The hash is always attached.","type":"boolean"},"include_subtraces":{"default":false,"description":"Also return the child traces of each matching trace","type":"boolean"},"scan_order":{"default":"latest","description":"Which side of the block window to scan first. Use earliest for first-occurrence questions.","type":"string","enum":["earliest","latest"]},"max_scan_blocks":{"description":"Safety cap for bounded scans. Default: 5,000 blocks with filters, 100 without.","type":"integer","minimum":1,"maximum":50000},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"field_preset":{"default":"standard","description":"Field preset: 'minimal' (type, from, to), 'standard' (value, selector, gas, result address), 'full' (adds call input and output and creation code).","type":"string","enum":["minimal","standard","full"]},"response_format":{"description":"Response format: defaults to 'compact' for chat-friendly output. Use 'summary' for counts by type, failures, value moved, and top callers.","type":"string","enum":["full","compact","summary"]},"limit":{"default":20,"description":"Max traces to return (default: 20, max: 25)","type":"integer","minimum":1,"maximum":25},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_evm_query_transactions","description":"Query raw EVM transactions with optional logs, traces, state-diff context, and evidence pivots for transaction-level investigations.\n\nCOMMON USER ASKS:\n- Recent Base transactions\n- Filter by sender\n- First EIP-2930 transaction from Berlin fork\n\nWHEN TO USE:\n- You need raw transaction records on an EVM network.\n- You want chain-specific transaction fields or include flags that convenience tools do not expose.\n- You need exact transaction evidence for an investigation, including sender, receiver, transaction hash, logs, traces, or failed calls.\n- You need to find the first transaction matching a raw field condition such as transaction type 0x1 from a known block.\n- You need top-N raw transactions ranked by value, gas used, or effective gas price.\n- You need top senders or receivers from a bounded transaction window.\n- You want common method names such as transfer, approve, deposit, or withdraw instead of remembering sighashes.\n- You want calls to a token contract by symbol, such as transfer calls to USDC, without hardcoding token addresses.\n\nDON'T USE:\n- You only need a quick recent feed or wallet-level summary.\n\nEXAMPLES:\n- Recent Base transactions: {\"network\":\"base-mainnet\",\"timeframe\":\"1h\",\"limit\":20}\n- Filter by sender: {\"network\":\"ethereum-mainnet\",\"timeframe\":\"6h\",\"from_addresses\":[\"0xabc...\"],\"limit\":20}\n- First EIP-2930 transaction from Berlin fork: {\"network\":\"ethereum-mainnet\",\"from_block\":12244000,\"transaction_type\":\"0x1\",\"scan_order\":\"earliest\",\"limit\":1,\"field_preset\":\"minimal\"}\n- Largest recent calls to a resolved token contract: {\"network\":\"base-mainnet\",\"timeframe\":\"1h\",\"to_token_symbols\":[\"USDC\"],\"method\":\"transfer\",\"order_by\":\"gas_used_desc\",\"limit\":5}\n- Top senders by transaction count: {\"network\":\"base-mainnet\",\"timeframe\":\"1h\",\"aggregate_by\":\"sender\",\"aggregate_metric\":\"count\",\"limit\":10}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name or alias. Optional when continuing with cursor.","type":"string"},"timeframe":{"description":"Natural time range such as '5m', '1h', '24h', '7d', or 'past 30 minutes'. Alternative to from_block/to_block. Large ranges are allowed with a low limit (<=100).","type":"string"},"from_block":{"description":"Starting block number (use this OR timeframe). Large ranges OK with low limit (<=100).","type":"number"},"to_block":{"description":"Ending block number. RECOMMENDED: <5k blocks for fast (<500ms) responses. Larger ranges may be slow.","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"from_addresses":{"description":"FILTER: Sender addresses (wallets or contracts that initiated the transaction). Optional if limit <=100.","type":"array","items":{"type":"string"}},"to_addresses":{"description":"FILTER: Recipient addresses (typically contracts being called, or wallets receiving ETH). Optional if limit <=100.","type":"array","items":{"type":"string"}},"from_token_symbols":{"description":"Resolve token symbols via open token-list data and merge them into from_addresses. Rare, but useful for token-contract-originated transactions.","type":"array","items":{"type":"string"}},"to_token_symbols":{"description":"Resolve token symbols via open token-list data and merge them into to_addresses, e.g. transfer/approve calls to USDC.","type":"array","items":{"type":"string"}},"max_token_symbol_matches":{"default":5,"description":"Maximum token-list matches to include per token symbol. Use from_addresses/to_addresses for deterministic single-contract filters.","type":"number","minimum":1,"maximum":20},"sighash":{"description":"FILTER: Function sighash (4-byte hex, e.g., '0xa9059cbb' for transfer). Optional if limit <=100.","type":"array","items":{"type":"string"}},"method":{"description":"FILTER: Common EVM method alias or 4-byte sighash. Examples: \"transfer\", \"approve\", \"transferFrom\", \"deposit\", \"withdraw\". Merges with sighash.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"transaction_type":{"description":"FILTER: EVM transaction type. Accepts decimal or hex strings such as 0, 1, 2, \"0x0\", \"0x1\", \"0x2\". Applied client-side while streaming Portal results; use with scan_order=\"earliest\" and from_block to find the first typed transaction.","anyOf":[{"type":"number"},{"type":"string"}]},"transaction_status":{"description":"FILTER: Transaction receipt status. Use \"success\"/1 or \"failed\"/0 for failed/reverted transaction searches.","anyOf":[{"type":"string","enum":["success","failed","succeeded","reverted"]},{"type":"number"},{"type":"string"}]},"contract_creation":{"description":"FILTER: true returns contract-creation transactions; false excludes them. Useful for \"first contract creation from this wallet\".","type":"boolean"},"min_value_wei":{"description":"FILTER/RANKING: Minimum native token value in wei. Accepts decimal or hex string.","anyOf":[{"type":"string"},{"type":"number"}]},"min_gas_used":{"description":"FILTER/RANKING: Minimum receipt gasUsed. Accepts decimal or hex string.","anyOf":[{"type":"string"},{"type":"number"}]},"min_effective_gas_price_wei":{"description":"FILTER/RANKING: Minimum effectiveGasPrice in wei. Accepts decimal or hex string.","anyOf":[{"type":"string"},{"type":"number"}]},"order_by":{"default":"chronological","description":"Optional ranking for top-N questions. Use value_desc, gas_used_desc, or effective_gas_price_desc.","type":"string","enum":["chronological","value_desc","gas_used_desc","effective_gas_price_desc"]},"aggregate_by":{"description":"Optional bounded aggregation for top sender/receiver questions. Returns ranked address rows instead of raw transactions.","type":"string","enum":["sender","receiver"]},"aggregate_metric":{"default":"count","description":"Metric used with aggregate_by. count ranks by tx count; value by total native value; gas_used by total gas used; effective_gas_price by max effective gas price.","type":"string","enum":["count","value","gas_used","effective_gas_price"]},"max_scan_blocks":{"description":"Safety cap for first/last/ranked client-side scans. Default: min(window, 10000 blocks).","type":"number","maximum":50000},"scan_order":{"description":"Which side of the block window to scan first. Normal previews default to latest; transaction_type searches default to earliest, so \"first tx type 0x1 from block N\" scans forward from from_block.","type":"string","enum":["latest","earliest"]},"first_nonce":{"description":"Minimum nonce","type":"number"},"last_nonce":{"description":"Maximum nonce","type":"number"},"limit":{"default":20,"description":"Max transactions (default: 20, max: 25). This verified ceiling keeps pages within MCP client budgets.","type":"integer","minimum":1,"maximum":25},"field_preset":{"default":"standard","description":"Field preset: 'minimal' (from/to/value+block, ~70% smaller), 'standard' (hash+gas+timestamp), 'full' (includes input data hex, largest). Use 'minimal' to reduce context usage.","type":"string","enum":["minimal","standard","full"]},"response_format":{"description":"Response format: defaults to 'compact' for chat-friendly output, or stays 'full' when inline logs, traces, or state diffs are requested. Use 'summary' for counting or profiling.","type":"string","enum":["full","compact","summary"]},"include_logs":{"default":false,"description":"Include logs emitted by transactions","type":"boolean"},"include_traces":{"default":false,"description":"Include traces for transactions","type":"boolean"},"include_state_diffs":{"default":false,"description":"Include state diffs caused by transactions","type":"boolean"},"include_l2_fields":{"default":false,"description":"Include L2-specific fields","type":"boolean"},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_get_head","description":"Get just the latest indexed head block or slot for a network.\n\nCOMMON USER ASKS:\n- Latest head\n- Finalized head\n\nFIRST CHOICE FOR:\n- getting the current indexed head before building a manual block range\n\nWHEN TO USE:\n- You only need the current block or slot number.\n- You need the current head before building a raw block-range query.\n\nDON'T USE:\n- You want to know if the network is caught up, behind, fresh, or what tables are available.\n\nEXAMPLES:\n- Latest head: {\"network\":\"base-mainnet\"}\n- Finalized head: {\"network\":\"ethereum-mainnet\",\"type\":\"finalized\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"type":"string","description":"Network name or alias"},"type":{"default":"latest","description":"Block type","type":"string","enum":["latest","finalized"]}},"required":["network"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_get_network_info","description":"Answer \"is this network caught up?\" with indexing freshness, lag, heads, and available tables.\n\nCOMMON USER ASKS:\n- Is Base caught up?\n\nFIRST CHOICE FOR:\n- checking indexing head, lag, tables, and capabilities for one network\n\nWHEN TO USE:\n- You want to know whether a network is indexed, fresh, caught up, or behind before querying.\n- You need chain family, real-time status, or available tables for a network.\n\nDON'T USE:\n- You only need the latest block or slot number.\n\nEXAMPLES:\n- Is Base caught up?: {\"network\":\"base-mainnet\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"type":"string","description":"Network name or alias"}},"required":["network"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_get_recent_activity","description":"Get a simple recent-activity feed across EVM, Solana, Bitcoin, or Hyperliquid with chronological paging and investigation pivots.\n\nCOMMON USER ASKS:\n- Recent activity on Base\n- Recent Hyperliquid fills\n\nFIRST CHOICE FOR:\n- recent activity on any supported network without manual block math\n- questions like \"what has been happening on Base lately?\"\n- first-pass incident triage when the user asks what happened recently on a network\n\nWHEN TO USE:\n- You want a quick recent-activity feed for a network.\n- You want to ask what has been happening lately on a network and see the newest activity first.\n- You want the simplest starting point before reaching for raw VM-specific query tools.\n- You are investigating an incident and need a bounded, recent evidence timeline before narrowing to wallets, transfers, logs, or fills.\n\nDON'T USE:\n- You need raw logs, instructions, or chain-specific fields that only raw query tools return.\n- You want a chart over time rather than a recent feed.\n\nEXAMPLES:\n- Recent activity on Base: {\"network\":\"base-mainnet\",\"timeframe\":\"1h\",\"limit\":10}\n- Recent Hyperliquid fills: {\"network\":\"hyperliquid-fills\",\"timeframe\":\"1h\",\"limit\":10}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name (supports short names: 'polygon', 'base', 'ethereum', 'arbitrum', etc.). Optional when continuing with cursor.","type":"string"},"timeframe":{"default":"100","description":"Time period or block count. Examples: '100' (default), '1h', '6h', '24h', '7d', '3d'.","type":"string"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"from_addresses":{"description":"Filter by sender addresses","type":"array","items":{"type":"string"}},"to_addresses":{"description":"Filter by recipient addresses","type":"array","items":{"type":"string"}},"limit":{"default":10,"description":"Max activity rows to return (default: 10, max: 25)","type":"integer","minimum":1,"maximum":25},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_get_time_series","description":"Build simple activity charts and other time-series views across supported VMs, including compare-previous windows and grouped EVM contract trends.\n\nCOMMON USER ASKS:\n- Base transactions per 15m bucket\n- Compare two periods\n\nFIRST CHOICE FOR:\n- activity over time, compare-current-vs-previous, grouped trends, and simple activity charts\n\nWHEN TO USE:\n- You want chart-ready metric buckets over time.\n- You want a simple activity chart for a network, defaulting to a 6h interactive window unless a longer window is explicitly requested.\n- You want to compare the current period to the previous period.\n\nDON'T USE:\n- You need raw record lists instead of aggregated buckets.\n- You need DEX pool candles or OHLC output.\n\nEXAMPLES:\n- Base transactions per 15m bucket: {\"network\":\"base-mainnet\",\"metric\":\"transaction_count\",\"duration\":\"6h\",\"interval\":\"15m\"}\n- Compare two periods: {\"network\":\"solana-mainnet\",\"metric\":\"transaction_count\",\"duration\":\"1h\",\"interval\":\"5m\",\"compare_previous\":true}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"type":"string","description":"Network name (supports short names: 'ethereum', 'polygon', 'base', etc.)"},"metric":{"type":"string","enum":["transaction_count","transactions_per_block","avg_gas_price","gas_used","block_utilization","unique_addresses","tps","avg_fee","success_rate","slots_per_hour","fees_btc","block_size_bytes","volume","fill_count","unique_traders"],"description":"Metric to aggregate over time. Per chain family: evm: transaction_count, transactions_per_block, avg_gas_price, gas_used, block_utilization, unique_addresses; solana: transaction_count, unique_addresses, tps, avg_fee, success_rate, slots_per_hour; bitcoin: transaction_count, unique_addresses, fees_btc, block_size_bytes; hyperliquid: volume, fill_count, unique_traders. Others are refused."},"interval":{"type":"string","enum":["5m","15m","1h","6h","1d"],"description":"Time bucket interval (5m, 15m, 1h, 6h, 1d)"},"duration":{"default":"6h","description":"Total time period to analyze. Defaults to \"6h\" for interactive use. The bound is in blocks, not time: this tool reads every block in the window and stops at 12,000, so \"24h\" is fine on Bitcoin or Ethereum and refused on a 2-second chain like Base (43,200 blocks). A window over the bound is refused at once and the error names a duration that fits. Accepts compact durations like \"30m\" or natural phrases like \"past 30 minutes\".","type":"string"},"address":{"description":"Optional: Filter to specific contract address for contract-specific trends","type":"string"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"24h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"compare_previous":{"default":false,"description":"Compare the selected window against the immediately previous window","type":"boolean"},"group_by":{"default":"none","description":"Optional grouping mode. contract is currently supported only for EVM transaction_count","type":"string","enum":["none","contract"]},"group_limit":{"default":5,"description":"Maximum number of contract groups when group_by=contract","type":"number"},"mode":{"default":"deep","description":"Execution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.","type":"string","enum":["fast","deep"]}},"required":["network","metric","interval"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_get_wallet_summary","description":"Summarize wallet activity and fund flow with shared overview, asset movement, counterparties, evidence pivots, and follow-up filters across supported networks.\n\nCOMMON USER ASKS:\n- EVM wallet fund-flow triage\n- Solana wallet activity and fee flow\n\nFIRST CHOICE FOR:\n- one-call wallet analysis across supported VMs\n- suspicious wallet triage, fund-flow direction, counterparties, and next evidence pivots before drilling into raw records\n\nWHEN TO USE:\n- You want a single high-level answer about what one wallet has been doing and where value appears to move.\n- You want inbound/outbound flow, activity and asset-movement counterparties, largest movements within each asset, and exact next pivots before drilling into raw transactions or fills.\n- The user asks to investigate a suspicious wallet, stolen-funds path, exploit counterparty, or incident address.\n\nDON'T USE:\n- You need every raw record with full chain-specific fields and no summarization.\n\nEXAMPLES:\n- EVM wallet fund-flow triage: {\"network\":\"base-mainnet\",\"address\":\"0xabc...\",\"timeframe\":\"24h\"}\n- Solana wallet activity and fee flow: {\"network\":\"solana-mainnet\",\"address\":\"Vote111...\",\"timeframe\":\"6h\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name or alias. Optional when continuing with cursor.","type":"string"},"address":{"description":"Wallet address to analyze. Optional when continuing with cursor.","type":"string"},"timeframe":{"default":"1000","description":"Look-back period as timeframe or block count. Examples: '1h', '24h', '7d', '3d', '1000'.","type":"string"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"string"},{"type":"number"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"string"},{"type":"number"}]},"include_tokens":{"default":true,"description":"Include ERC20 token transfers","type":"boolean"},"include_nfts":{"default":false,"description":"Include NFT transfers (ERC721/1155)","type":"boolean"},"limit_per_type":{"default":5,"description":"Requested items per category (default: 5). Values up to the retained compatibility maximum of 10 are accepted, while each category is safely capped at 4 rows and remains cursorable.","type":"integer","minimum":1,"maximum":10},"mode":{"default":"deep","description":"Execution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.","type":"string","enum":["fast","deep"]},"response_format":{"description":"Response format: defaults to 'compact' for a readable wallet investigation. Use 'summary' for headline flow only or 'full' for all returned activity rows.","type":"string","enum":["full","compact","summary"]},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_hyperliquid_get_analytics","description":"Get the big-picture Hyperliquid fill analytics with top traders, volume by coin, fees, and PnL.\n\nCOMMON USER ASKS:\n- Hyperliquid fill snapshot\n- Who traded the most?\n\nWHEN TO USE:\n- You want network-level Hyperliquid fill analytics.\n- You want to know who traded the most, which coins had volume, or how fees and PnL looked.\n- You want grouped aggregate sections without stitching raw fills together yourself.\n\nDON'T USE:\n- You need individual fill records or OHLC candles.\n\nEXAMPLES:\n- Hyperliquid fill snapshot: {\"network\":\"hyperliquid-fills\",\"timeframe\":\"1h\"}\n- Who traded the most?: {\"network\":\"hyperliquid-fills\",\"timeframe\":\"1h\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"default":"hyperliquid-fills","description":"Network name (default: 'hyperliquid-fills')","type":"string"},"timeframe":{"default":"1h","description":"Time range: '1h', '6h', '24h'. Default: '1h'","type":"string"},"mode":{"default":"deep","description":"Execution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.","type":"string","enum":["fast","deep"]},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"6h ago\".","anyOf":[{"type":"string"},{"type":"number"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"string"},{"type":"number"}]},"coin":{"description":"Filter by asset symbols (e.g., [\"BTC\", \"ETH\"])","type":"array","items":{"type":"string"}},"response_format":{"default":"compact","description":"Response format: 'summary' (smallest snapshot), 'compact' (chat-sized ranked sections, default), 'full' (complete analytics).","type":"string","enum":["full","compact","summary"]},"section_limit":{"default":6,"description":"Per-section page size for ranked sections. Default: 6","type":"number"},"cursor":{"description":"Continuation cursor for ranked analytics sections","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_hyperliquid_get_ohlc","description":"Build chart-ready Hyperliquid trade OHLC candles with fixed buckets and auto intervals.\n\nCOMMON USER ASKS:\n- BTC candles\n\nWHEN TO USE:\n- You want candles for one coin on Hyperliquid.\n- You need chart-ready OHLC, volume, and VWAP data from fills.\n\nDON'T USE:\n- You want scalar time-series buckets or raw fills.\n\nEXAMPLES:\n- BTC candles: {\"network\":\"hyperliquid-fills\",\"coin\":\"BTC\",\"duration\":\"6h\",\"interval\":\"auto\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"default":"hyperliquid-fills","description":"Network name (default: 'hyperliquid-fills')","type":"string"},"coin":{"description":"Asset symbol to build candles for (for example: \"BTC\", \"ETH\", \"SOL\"). Optional when continuing with cursor.","type":"string"},"interval":{"default":"auto","description":"Candle interval. Use auto for chart-friendly defaults: 1h→5m, 6h→15m, 12h→30m, 24h→1h.","type":"string","enum":["auto","1m","5m","15m","30m","1h","4h","6h","1d"]},"duration":{"description":"How much recent trading history to cover when exact timestamps are omitted. Defaults to \"1h\". Accepts compact durations like \"1h\" or natural phrases like \"past 30 minutes\".","type":"string"},"from_timestamp":{"description":"Exact candle-window start. Use together with to_timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input.","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Exact inclusive candle-window end. Use together with from_timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input.","anyOf":[{"type":"number"},{"type":"string"}]},"user":{"description":"Optional trader wallet address (0x-prefixed, lowercase)","type":"string"},"cursor":{"description":"Continuation cursor from a previous candle page","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_hyperliquid_query_fills","description":"Query raw individual Hyperliquid fills with trader, coin, fee, PnL, and builder context.\n\nCOMMON USER ASKS:\n- Recent BTC fills\n\nWHEN TO USE:\n- You need raw fill records on Hyperliquid.\n- You want to filter by trader, coin, direction, builder, or fee token.\n\nDON'T USE:\n- You want the big picture, top traders, grouped aggregates, or candles instead of raw fill rows.\n\nEXAMPLES:\n- Recent BTC fills: {\"network\":\"hyperliquid-fills\",\"timeframe\":\"1h\",\"coin\":[\"BTC\"],\"limit\":20}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"default":"hyperliquid-fills","description":"Network name (default: 'hyperliquid-fills'). Optional when continuing with cursor.","type":"string"},"timeframe":{"description":"Time range (e.g., '1h', '24h'). Alternative to from_block/to_block.","type":"string"},"from_block":{"description":"Starting block number (use this OR timeframe)","type":"number"},"to_block":{"description":"Ending block number","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"user":{"description":"Trader wallet addresses (0x-prefixed, lowercase)","type":"array","items":{"type":"string"}},"coin":{"description":"Asset symbols (e.g., \"ETH\", \"BTC\", \"SOL\")","type":"array","items":{"type":"string"}},"dir":{"description":"Trade direction: \"Open Long\", \"Close Long\", \"Open Short\", \"Close Short\"","type":"array","items":{"type":"string"}},"builder":{"description":"Builder addresses (0x-prefixed, lowercase)","type":"array","items":{"type":"string"}},"fee_token":{"description":"Fee token symbols","type":"array","items":{"type":"string"}},"cloid":{"description":"Client order IDs (0x-prefixed hex)","type":"array","items":{"type":"string"}},"limit":{"default":20,"description":"Requested fills per page (default: 20). Values up to the retained compatibility maximum of 200 are accepted, while each response is safely capped at 25 rows and remains cursorable.","type":"integer","minimum":1,"maximum":200},"include_pnl":{"default":true,"description":"Include closedPnl and startPosition fields","type":"boolean"},"include_builder_info":{"default":false,"description":"Include builder and builderFee fields","type":"boolean"},"response_format":{"description":"Response format: defaults to 'compact' for chat-friendly output. Use 'summary' for aggregate stats or 'full' when you truly need every fill field.","type":"string","enum":["full","compact","summary"]},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_list_networks","description":"Find the right network or chain name to use across EVM, Solana, Bitcoin, Substrate, and Hyperliquid.\n\nCOMMON USER ASKS:\n- Find Base-like networks\n- Show Solana mainnets\n- Show Substrate mainnets\n\nFIRST CHOICE FOR:\n- finding the correct network before any other query\n\nWHEN TO USE:\n- You are not sure which network name, chain name, or alias to use.\n- You want to filter networks by VM family, network type, or real-time availability.\n\nDON'T USE:\n- You already know the exact network and want live data from that network.\n\nEXAMPLES:\n- Find Base-like networks: {\"query\":\"base\",\"limit\":10}\n- Show Solana mainnets: {\"vm\":\"solana\",\"network_type\":\"mainnet\"}\n- Show Substrate mainnets: {\"vm\":\"substrate\",\"network_type\":\"mainnet\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"vm":{"description":"Filter by VM family","type":"string","enum":["evm","tron","solana","bitcoin","substrate","hyperliquid"]},"network_type":{"description":"Filter by network type","type":"string","enum":["mainnet","testnet","devnet"]},"query":{"description":"Search by name, alias, or chain ID","type":"string"},"real_time_only":{"description":"Only show networks with a real-time indexed head","type":"boolean"},"limit":{"default":25,"description":"Max results to return (default: 25, max: 100)","type":"number","maximum":100},"cursor":{"description":"Continuation cursor from a previous network catalog page","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_resolve_entity","description":"Resolve user-facing blockchain entities into query-ready identifiers, with ambiguity kept explicit.\n\nCOMMON USER ASKS:\n- Resolve USDC on Base\n- Resolve WETH on Ethereum\n- Resolve BAYC contract\n\nFIRST CHOICE FOR:\n- resolving a token symbol like USDC to token contract addresses\n- resolving EVM contract aliases, protocol names, pool identifiers, or Hyperliquid coin names before querying\n- checking which token-list addresses a symbol maps to before querying logs or transfers\n- turning a user-friendly token name into deterministic EVM filters\n\nWHEN TO USE:\n- The user names a token symbol such as USDC, WETH, DAI, or PEPE and you need contract addresses before querying raw data.\n- The user names a well-known EVM contract, protocol, pool identifier, or Hyperliquid ticker and you need a deterministic follow-up filter.\n- You need to disambiguate bridged token variants on an EVM network.\n- You want a source-backed token address rather than relying on memory or hardcoded constants.\n\nDON'T USE:\n- You already have the exact address, pool id, protocol slug, or coin filter and can pass it directly.\n\nEXAMPLES:\n- Resolve USDC on Base: {\"network\":\"base-mainnet\",\"kind\":\"token\",\"query\":\"USDC\",\"limit\":10}\n- Resolve WETH on Ethereum: {\"network\":\"ethereum-mainnet\",\"kind\":\"token\",\"query\":\"WETH\",\"limit\":5}\n- Resolve BAYC contract: {\"network\":\"ethereum-mainnet\",\"kind\":\"contract\",\"query\":\"bored apes\"}\n- Resolve Hyperliquid coin: {\"kind\":\"hyperliquid_coin\",\"query\":\"bitcoin\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name or alias when the entity is network-scoped, e.g. \"base\", \"ethereum\", \"arbitrum-one\", or \"hyperliquid-fills\".","type":"string"},"kind":{"default":"token","description":"Entity kind to resolve: token, contract alias/address, pool identifier, protocol name, or Hyperliquid coin/ticker.","type":"string","enum":["token","contract","pool","protocol","hyperliquid_coin"]},"query":{"type":"string","description":"Entity string to resolve, e.g. \"USDC\", \"bayc\", \"uniswap\", \"BTC\", or \"0x...\"."},"limit":{"default":10,"description":"Maximum matches to return.","type":"number","minimum":1,"maximum":50}},"required":["query"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_solana_get_analytics","description":"Get the big picture for Solana throughput, fees, wallet activity, and optional top-program usage.\n\nCOMMON USER ASKS:\n- Solana network snapshot\n- Include top programs\n\nFIRST CHOICE FOR:\n- the big picture for Solana right now\n\nWHEN TO USE:\n- You want the big picture for Solana right now.\n- You want a network health snapshot for Solana.\n- You want throughput, fee, success-rate, or top-program analytics rather than raw records.\n\nDON'T USE:\n- You want chart buckets or raw transaction/instruction records.\n\nEXAMPLES:\n- Solana network snapshot: {\"network\":\"solana-mainnet\",\"timeframe\":\"1h\"}\n- Include top programs: {\"network\":\"solana-mainnet\",\"timeframe\":\"1h\",\"include_programs\":true}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"default":"solana-mainnet","description":"Network name (default: solana-mainnet)","type":"string"},"timeframe":{"description":"Time range. Accepts compact durations like '15m' or natural phrases like 'past 30 minutes'. Optional; defaults to a 1h analysis window.","type":"string"},"mode":{"default":"deep","description":"Execution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.","type":"string","enum":["fast","deep"]},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"string"},{"type":"number"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"string"},{"type":"number"}]},"include_compute_units":{"default":false,"description":"Include average compute-unit stats across the full range (disabled by default for speed)","type":"boolean"},"include_programs":{"default":false,"description":"Include top programs by instruction count (requires an extra instruction scan and is slower)","type":"boolean"},"program_limit":{"default":20,"description":"Max top-program rows to return per page when include_programs is enabled","type":"number"},"response_format":{"default":"full","description":"Response format: 'summary' (high-level metrics), 'compact' (core sections), 'full' (complete analytics).","type":"string","enum":["full","compact","summary"]},"cursor":{"description":"Continuation cursor for paginating top_programs","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_solana_query_instructions","description":"Query raw Solana instructions with program and account filters.\n\nCOMMON USER ASKS:\n- Token Program instructions\n\nWHEN TO USE:\n- You need program-level or account-level instruction activity.\n- You want to inspect Token Program, Jupiter, System Program, or Anchor discriminator activity.\n\nDON'T USE:\n- You only need transaction-level activity and not individual instructions.\n\nEXAMPLES:\n- Token Program instructions: {\"network\":\"solana-mainnet\",\"timeframe\":\"1h\",\"program_id\":[\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"],\"limit\":20}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name or alias. Optional when continuing with cursor.","type":"string"},"timeframe":{"description":"Time range (e.g., '1h', '24h'). Alternative to from_block/to_block. Solana slots are ~400ms.","type":"string"},"from_block":{"description":"Starting slot number (use this OR timeframe)","type":"number"},"to_block":{"description":"Ending slot number. Keep ranges reasonable for performance.","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"finalized_only":{"default":false,"description":"Only query finalized slots","type":"boolean"},"program_id":{"description":"Program IDs. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"d1":{"description":"1-byte discriminator filter (0x-prefixed hex). You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"d2":{"description":"2-byte discriminator filter (0x-prefixed hex). You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"d4":{"description":"4-byte discriminator filter (0x-prefixed hex). You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"d8":{"description":"8-byte discriminator filter - Anchor (0x-prefixed hex). You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a0":{"description":"Account at index 0. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a1":{"description":"Account at index 1. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a2":{"description":"Account at index 2. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a3":{"description":"Account at index 3. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a4":{"description":"Account at index 4. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a5":{"description":"Account at index 5. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a6":{"description":"Account at index 6. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a7":{"description":"Account at index 7. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a8":{"description":"Account at index 8. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a9":{"description":"Account at index 9. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a10":{"description":"Account at index 10. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a11":{"description":"Account at index 11. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a12":{"description":"Account at index 12. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a13":{"description":"Account at index 13. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a14":{"description":"Account at index 14. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"a15":{"description":"Account at index 15. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"mentions_account":{"description":"Accounts mentioned anywhere in the instruction. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"is_committed":{"description":"Only committed transactions","type":"boolean"},"transaction_fee_payer":{"description":"Fee payer filter. You can pass a single string or an array.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"limit":{"default":20,"description":"Max instructions (default: 20, max: 25)","type":"integer","minimum":1,"maximum":25},"include_transaction":{"default":false,"description":"Include transaction data","type":"boolean"},"include_transaction_balances":{"default":false,"description":"Include SOL balance changes","type":"boolean"},"include_transaction_token_balances":{"default":false,"description":"Include token balance changes","type":"boolean"},"include_inner_instructions":{"default":false,"description":"Include inner (CPI) instructions","type":"boolean"},"include_logs":{"default":false,"description":"Include program logs","type":"boolean"},"include_transaction_instructions":{"default":false,"description":"Include all instructions from the parent transaction (sibling instructions)","type":"boolean"},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_solana_query_transactions","description":"Query raw Solana transactions with optional balances, rewards, logs, and instruction context.\n\nCOMMON USER ASKS:\n- Recent Solana transactions\n- Filter by program\n\nWHEN TO USE:\n- You need raw Solana transaction records.\n- You want Solana-specific filters or include flags that convenience tools do not expose.\n\nDON'T USE:\n- You only want recent activity or a compact network summary.\n\nEXAMPLES:\n- Recent Solana transactions: {\"network\":\"solana-mainnet\",\"timeframe\":\"1h\",\"limit\":20}\n- Filter by program: {\"network\":\"solana-mainnet\",\"timeframe\":\"1h\",\"program_id\":[\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"],\"limit\":20}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name or alias. Optional when continuing with cursor.","type":"string"},"timeframe":{"description":"Time range (e.g., '1h', '24h'). Alternative to from_block/to_block.","type":"string"},"from_block":{"description":"Starting slot number (use this OR timeframe)","type":"number"},"to_block":{"description":"Ending slot number","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"finalized_only":{"default":false,"description":"Only query finalized slots","type":"boolean"},"fee_payer":{"description":"Fee payer addresses","type":"array","items":{"type":"string"}},"mentions_account":{"description":"Accounts mentioned anywhere in the transaction","type":"array","items":{"type":"string"}},"include_instructions":{"default":false,"description":"Include instruction data","type":"boolean"},"include_balances":{"default":false,"description":"Include SOL balance changes","type":"boolean"},"include_token_balances":{"default":false,"description":"Include SPL token balance changes","type":"boolean"},"include_logs":{"default":false,"description":"Include program logs","type":"boolean"},"include_rewards":{"default":false,"description":"Include block rewards (validator staking rewards). Filter by pubkey using mentions_account.","type":"boolean"},"limit":{"default":20,"description":"Max transactions to return (default: 20, max: 25)","type":"integer","minimum":1,"maximum":25},"response_format":{"description":"Response format: defaults to 'compact' for chat-friendly output, or stays 'full' when inline instruction, balance, log, or reward context is requested. Use 'summary' for aggregate stats.","type":"string","enum":["full","compact","summary"]},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_substrate_get_analytics","description":"Analytics snapshot for Substrate or Polkadot activity in an indexed window, with event, call, and extrinsic counts plus top event and call names.\n\nCOMMON USER ASKS:\n- Polkadot activity snapshot\n- Big picture for Polkadot activity\n- How is Polkadot doing?\n\nFIRST CHOICE FOR:\n- Polkadot activity analytics in an indexed window\n- how Polkadot is doing in an indexed window\n- analytics snapshot for Polkadot or another Substrate network in an indexed window\n\nWHEN TO USE:\n- You want Polkadot activity analytics in a selected indexed window.\n- You want to ask \"how is Polkadot doing in this indexed window?\" and get an analytics answer rather than just network freshness metadata.\n- You want a quick Substrate network snapshot or health check.\n- You want top pallet events and calls rather than raw rows.\n- You want to know how a Substrate network is doing in the selected indexed window.\n\nDON'T USE:\n- You need full raw event or call records.\n\nEXAMPLES:\n- Polkadot activity snapshot: {\"network\":\"polkadot\",\"timeframe\":\"1h\"}\n- Big picture for Polkadot activity: {\"network\":\"polkadot\",\"timeframe\":\"1h\"}\n- How is Polkadot doing?: {\"network\":\"polkadot\",\"timeframe\":\"6h\"}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"default":"polkadot","description":"Substrate network name (default: polkadot)","type":"string"},"timeframe":{"description":"Time range like '1h', '6h', or '24h'. Default: '1h'","type":"string"},"mode":{"default":"deep","description":"Execution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.","type":"string","enum":["fast","deep"]},"from_block":{"description":"Starting block number (use this OR timeframe)","type":"number"},"to_block":{"description":"Ending block number","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"6h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"response_format":{"default":"full","description":"Response format: 'summary' (headline metrics only), 'compact' (core sections), 'full' (full dashboard payload)","type":"string","enum":["full","compact","summary"]},"section_limit":{"default":10,"description":"Max rows to keep in ranked event and call sections","type":"number"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_substrate_query_calls","description":"Query raw Substrate or Polkadot calls with pallet/call-name filters and optional child-call, emitted-event, or extrinsic context.\n\nCOMMON USER ASKS:\n- Recent Balances calls\n- Polkadot calls with emitted events\n\nFIRST CHOICE FOR:\n- raw Substrate or Polkadot call rows, especially when you want the events emitted by those calls\n\nWHEN TO USE:\n- You need raw call records on a Substrate network.\n- You want pallet call activity like Balances.transfer_keep_alive or Ethereum.transact.\n- You want calls plus the events emitted by those calls.\n\nDON'T USE:\n- You want events or aggregate analytics rather than call rows.\n\nEXAMPLES:\n- Recent Balances calls: {\"network\":\"polkadot\",\"timeframe\":\"1h\",\"call_names\":[\"Balances.transfer_keep_alive\"],\"limit\":20}\n- Polkadot calls with emitted events: {\"network\":\"polkadot\",\"timeframe\":\"1h\",\"call_names\":[\"ParaInherent.enter\"],\"include_events\":true,\"limit\":20}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Substrate network name or alias. Optional when continuing with cursor.","type":"string"},"timeframe":{"description":"Time range (e.g. '1h', '24h'). Alternative to from_block/to_block.","type":"string"},"from_block":{"description":"Starting block number","type":"number"},"to_block":{"description":"Ending block number","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"6h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"call_names":{"description":"Optional qualified call names like Timestamp.set or Balances.transfer_keep_alive","type":"array","items":{"type":"string"}},"include_subcalls":{"default":false,"description":"Attach direct descendant calls inline for each matching call","type":"boolean"},"include_extrinsic":{"default":false,"description":"Attach the parent extrinsic inline for each matching call","type":"boolean"},"include_stack":{"default":false,"description":"Attach the parent call stack for each matching call","type":"boolean"},"include_events":{"default":false,"description":"Attach events emitted directly by each matching call","type":"boolean"},"response_format":{"description":"Response format: defaults to 'compact' for chat-friendly output. Compact mode keeps requested subcalls, events, and extrinsic context in a smaller inline shape.","type":"string","enum":["full","compact","summary"]},"limit":{"default":10,"description":"Max calls to return (max: 10; use compact mode for context-rich rows)","type":"integer","minimum":1,"maximum":10},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_substrate_query_events","description":"Query raw Substrate or Polkadot event rows with pallet/event-name filters and optional parent call or extrinsic context.\n\nCOMMON USER ASKS:\n- Balances.Transfer events on Polkadot\n\nFIRST CHOICE FOR:\n- raw Substrate or Polkadot event rows with optional parent call or extrinsic context\n\nWHEN TO USE:\n- You need raw event records on a Substrate network.\n- You want pallet-level event activity like Balances.Transfer or Contracts.ContractEmitted.\n- You want event rows first, even if the network is a Polkadot-family chain.\n\nDON'T USE:\n- You want calls or aggregate analytics rather than event rows.\n\nEXAMPLES:\n- Balances.Transfer events on Polkadot: {\"network\":\"polkadot\",\"timeframe\":\"1h\",\"event_names\":[\"Balances.Transfer\"],\"limit\":20}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Substrate network name or alias. Optional when continuing with cursor.","type":"string"},"timeframe":{"description":"Time range (e.g. '1h', '24h'). Alternative to from_block/to_block.","type":"string"},"from_block":{"description":"Starting block number","type":"number"},"to_block":{"description":"Ending block number","type":"number"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"6h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"event_names":{"description":"Optional qualified event names like Balances.Transfer or System.ExtrinsicSuccess","type":"array","items":{"type":"string"}},"include_extrinsic":{"default":false,"description":"Attach the parent extrinsic inline for each matching event","type":"boolean"},"include_call":{"default":false,"description":"Attach the emitting call inline when the event has call context","type":"boolean"},"include_stack":{"default":false,"description":"Attach the parent call stack when the event has nested call context","type":"boolean"},"response_format":{"description":"Response format: defaults to 'compact' for chat-friendly output. Compact mode keeps requested extrinsic or call context in a smaller inline shape.","type":"string","enum":["full","compact","summary"]},"limit":{"default":10,"description":"Max events to return (max: 10; use compact mode for context-rich rows)","type":"integer","minimum":1,"maximum":10},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_tron_query_logs","description":"Query raw Tron (TVM) event logs by contract address and topics with common event aliases, the parent transaction hash on every row, and optional inline decoding.\n\nCOMMON USER ASKS:\n- Recent USDT transfers on Tron\n- USDT transfers received by one wallet\n\nFIRST CHOICE FOR:\n- TRC-20 token transfer events on Tron such as USDT\n- contract event evidence on Tron with the parent transaction hash\n\nWHEN TO USE:\n- You need TRC-20 Transfer or Approval events for a token such as USDT on Tron.\n- You need event logs from a Tron contract filtered by topic signature or indexed address.\n- You want the exact transaction hash behind each Tron event.\n\nDON'T USE:\n- You want native TRX transfers or contract calls; use portal_tron_query_transactions.\n- You need an Ethereum-compatible network; use portal_evm_query_logs.\n\nEXAMPLES:\n- Recent USDT transfers on Tron: {\"network\":\"tron-mainnet\",\"timeframe\":\"5m\",\"addresses\":[\"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t\"],\"event\":\"transfer\",\"decode\":true,\"limit\":20}\n- USDT transfers received by one wallet: {\"network\":\"tron-mainnet\",\"from_block\":84000000,\"to_block\":84000100,\"addresses\":[\"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t\"],\"event\":\"transfer\",\"topic2\":[\"TJLuVi6UhS3UTx5EUXNCoz9VNqP2gnPmyf\"],\"decode\":true,\"limit\":20}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name (default: tron-mainnet). Optional when continuing with cursor.","type":"string"},"from_block":{"description":"Starting block number","type":"number"},"to_block":{"description":"Ending block number. Tron produces a block every 3 seconds.","type":"number"},"timeframe":{"description":"Time range (e.g., '5m', '1h'). Alternative to from_block/to_block.","type":"string"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"addresses":{"description":"FILTER: emitting contract addresses in any form (Base58 T..., 41-prefixed hex, 0x or bare 20-byte hex). Always include this or topic0 for fast queries.","type":"array","items":{"type":"string"}},"event":{"description":"FILTER: common event alias (transfer, approval, swap, mint, burn) or a topic0 hash. Merges with topic0.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"topic0":{"description":"FILTER: event signature hashes, with or without 0x.","type":"array","items":{"type":"string"}},"topic1":{"description":"FILTER: indexed parameter 1 (often the sender). An address in any form is padded to a topic.","type":"array","items":{"type":"string"}},"topic2":{"description":"FILTER: indexed parameter 2 (often the recipient). An address in any form is padded to a topic.","type":"array","items":{"type":"string"}},"topic3":{"description":"FILTER: indexed parameter 3.","type":"array","items":{"type":"string"}},"include_transaction":{"default":false,"description":"Attach the parent transaction (type, caller, contract, result, fee). The hash is always attached.","type":"boolean"},"decode":{"default":false,"description":"Decode known event signatures inline with Base58 addresses","type":"boolean"},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"max_scan_blocks":{"description":"Safety cap for filtered latest-first scans. Default: min(window, 50000).","type":"integer","minimum":1,"maximum":500000},"response_format":{"description":"Response format: defaults to 'compact' for chat-friendly output. Use 'summary' for counts by contract and event.","type":"string","enum":["full","compact","summary"]},"limit":{"default":20,"description":"Max logs to return (default: 20, max: 25)","type":"integer","minimum":1,"maximum":25},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"portal_tron_query_transactions","description":"Query raw Tron transactions: native TRX transfers, TRC-10 asset transfers, TriggerSmartContract calls by contract and method, or any contract type, with optional inline logs and internal transactions.\n\nCOMMON USER ASKS:\n- Recent native TRX transfers\n- USDT transfer calls in a block window\n- TRX sent from one wallet\n\nFIRST CHOICE FOR:\n- native TRX transfers, TRC-10 transfers, and smart-contract calls on Tron\n- who sent TRX to an address on Tron, or which wallets called a Tron contract\n\nWHEN TO USE:\n- You need raw Tron transaction records with sender, recipient, amount in TRX, fee, energy, and success.\n- You want native TRX transfers to or from a wallet in a bounded window.\n- You want calls to a Tron contract such as USDT filtered by method (transfer, approve) or caller.\n- You want TRC-10 asset transfers by asset id.\n\nDON'T USE:\n- You need TRC-20 token events; those are logs, so use portal_tron_query_logs.\n- You need an Ethereum-compatible network; use portal_evm_query_transactions.\n\nEXAMPLES:\n- Recent native TRX transfers: {\"network\":\"tron-mainnet\",\"timeframe\":\"5m\",\"kind\":\"transfer\",\"limit\":20}\n- USDT transfer calls in a block window: {\"network\":\"tron-mainnet\",\"from_block\":84000000,\"to_block\":84000010,\"contract_addresses\":[\"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t\"],\"method\":\"transfer\",\"limit\":20}\n- TRX sent from one wallet: {\"network\":\"tron-mainnet\",\"timeframe\":\"1h\",\"kind\":\"transfer\",\"from_addresses\":[\"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t\"],\"limit\":20}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"network":{"description":"Network name (default: tron-mainnet). Optional when continuing with cursor.","type":"string"},"from_block":{"description":"Starting block number","type":"number"},"to_block":{"description":"Ending block number. Tron produces a block every 3 seconds.","type":"number"},"timeframe":{"description":"Time range (e.g., '5m', '1h'). Alternative to from_block/to_block.","type":"string"},"from_timestamp":{"description":"Starting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"1h ago\".","anyOf":[{"type":"number"},{"type":"string"}]},"to_timestamp":{"description":"Ending timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like \"now\".","anyOf":[{"type":"number"},{"type":"string"}]},"kind":{"default":"auto","description":"Which Tron transaction family to query: transfer (native TRX), transfer_asset (TRC-10), trigger_smart_contract (contract calls), all (any contract type, filter by types only). auto picks from the filters you pass.","type":"string","enum":["auto","all","transfer","transfer_asset","trigger_smart_contract"]},"types":{"description":"FILTER (kind=all): Tron contract types such as TransferContract, TriggerSmartContract, DelegateResourceContract.","type":"array","items":{"type":"string"}},"from_addresses":{"description":"FILTER: sender or caller addresses. Accepts Base58 (T...), 41-prefixed hex, or 0x/bare 20-byte hex.","type":"array","items":{"type":"string"}},"to_addresses":{"description":"FILTER (transfer, transfer_asset): recipient addresses in any accepted form.","type":"array","items":{"type":"string"}},"contract_addresses":{"description":"FILTER (trigger_smart_contract): called contract addresses in any accepted form, e.g. USDT.","type":"array","items":{"type":"string"}},"method":{"description":"FILTER (trigger_smart_contract): method alias such as transfer, approve, transferFrom, or a 4-byte sighash.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"sighash":{"description":"FILTER (trigger_smart_contract): 4-byte method selectors, with or without 0x. Merges with method.","type":"array","items":{"type":"string"}},"asset":{"description":"FILTER (transfer_asset): TRC-10 asset id such as 1005157, or the raw hex asset name.","type":"array","items":{"type":"string"}},"include_logs":{"default":false,"description":"Attach the event logs each transaction emitted","type":"boolean"},"include_internal_transactions":{"default":false,"description":"Attach the internal transactions of each transaction","type":"boolean"},"finalized_only":{"default":false,"description":"Only query finalized blocks","type":"boolean"},"max_scan_blocks":{"description":"Safety cap for filtered latest-first scans. Default: min(window, 50000).","type":"integer","minimum":1,"maximum":500000},"response_format":{"description":"Response format: defaults to 'compact' for chat-friendly output. Use 'summary' for counts by type, TRX moved, and top callers.","type":"string","enum":["full","compact","summary"]},"limit":{"default":20,"description":"Max transactions to return (default: 20, max: 25)","type":"integer","minimum":1,"maximum":25},"cursor":{"description":"Continuation cursor from a previous response","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"}}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-20T11:38:19.833Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:38:19.770Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1010ms"]},"poisoning":{"score":15,"max":15,"notes":["31 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 12 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"probes":[{"url":"https://portal.sqd.dev/mcp","reachable":true,"authRequired":false,"latencyMs":1010,"serverInfo":{"name":"sqd-portal-mcp-server","version":"0.8.5"}}],"packages":[],"repo":{"found":true,"owner":"subsquid-labs","repo":"portal-mcp-server","archived":false,"pushedAt":"2026-09-08T10:20:29Z","stars":1,"forks":0,"openIssues":1,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/124579143?v=4","ownerCreatedAt":"2023-02-06T11:38:30Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/124579143?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-08T10:20:29.000Z","score":26}}}},"grade_history":[],"reviews":[]}