coin-scout
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HELIUS_HTTP2 | No | Disable to force HTTP/1.1. | true |
| HELIUS_API_KEY | Yes | Your Helius API key. Required. | |
| HELIUS_NETWORK | No | Either `mainnet` or `devnet`. | mainnet |
| HELIUS_MAX_RETRIES | No | Retries for single (non-batched) requests. | 6 |
| COIN_SCOUT_CASES_DIR | No | Where case files are stored. | ~/.coin-scout/cases |
| COIN_SCOUT_MAX_PAGES | No | Hard cap on pagination loops. | 20 |
| HELIUS_CACHE_ENTRIES | No | LRU cache capacity. | 20000 |
| HELIUS_MAX_BATCH_SIZE | No | Upper bound for JSON-RPC batching. | 20 |
| HELIUS_BATCH_WINDOW_MS | No | Coalescing window for JSON-RPC micro-batching. | 4 |
| HELIUS_MAX_CONCURRENCY | No | Ceiling on in-flight HTTP requests. | 24 |
| COIN_SCOUT_MAX_TRACE_NODES | No | Hard cap on `trace_funds` graph size. | 400 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| chain_statusA | Current Solana slot, epoch, block height and recommended priority fee. Cheap orientation call — use it to anchor timestamps and confirm the RPC is healthy. |
| get_balancesA | SOL and SPL token balances for one or more wallets, with USD value where Helius prices the token. Use this before any transfer or portfolio question. |
| get_accountB | Raw + parsed on-chain account state for any address: lamports, owning program, executable flag and parsed data (mint config, token account, stake, etc). Use this to tell a wallet from a PDA, a mint or a program. |
| get_transactionsA | Helius enhanced (human-readable) parse of up to 100 signatures: type, source protocol, description, native + token transfers, swap events and per-account balance deltas. This is the primary way to understand what a transaction actually did. |
| get_transaction_rawA | Full raw jsonParsed transaction including logMessages, inner instructions, compute units and pre/post balances. Use only when the enhanced parse in get_transactions is not enough (custom programs, failure debugging). |
| get_transfersA | Parsed SOL + SPL transfer feed for a wallet with server-side filters: counterparty, direction, mint, time and slot range. The fastest primitive for fund-movement questions — prefer it over walking signatures. |
| get_transaction_historyA | Signature-level history for an address with slot/time/status filters and cursor pagination. Use when you need coverage of every transaction touching an address, not just transfers. |
| get_swapsA | Normalized DEX swap history for a wallet: what was sold, what was bought, venue and fee per trade, plus a per-mint net-position summary. Use for trading behaviour, wash-trading and PnL groundwork. |
| get_token_holdersA | Paginated list of every token account for a mint with owner and balance. Use for holder-distribution work beyond the top-20 that analyze_token returns. |
| get_assetsB | Digital Asset Standard lookup: one asset by mint, or every asset held by an owner. Covers NFTs, compressed NFTs, fungible tokens and Token-2022, with metadata, authorities, creators, royalties and price. |
| search_assetsA | Flexible DAS query across owner, creator, collection, compression state and token type. Use to enumerate a scammer's mints, a collection's supply, or every token a wallet ever created. |
| get_asset_activityA | Every transaction signature that touched a COMPRESSED NFT (Bubblegum tree asset), oldest to newest. Use to reconstruct a cNFT's mint-and-sale chain of custody. Fungible mints and standard NFTs are not indexed here — use get_transaction_history or get_transfers for those. |
| solana_rpcA | Escape hatch: call any read-only Solana JSON-RPC or Helius DAS method directly when no dedicated tool fits. Write methods (sendTransaction, requestAirdrop) are rejected. |
| server_metricsA | coin-scout transport stats: HTTP requests issued, JSON-RPC batch compression, retries, cache hit rate and adaptive rate-limit state. Use to explain slow responses or confirm caching is working. |
| analyze_walletA | One-call wallet profile: portfolio value, holdings, first/last activity, in/out flow shape, top counterparties, earliest funders and heuristic risk flags (fresh wallet, single funder, fan-in/fan-out, frozen assets). Start every wallet investigation here. |
| analyze_tokenA | Rug-pull and manipulation screen for an SPL mint: live mint/freeze authority, metadata mutability, supply, FDV, holder count, top-holder concentration (top1/top10/HHI) with program-owned pools separated from real holders, plus a 0-100 risk score and explicit flags. |
| trace_fundsA | Breadth-first fund-flow graph from a wallet, forwards (where money went) or backwards (where money came from), up to N hops. Returns nodes, weighted edges, terminal sinks and detected circular flows. The core tool for following stolen or laundered funds. |
| find_clusterA | Start from one wallet and discover the other wallets likely controlled by the same actor: who pays its fees, who co-signs with it, where its token-account rent goes, which wallets share its funder, plus same-slot activity, creation time and timing similarity. Returns scored members with the signature evidence for each signal. Use compare_wallets instead when you already have the candidate list. |
| follow_bridgeA | Resolve where funds went when they left Solana (or where they came from when they arrived) through Wormhole, deBridge or Mayan: other chain, recipient address, amounts and the transaction hash on the other chain. Pass signatures, or an address to scan its recent history for bridge transactions. trace_funds already resolves the crossings it meets. |
| wallet_pnlA | Realized and unrealized PnL per token from a wallet's DEX swaps, valued in USD at the time of each swap (average-cost basis). Answers "did this wallet profit from the rug" (pass mint), sniper/insider profit, and overall trading results. Sales of tokens never bought in the sample (airdropped, sent by a dev wallet, bought before the sample) are reported as unmatchedProceedsUsd and realizedPnlIfUnboughtFreeUsd instead of realized PnL — check those for insiders. With mint set, receivedWithoutSwap lists who sent the wallet that token for free. |
| find_counterpartiesA | Rank every address a wallet transacted with over a transfer sample, split by inbound/outbound count and per-mint volume, with first/last contact. Use to spot the funder, the sink, or the one address a wallet keeps cycling with. |
| compare_walletsA | Sybil / co-ownership check across 2-10 wallets: direct transfers between them, shared funders, counterparty-set Jaccard overlap and a 0-100 link strength per pair. Use to test whether separate addresses are the same actor. |
| investigate_transactionA | Deep dive on one signature: enhanced parse, net SOL/token delta per account, every mint involved screened for rug risk, and a profile of the fee payer. Use when a single transaction is the starting point of an investigation. |
| case_updateA | Create a case or add to it: summary, address labels with confidence and evidence signatures, and dated notes (findings, leads, retractions). Labels are shown by every other tool from then on, across sessions and cases. |
| case_readA | With no arguments, list every case. With address, search all cases for prior labels, notes and saved traces mentioning it — do this before starting on any address. With case, return that case's labels, notes and an index of saved artifacts; add artifactId to get one saved trace, cluster or bridge result in full. |
| case_exportA | Write the case to disk as report.md (labels, notes, tables, Mermaid diagrams) plus one standalone SVG fund-flow diagram per saved trace or cluster, ready to drop into a report. Returns the file paths. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| investigate_address | Structured fraud/AML workflow for a suspicious Solana wallet |
| screen_token | Pre-trade due diligence workflow for an SPL mint |
| trace_stolen_funds | Follow funds out of an exploited account toward cash-out points |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
Tools mostly target distinct resource+action pairs, and descriptions actively guide selection (e.g. find_cluster explicitly says to use compare_wallets when you already have candidates; get_transfers is 'prefer over walking signatures'). However the transaction cluster (get_transactions, get_transaction_history, get_transaction_raw, investigate_transaction) and the transfer/swap family (get_transfers, get_swaps, get_transaction_history) overlap enough that an agent could still hesitate.
Predominantly consistent snake_case with a verb_noun or get_noun pattern (get_balances, get_swaps, analyze_wallet, trace_funds, find_cluster, case_update/read/export). Minor deviations: a few noun-only names (chain_status, server_metrics, wallet_pnl, solana_rpc) break the verb-first convention, but overall the pattern is predictable.
At 26 tools this is on the heavy side for a single server, which typically signals bloat. Here the domain (Solana on-chain forensics across transactions, tokens, assets, tracing, clustering and cases) is genuinely broad and each tool appears to earn its place, so it lands just shy of ideal rather than excessive.
The surface covers the full investigation lifecycle: orientation (chain_status, get_balances, get_account), transaction parsing at multiple granularities, token/asset inspection, wallet and token risk analysis, fund tracing, clustering, bridging, PnL, and a complete case CRUD (case_update, case_read, case_export). A read-only solana_rpc escape hatch closes the remaining gaps, leaving no obvious dead ends.