API Tools
blockchain.ai
A read-only Solana GraphQL data API MCP server for querying blockchain market snapshots, token counts, and transaction, account, or block lookups.
ENDPOINT 1
https://graph.blockchain.ai/mcp
MCP server metadata
- Name
- graph.blockchain.ai
- Version
- 1.1.51
This is a read-only, schema-bound Solana and CEX reference-price data server. Prefer the operation-specific tools for normal requests. Use get_instructions or graph://schema/full only when exact fields, caveats, or a lower-level GraphQL query are needed. When the user supplies an unidentified Solana transaction signature, account address, or numeric slot, call find_hash first. It combines exact indexed probes with bounded Solana RPC discovery and returns routing kinds plus machine-readable drilldowns. Specific token, pool, and reviewed-program roles take precedence over generic account and wallet fallbacks; do not infer unreturned specific roles. A syntactically valid input always receives at least one routing record, but a generic fallback record alone does not prove indexed coverage or on-chain existence. Read rpcInfo.confirmationStatus: indexed matches with a known slot report confirmed while newer than the shared cached finalized cluster head and finalized once covered; unresolved identifiers obtain status from RPC. Set includeRpcInfo=true only when the complete native type-specific payload is needed; transaction runtime logs remain inside the unfiltered rpcInfo.rpcResult at meta.logMessages. The documentation contains no query result rows. Query and /read responses are near-real-time indexed snapshots and may lag source events slightly; GraphQL subscriptions stream provisional events as they arrive. Claim current Blockchain.ai values only after an MCP tool, /read operation, or GraphQL POST returned the relevant rows. Browser-only readers should use allowlisted /read/{operation} routes, not encode GraphQL syntax into GET URLs. For block navigation, use list_blocks to discover recent indexed block summaries, get_block for one known slot, and list_block_transactions to discover indexed transaction signatures in that slot. Batch signatures through get_transaction_activity for indexed transaction flows, trades, and transfers, and through get_transactions for fee, compute, Jito-tip, or a flat program-interaction list. Block summaries are a public indexed view, not the canonical indexer's internal checkpoint dataset. Transaction counts and aggregates are indexed coverage, not guaranteed RPC-complete historical block contents; block hashes and heights are not currently exposed. get_transaction_activity is the wallet-independent activity drilldown. It resolves transaction hashes through indexed transaction metadata and can return fee plus the sibling memos array, then reads bounded program invocations, DEX trades, and token transfers as selected. Selecting flow requires all three activity kinds; without flow, top-level trade and transfer reads remain independently field-selected. In flow, each outer instruction is a root and stackHeight reconstructs CPI children; the standardized lowercase type identifies swap, lifecycle/token operation, transfer, or plain program_invocation activity. Transfers attach to exact instruction coordinates, while confidently matching trade perspectives annotate the invocation that performed the swap instead of becoming synthetic flow entries. Flow arrays are contextual placements of the same source facts exposed by top-level trades/transfers, so never add both representations. Ambiguous trade rows remain available in the top-level trades array and are not forced onto a flow node. Transfers are physical movement facts without a wallet-relative direction. Their intent field is the decoded movement mechanism, not a recipient-purpose inference; historical unreplayed rows use unknown. Trade rows can repeat one operation from multiple token perspectives. Transfer historicalPriceUsd/historicalValueUsd use the last retained fair close within 30 days at or before the block minute; currentPriceUsd/currentValueUsd use current indexed token prices. Technical Inner and UnresolvedInner trade layers are excluded unless includeInnerSwaps is true. programName is enriched from indexed and reviewed labels plus canonical built-ins. instructionName is the indexer-parsed name and remains null when unresolved; instructionDiscriminator preserves up to eight raw instruction-data bytes as lowercase hex and is not an ABI decode. Use get_transactions to enrich any result containing txHash with indexed fee, compute-budget, Jito-tip, Token-2022 fee, Memo Program content, activity-count, and ordered program-interaction details. Batch hashes rather than calling once per row; 25 to 100 hashes per request is recommended and 100 is the maximum. Explorer links use explicit identifier pairs: txHash/txExplorerUrl, mint/mintExplorerUrl, poolAddress/poolExplorerUrl, programId/programExplorerUrl, blockSlot/blockExplorerUrl, and equivalent field-specific names for wallets, vaults, owners, authorities, and token accounts. Operations exposing links accept explorer, default to SOLSCAN, and currently support Solscan only. The browser Graph Explorer's None choice is client-side query shaping that omits the explorer argument and every selected explorer-URL field; NONE is not a GraphQL enum value and must not be sent by raw GraphQL or MCP clients. Generic explorerUrl fields are deprecated compatibility aliases where retained. For get_transactions fees, totalFeeLamports is the authoritative Solana runtime network fee. Jito tips and Token-2022 transfer fees are separate movements. Use baseFeeLamports and prioritizationFeeLamports only when feeBreakdownStatus is exact; legacy or unresolved null splits mean unknown, not zero. In get_transactions, fee.walletFacingDexSwapCount and fee.hasWalletFacingDexSwap describe wallet-facing dex_swaps source rows only. They are not general DEX-activity classifiers: a route-only MEV transaction can have zero/false while list_wallet_activity contains tradeLayer MEV/Inner rows for the same txHash. Keep wallet/DEX activity rows authoritative for that classification. dexSwapCount and isTrade are deprecated compatibility aliases. For questions about what a wallet did, use list_wallet_activity as the primary history source. Its activity array is selected by period or slot, while metadata.currentHoldings is interval-independent effective state. When server-side wallet RPC resolution is enabled, eligible period queries for locally unseen wallets automatically compare indexed holdings with a current RPC snapshot and persist INDEXED or BEFORE_INDEXED in durable instance-local recovery state. A BEFORE_INDEXED request queues RPC balance-delta recovery only for the requested slice before metadata.coverage.indexedFromAt; the foreground response remains indexed-only until durable background recovery completes. A period wholly inside measured indexed coverage does not queue activity-slice recovery. source distinguishes INDEXED from RPC_BALANCE_DELTA activity. When the operator kill switch is disabled, these fields return indexed-only data. Use metadata.coverage to interpret the retained indexed boundary. In wallet activity results, token transfers are authoritative for amounts that actually entered or left the queried wallet. Transfer intent describes the decoded movement mechanism, while direction describes its relationship to the queried wallet; intent does not infer the wallet's business purpose. Historical unreplayed and RPC balance-delta rows use unknown. Trade rows provide DEX, pool, side, price, and execution context, but the same swap may appear from both token perspectives or at multiple operationIndex values. operationIndex aliases opIndex for trades and instructionIndex for transfers. Do not sum trade volumeUsd rows to calculate wallet cash flow or P&L. Use transfer historicalValueUsd for event-time USD and currentValueUsd only for present-day mark-to-market; both are unsigned, so apply direction for external wallet flow. Historical transfer valuation is not capped by the rolling candle-query cache. It performs a field-selected lookup against a separate full-retention local fair-close cache and falls back to remote token_fair_ohlcv_1m while that cache catches up or when a mint has no covered local price. historicalPriceSourceMinute exposes the actual retained minute used and can precede the block minute by up to 30 days. Historical fields are null when neither source has a fair price in that window; never substitute the current price for a missing historical value. For one point-in-time token valuation, including timestamps older than tokenCandles retention, use get_token_price_usd_at. It applies the same full-retention fair-close path as transfer historical valuation and returns priceSourceMinute so a carried older price is explicit. It returns null price fields when no fair close exists within 30 days at or before the requested timestamp; it never substitutes current price or looks forward. The returned price uses the current Token-2022 UI multiplier by default, not the multiplier at the requested time; set adjustForUiMultiplier=false for source units. For chart-ready historical OHLCV, use get_dex_token_candles with continuous true, which is the default. It carries the latest available close through missing buckets to the requested end, sets OHLC/VWAP to that close, sets all volume fields and sampleCount to zero, and returns newest first. The seed close may predate the requested window, but its source candle is not returned and it does not extend lookback. Set continuous false when only observed fair 1-minute rows are acceptable. confirmedTokenChanges is a GraphQL websocket subscription for full token snapshots emitted after token_stats commits. Omit changeType or use ALL for every snapshot, PRICE for priceUsd/fairPriceUsd transitions, or GRADUATION for null-to-known graduationAt transitions. Live-only explicit mint filters can compare the first newer event with a cached token price; global and replay subscriptions require a prior streamed event, and fair-price-only first changes cannot be detected from that cache. Returned token-unit prices use the current Token-2022 UI multiplier by default; change detection still uses source values. It is a best-effort low-latency notification feed, not an audit log or sole durable authority. Compare its exact decimal-string version as UInt64 per mint, ignore repeated or lower versions, and periodically reconcile durable state through token/tokens queries. To identify the exchange venue for a trade, normally resolve trade.poolAddress with list_pools(poolAddresses: [poolAddress]), read pool.programId/programName, and pass pool.programId to get_program. The exact poolAddress value 'Ondo RWA' is instead a virtual execution-venue label: it has no physical pool row, pair legs, vaults, TVL, or pool explorer URL. aggregatorProgram identifies an aggregator or router when present; it is not the physical pool venue. Group wallet activity by txHash. For net wallet movement per mint, sum INBOUND transfer amounts and subtract OUTBOUND transfer amounts. SELF transfers represent internal wrapping, unwrapping, or account movement and are not external wallet flow. AUTHORITY_ONLY means the wallet authorized the transfer without being its source or destination owner. Retain non-DeFi transfers, burns, and small transfers to third parties when reconstructing wallet behavior; they can represent funding, cleanup, taxes, router fees, or referral fees. NativeSOL and wrapped SOL are distinct assets. Wallet activity requires exactly one selector: period for a UTC range or slot for one exact Solana block slot. Never send both. The endpoint has no cursor or skip argument. For complete high-volume history, query consecutive smaller periods in ASC order, overlap period boundaries slightly, and deduplicate by (blockSlot, txHash). The indexed wallet history is not a generic Solana RPC decoder. Pass returned txHash values to get_transactions for indexed network-fee, priority-fee, Jito-tip, compute, and program-interaction enrichment. Native-SOL-only movement transactions are eligible for that enrichment. get_transactions does not embed source, destination, or amount movement rows, and execution success/error is not currently exposed. Use cex.consensusPrice only for cross-venue CEX VWAP reference prices and reference volume. For Solana token pools, liquidity pools, backing pools, paired pools, or where token liquidity sits, resolve human token names with search_tokens and use list_pools rather than web search. Do not invent fields or capabilities. This server cannot trade, access wallet keys, sign transactions, mutate wallets, forecast prices, browse external APIs, or inspect arbitrary Solana RPC data. If a requested capability is not exposed by the tools or /graphql/schema, say it is unavailable.
Known tools 35
get_instructionsReturn task-specific instructions for this read-only Solana GraphQL data API, including allowed operations, caveats, and example queries.
Inferred read-onlyquery_graphqlExecute one read-only GraphQL query against https://graph.blockchain.ai/graphql.
Potential side effectsget_market_snapshotRead one internally consistent per-minute market snapshot for dashboard headline metrics.
Inferred read-onlyget_market_token_countCount distinct token mints matching the same current-state filters as tokensExt and report how many were first seen inside a trailing window.
Inferred read-onlyfind_hashResolve one exact Solana transaction signature, account address, or numeric block slot through indexed Graph sources and bounded Solana RPC discovery.
Inferred read-onlysearch_tokensRead grouped token autocomplete matches by symbol, name, description, or mint-like input.
Inferred read-onlylist_tokensRead current-state token_stats-backed Solana token rows by mints, filters, ordering, and pagination.
Inferred read-onlylist_tokens_extRead and screen token rows using current token fields, physical token_stats conversion-path anchored TVL, trailing 5m/1h/6h/24h DEX windows, holder stats including a user-only top-holder ranking, earliest observed DeFi appearance, and minimum 24h fair-volume/anchored-TVL thresholds.
Inferred read-onlylist_token_lifecycleRead token lifecycle dimensions from tokensExt: firstSeenAt launch proxy, launchpad, didGraduated, holder count, and total holdings.
Inferred read-onlyget_blockGet one indexed Solana block summary by slot with aggregates over transaction records indexed by this service.
Inferred read-onlylist_block_transactionsList transaction signatures indexed for one Solana block, ordered by transactionIndex, with skip/limit pagination.
Inferred read-onlyget_transaction_activityBatch-fetch wallet-independent indexed transaction fees and Memo Program instructions, program flow, DEX trades, physical token transfers, and retained transaction-boundary token-account balances for known transaction signatures.
Inferred read-onlyget_transactionsBatch-enrich known Solana transaction signatures, including native-SOL-only movement transactions, with indexed fee, compute-budget, Jito-tip, Token-2022 fee, activity-count, and ordered program-interaction details.
Inferred read-onlyget_transaction_coverageMeasure independent retained coverage for transaction fees/resources, ordered program interactions, canonical account evidence, DEX trades, liquidity events, physical token transfers, and fair candles.
Inferred read-onlyget_dex_token_statsRead aggregated DEX token price and volume stats for an explicit historical time period.
Inferred read-onlyget_token_price_usd_atResolve one token's point-in-time fair USD price from the last retained positive fair close within 30 days at or before a requested timestamp.
Inferred read-onlyget_dex_token_candlesRead historical DEX fair-price OHLCV candles for one token mint, always ordered newest first.
Inferred read-onlyget_dex_token_transactionsRead historical top-level DEX operations and optional liquidity add/remove events for one token mint, newest first.
Potential side effectsget_dex_pool_transactionsRead deduplicated historical operations for one physical pool or recognized virtual execution venue, newest first.
Inferred read-onlyget_dex_token_activityRead top-level trade activity counters for one token mint over a required period: operation count, distinct active wallets, buy count, and sell count.
Potential side effectsget_dex_pool_statsRead a compact deduplicated trailing-window snapshot for one physical pool or recognized virtual venue.
Inferred read-onlyget_dex_pool_liquidity_statsBatch trailing-24h liquidity-provider and deduplicated trade metrics for explicit physical pool addresses.
Potential side effectslist_poolsRead Solana pool market rows by address, participant mint selection, graduation filters, lifecycle windows, and ordering.
Inferred read-onlyget_programRead metadata for one known Solana exchange program id from the reviewed program dictionary.
Inferred read-onlylist_programsRead known Solana exchange programs with reviewed behavior attributes from the metadata dictionary.
Inferred read-onlylist_wallet_activity_rowsRead only the indexed wallet activity transaction array for exactly one UTC period or exact slot.
Inferred read-onlylist_wallet_activityPrimary history tool for questions about what a Solana wallet did, including buys, sells, transfers, burns, funding paths, exits, fees, and suspicious activity.
Inferred read-onlylist_wallet_current_holdingsRead non-zero effective token holdings for one Solana wallet.
Inferred read-onlylist_token_holdersList current indexed holder-wallet rows for one Solana token, ordered by current token amount or combined DeFi activity.
Inferred read-onlyget_cex_consensus_priceRead cross-venue one-minute CEX consensus VWAP reference prices.
Inferred read-onlyget_tokenized_equitiesRead preferred Solana RWA listings from Hero Business with optional FMP underlying quotes and share counts.
Inferred read-onlylist_tradersList current trader profiles that have at least one validated configured wallet.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.graph-blockchain-ai]
url = "https://graph.blockchain.ai/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"graph-blockchain-ai": {
"type": "http",
"url": "https://graph.blockchain.ai/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: graph-blockchain-ai
Remote MCP URL: https://graph.blockchain.ai/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"graph-blockchain-ai": {
"url": "https://graph.blockchain.ai/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"graph-blockchain-ai": {
"type": "http",
"url": "https://graph.blockchain.ai/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "graph-blockchain-ai",
"transport": "streamable-http",
"url": "https://graph.blockchain.ai/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Trust Data Available
BuiltWith Trust API v2 evidence for blockchain.ai was fetched 2026-09-29T17:49:44.478Z.
blockchain.ai is assessed as Trusted: Domain has an established technology history spanning over a year.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.