MCP server
Point Claude, Cursor or any MCP client at the API — Solana market data for AI agents, zero glue code.
Quanaris ships a first-party Model Context Protocol (MCP) server, so Claude, Cursor, Windsurf or any MCP-capable agent can query Solana market data as native tools. It's a remote Streamable-HTTP server — nothing to install or run locally:
https://www.quanaris.com/mcp
Every tool proxies the real REST API in-process — same auth, same per-plan rate limits, same serializers — and the same honesty rules apply: a mint this instance doesn't index returns an explicit empty/null payload, never a fabricated number.
Authentication
Public tools answer without a key. Send your API key as the x-api-key header to unlock the gated tools (top traders, wallet PnL, register_token / list_my_tokens) and your plan's higher rate limits. Get a key from the dashboard.
Claude Code
claude mcp add --transport http quanaris https://www.quanaris.com/mcp --header "x-api-key: YOUR_KEY"
Cursor
Add to Cursor in one click, or paste into ~/.cursor/mcp.json:
{
"mcpServers": {
"quanaris": { "url": "https://www.quanaris.com/mcp", "headers": { "x-api-key": "YOUR_KEY" } }
}
}
Claude Desktop
Settings → Connectors → Add custom connector with the URL above — or via claude_desktop_config.json using the mcp-remote bridge:
{
"mcpServers": {
"quanaris": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://www.quanaris.com/mcp", "--header", "x-api-key: YOUR_KEY"]
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"quanaris": { "serverUrl": "https://www.quanaris.com/mcp", "headers": { "x-api-key": "YOUR_KEY" } }
}
}
Tools
Generated from the live tool registry — the same list tools/list serves. key marks tools that require an API key.
| Tool | What it does |
|---|---|
get_token_price | Latest USD price for ANY mainnet Solana token mint (the cheapest call). Indexed mints serve this instance's reconciled price (source: quanaris); unindexed mints fall back to a labelled Jupiter spot quote (source: jupiter, indexed: false). |
get_token_overview | Full market snapshot for a token: price, market cap / FDV, liquidity, pools, holder count, price-change and volume over 5m/1h/6h/24h, and 24h buy/sell counts. The one call for a token header. |
get_token_metadata | Core identity for one mint: symbol, name, decimals, logo URI and the latest USD price. Use it to resolve WHAT a mint is before deeper calls; cheaper than get_token_overview when you only need identity. |
get_price_at | The token's USD price at (or just before) a point in time — to value a position at a past moment. Omit 'time' for the latest close. Returns null when the time predates our data, never a fabricated price. |
get_price_history | A lightweight USD price LINE ({unixTime, value} from candle closes) over a window — cheaper than full OHLCV for sparklines, trend questions and portfolio valuation curves. Newest point last. |
get_ohlcv | Reconciled OHLCV candles for a token over any timeframe (newest last). Each bar carries a `confirmed` flag (settled vs provisional). Intervals: 1s,5s,15s,30s,1m,5m,15m,30m,1h,4h,1d (sub-minute needs a paid plan). |
get_price_by_dex | Per-DEX close-price lines for one token — one series per venue (raydium/orca/meteora) with {t, close, USD volume} points, newest last. Compare how different DEXes price the same mint bucket-by-bucket; divergence between venues is the signal. Series are NOT aligned/forward-filled — join on t. Sub-minute 'type' needs a paid plan. |
get_token_trades | Recent normalized swaps for a token (newest first): side, signer, DEX, USD price and volume. Keyset-paginated. |
get_token_metrics | Rolling-window trading metrics for a token: volume, buy/sell counts and buy pressure over the requested hours. |
get_trade_data | The full multi-window activity grid for a token: trades, buys/sells, buy/sell USD volume, unique wallets and price change over 1m/5m/30m/1h/2h/4h/8h/24h — each with its change vs the previous equal window — plus an all-time rollup. Use it for momentum / 'is activity picking up' questions; get_token_metrics is the single-window cheap version. |
get_top_traders key | The wallets that traded a token most over a rolling window, ranked by realized USD volume or trade count, with their buy/sell split and last-trade time. Requires an API key; for one wallet's PnL use get_wallet_pnl. |
get_token_security | On-chain rug-check for a token mint: mint/freeze authority status, top-holder concentration (raw token accounts AND owner-aggregated with pool vaults excluded), supply and program flags. The signal you check before trusting a token. |
get_token_holders | Holder count and top token-account holders (with % of supply, owner wallet and an isPoolVault label for AMM vaults) for a token mint. When countIsFloor is true the count is a lower bound (the bounded crawl hit its cap), not an exact figure. |
get_holders_history | Holder-count time series for a token (one point per holder refresh — the keeper's ~15-min cycle for subscribed mints — ascending, defaulting to the last 7 days). Use it for 'is the holder base growing?' questions; get_token_holders is the current snapshot with top holders. |
get_token_markets | Every pool/market for a token: venue, base/quote, liquidity (on-chain for the dominant Raydium pool), and our 24h volume/trades/unique-wallets per pool. |
get_token_coverage | Trust artifact for a mint: highest confirmed slot, when the contiguity reconciler last checked it, gap windows detected vs repaired, unpriced swaps, and the oldest swap held. Use it to verify the data is contiguous before trusting it. |
get_pair_overview | Snapshot of ONE pool/market by its pool address: venue (raydium/orca/meteora), base/quote sides, latest price, liquidity (on-chain for Raydium AMM v4), and our 24h volume/trades/unique-wallets for that pool. Find pool addresses with get_token_markets first. |
get_pair_trades | Recent swaps for ONE pool (newest first): side, signer, DEX, USD price and volume per trade. Keyset-paginated. Use get_token_trades for the token-wide tape across all its pools. |
get_pair_ohlcv | OHLCV candles for ONE pool, aggregated from that pool's own swaps (a small satellite pool still charts its real activity). Same intervals as get_ohlcv; sub-minute needs a paid plan. |
get_multi_price | Latest USD price for many mints in one call (≤100) — for valuing a portfolio. You pass the mints; this is not token discovery. |
get_platform_stats | Service-wide coverage stats for this instance (no arguments): exact count of tokens indexed, APPROXIMATE swaps ingested, data span (earliest/latest swap) and freshness in seconds. Use it to gauge what this instance covers; the result is cached server-side for ~60s. |
get_wallet_portfolio | A wallet's token holdings valued in USD across the mints this instance indexes (uncovered tokens are returned with a null price, never fabricated). |
get_wallet_token | One token's balance + USD value for a wallet (summed across its token accounts) — cheaper than get_wallet_portfolio when you only care about a single position. |
get_wallet_trades | A wallet's swaps on the tokens this instance indexes (newest first, keyset-paginated): side, token, DEX, USD price and size per trade. Activity on un-indexed tokens is honestly excluded, never invented. |
get_wallet_pnl key | Realized + unrealized PnL for a wallet, per token and aggregate, over the mints this instance indexes (honest about partial coverage). Cost basis is avg-cost BY DEFAULT — set basis:'fifo' for lot-matched. ESTIMATED gas is EXCLUDED by default — set gas:'on' to subtract it from realized PnL. Positions are cross-checked against on-chain balances unless reconcile:false (see summary.reconciled). Requires an API key (Scale+ for the signed receipt). |
register_token key | Subscribe a token mint so this platform starts indexing it (live tracking + a historical backfill when the mint is new to the platform). Consumes one of the caller's plan mint slots; returns subscription status, the backfill plan and slot usage. Requires an API key — use it when the caller asks to track/index a mint that get_token_price reports as not indexed. |
list_my_tokens key | The caller's subscribed mints with symbol/name/logo, tracking status, backfill progress and lock window, plus slot usage and the estimated monthly cost. Requires an API key. Use it to answer 'what am I tracking?' or before register_token to check free slots. |
register_token (with your key) subscribes it: live tracking starts immediately and a historical backfill runs when the mint is new to the platform.