SolEnrich

MCP serverAI & models

solenrich adds Solana onchain intelligence to your AI. Once it is added, your AI can check wallet risk, run due diligence, look up perpetuals funding, and follow smart money activity on Solana.

Use SolEnrich in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add SolEnrich and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use SolEnrich to enrich wallet

Details

Available today. Use it from your connected AI after setup.

After adding solenrich, ask your AI to look into a Solana wallet or market you want to understand, such as a risk check or a funding overview.

SolEnrichStart free

What your AI can do with it

  • Check the risk profile of a Solana wallet
  • Run due diligence on Solana activity before you act
  • Look up funding rates on perpetuals markets
  • Follow smart money movements on Solana

Install SolEnrich

The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.

  • Claude Code

    claude mcp add --transport http --scope user solenrich 'https://api.solenrich.com/mcp'

    Run it once in your project, then open /mcp to approve any sign-in the server asks for.

  • Claude Desktop

    https://api.solenrich.com/mcp

    Add a custom connector in Settings, paste this address, and approve the sign-in.

  • Cursor

    cursor://anysphere.cursor-deeplink/mcp/install?name=solenrich&config=eyJ1cmwiOiJodHRwczovL2FwaS5zb2xlbnJpY2guY29tL21jcCJ9

    Open the link and Cursor adds the server at that address.

  • ChatGPT

    https://api.solenrich.com/mcp

    In Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.

  • Codex

    codex mcp add solenrich --url 'https://api.solenrich.com/mcp'

    Run it once, then sign in with codex mcp login solenrich if the server asks for an account.

From the project's README

As published by 0xsardius/solenrich in README.md.

Onchain intelligence for Solana agents. An agent sends one request, pays a small amount of USDC per call over x402 (on Solana or Base, no API key, no account), and gets back a verdict with its evidence — structured JSON, or a short plain-language briefing for an LLM.

Verdicts instead of raw data: SAFE / CAUTION / RISKY for a token, EXIT / DERISK / HOLD for a position, PAYING / STALE / NEVER for a StonkFun reward coin, ESTABLISHED / SERIAL_LAUNCHER for a coin's creator, RISK_ON / NEUTRAL / RISK_OFF for a market. Scoring is deterministic (no LLM in the pipeline), so the same input gives the same answer. Suites cover wallets and tokens, memecoin trenches (entry and exit), smart money, perps across five venues, and StonkFun reward coins. Every endpoint is also a tool on the MCP server.

Live API: https://api.solenrich.com/ Landing Page: https://solenrich.com Docs (agent-readable): https://api.solenrich.com/docs

Quick Start

# Health check
curl https://api.solenrich.com/health

# Agent card (A2A discovery)
curl https://api.solenrich.com/.well-known/agent.json

# List all 51 endpoints (50 paid + 1 free)
curl https://api.solenrich.com/entrypoints

# Full API documentation (agent-readable JSON)
curl https://api.solenrich.com/docs

# Free demo (no payment required, 10 queries/hr)
curl -X POST https://api.solenrich.com/demo/enrich \
  -H "Content-Type: application/json" \
  -d '{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}'

How payment works

  1. The agent calls an endpoint with no payment.
  2. SolEnrich answers 402 Payment Required with a payment-required header: the price, the USDC pay-to address on Solana and on Base, and a real example of the response.
  3. The agent signs a USDC transfer for that price and repeats the call with the payment attached (any x402 client does this; see skills/solenrich/examples/x402/).
  4. The Coinbase CDP facilitator settles the payment on-chain, and SolEnrich returns the answer.

Endpoints that can run longer than about 20 seconds settle the payment before the work starts, so a slow run never loses the payment. Payments are visible on x402scan.

Endpoints

All paid endpoints accept POST requests to /entrypoints/{key}/invoke with a JSON body containing an input object. Without a valid x402 payment header, endpoints return HTTP 402 with payment instructions.

Core (5 endpoints)

EndpointPriceInputDescription
enrich-wallet-light$0.002address, formatSOL balance, token holdings, NFT breakdown, labels, risk score
enrich-wallet-full$0.005address, format+ DeFi positions, connected wallets, enhanced tx history
enrich-token-light$0.002mint, formatPrice (median of 3 sources), market cap, volume, liquidity, risk flags
enrich-token-full$0.004mint, format+ Top 20 holders, HHI concentration, volatility metrics
parse-transaction$0.001signature, formatType detection, protocol identification, transfer breakdown

Premium (5 endpoints)

EndpointPriceInputDescription
whale-watch$0.008mint, formatTop holders with accumulation/distribution tracking
batch-enrich$0.015addresses[], type, depth, formatParallel enrichment of up to 25 wallets or tokens
wallet-graph$0.010address, depth, formatTransaction connection mapping and cluster detection
wallet-link-check$0.030wallet_a, wallet_b, context, formatAre two wallets the same owner? Verdict + confidence from direct transfers, first funders, new-wallet age and x402 history (payout-wallet rotation vs hijack)
copy-trade-signals$0.010address, formatPnL, win rate, Sharpe/Sortino ratios, max drawdown
due-diligence$0.020mint, formatComposite risk report with SAFE / CAUTION / RISKY verdict

Comparison (2 endpoints)

EndpointPriceInputDescription
compare-tokens$0.006mints[] (2-3), formatSide-by-side: price, liquidity, volatility, HHI, risk. Rankings + summary
compare-wallets$0.006addresses[] (2-3), depth, formatSide-by-side: portfolio, activity, risk, labels. Rankings + summary

Temporal (3 endpoints)

EndpointPriceInputDescription
token-trend$0.006mint, lookback, formatToken metrics over time — daily snapshots with improving/declining/stable direction per metric
wallet-history$0.006address, lookback, formatPortfolio value, SOL balance, risk score deltas + position changes across daily snapshots
portfolio-history$0.006address, period, formatFull portfolio time-series (7/14/30d) with peak, trough, max drawdown, change vs start

Discovery & Protocol (2 endpoints)

EndpointPriceInputDescription
new-tokens$0.012min_liquidity_usd, max_risk_score, limit, formatRecently launched tokens, enriched + risk-scored, safest first
protocol-profile$0.008protocol, include_yields, formatProtocol TVL, yields, on-chain activity, health signals, automated-activity %

Perps Intelligence (8 endpoints)

EndpointPriceInputDescription
perps-market-structure$0.012formatJupiter Perps OI, utilization, borrow APR, skew, health flags for SOL/BTC/ETH
perps-trader-profile$0.010address, formatMulti-venue (Jupiter + Adrena) open positions, leverage, PnL, trader classification
perps-cross-venue-funding$0.015market, include_reference, formatFunding/borrow APR + OI across Jupiter, Adrena, Hyperliquid, dYdX — best entry per side, arbitrage spreads
perps-venue-comparison$0.020market, side, size_usd, formatWhere to trade at this size: slippage, fees, OI headroom, total entry cost, recommendation
perps-basis-signal$0.015asset, min_yield_apr_pct, formatNet-yield-after-borrow basis trade scanner — actually-earnable yield per venue
perps-market-trend$0.008lookback, formatPer-market deltas (price, OI, skew, utilization, borrow APR) over 7/14/30d — regime detection
hyperliquid-trader-profile$0.012address (0x), formatHyperliquid live positions, leverage, liquidation distance, risk flags, week/month/all-time PnL
hyperliquid-smart-money$0.05market, top_traders, formatLeaderboard funnel → consistency-gated traders → per-coin positioning consensus + top-trader drill-down

Orchestration (2 endpoints)

EndpointPriceInputDescription
trending-signals$0.050min_liquidity_usd, max_risk_score, limit, formatComposite ranking of trending tokens: discovery + whale-watch + risk scoring, with reasoning
smart-money-flow$0.100wallets[], min_win_rate, lookback_days, formatScores seed wallets, filters to winners, surfaces tokens they're accumulating + clusters

Trenches — Memecoin Intelligence (5 endpoints)

EndpointPriceInputDescription
smart-money-trenches$0.05hours_back, max_token_age_hours, min_buyers, limit, formatWhich proven-winner wallets are aping fresh (<6h) launches right now — vetted realized-PnL seed set, bot-guarded, ranked by distinct smart buyers + recency
runner-scan$0.04max_token_age_hours, min_liquidity_usd, min_volume_h1_usd, limit, formatWhich fresh tokens are accelerating right now — buy-rate acceleration (5m vs 1h, 1h vs 6h), buy pressure, volume/price velocity, holder growth, liquidity trend. Stages RUNNING / IGNITING / PARABOLIC_LATE / FADING with a 0–1 score. Flags already-ran tokens as entry risk and LP pulls as rugs
trenches-scan$0.08max_token_age_hours, min_liquidity_usd, limit, formatAll three trenches signals in one call — on-chain velocity × proven-winner buys × agent attention, composited into a ranked list with confluence counts, per-token reasoning, and HIGH_CONFLUENCE / MODERATE / SINGLE_SIGNAL verdicts
trenches-check$0.03mint, formatThe suite pointed at ONE token — before you ape, run the check. Same three legs as trenches-scan but targeted at your candidate: verdict + reasoning + per-leg detail. Pairs with due-diligence for a full pre-entry read
exit-signal$0.04mint, entry_price_usd, formatThe sell-side verdict for a token you hold — EXIT / DERISK / HOLD with a 0–1 exit score. Sell pressure, buy-rate deceleration, volume fade, distribution-into-strength, top-holder flow (distributing vs accumulating whales), liquidity trend, holder churn. Rug triggers (LP pull, active dump) override everything. Works on tokens of any age

Collectibles / RWA (1 endpoint)

EndpointPriceInputDescription
gacha-ev-scan$0.02machine, franchise, exit_strategy, min_edge_pct, formatJupiter Gacha (Collector Crypt) pack EV scan — gross insured EV vs the guaranteed instant-buyback floor (85–93%, ≤72h) vs a marketplace sale (−2% fee, fill-risk). POSITIVE_EV / HOUSE_EDGE / NEGATIVE_EV verdict per machine — the realizable EV the platform hides behind its gross-EV headline

StonkFun — Quote-Paired & Reward Coins (5 endpoints, 1 free)

Coins launched on stonkfun.xyz are priced against a quote asset (xStocks such as NVDAX/SPYX/TSLAX, Backpack pre-stocks, currencies, custom mints). Reward-mode coins carry a Token-2022 transfer tax (100 or 300 bps) paid to holders in the quote token. These endpoints read the tax config from the chain, score whether it reaches holders, compute holder yield, screen the whole reward-coin set, and preflight a self-built LaunchLab launch before it is broadcast.

EndpointPriceInputDescription
stonk-pairsfreecategory, launchable_only, formatQuote assets a launch can be paired against, normalized categories, is_agent_launchable flag (launchable + LaunchLab-ready + allowed category). Call first: a launch quoteMint must be one of these
stonk-reward-risk$0.005mint, formatPayout status — PAYING (holders paid in the last 24h), STALE, NEVER, NOT_REWARD — plus trading_cost (tax bps, round-trip %) and a 0–100 health score read from the chain: fee bps + cap, withdraw authority (must be StonkFun's distributor), fee mutability, distributions + recency, flywheel, holders + concentration, quote category, age
stonk-yield-batch$0.05mints (up to 25) or screener filters, limit (≤25), formatstonk-yield for up to 25 coins in one call, from the index in milliseconds: 7d / 30d / lifetime yield per coin with reward asset, market cap, holders, last payout. Cheaper than stonk-screener + one stonk-yield per coin
stonk-alerts$0.02mints (1–25), since, min_holders_change_pct, stale_after_hours, formatWhat changed for your reward coins since your last check: payout landed, payout went stale, stopped trading, holders moved, rewards paid since. Plus current payout status per coin. From the index in milliseconds; poll it and pass checked_at back as since
stonk-yield$0.005mint, formatTrailing 7d / 30d / lifetime holder yield — rewards in the quote asset, priced in USD, over average market cap; annualized with a caution flag under 7 days. Plus quote exposure: the holder is long the coin and its quote asset
stonk-screener$0.01quote_mint, category, min_holders, min_age_days, max_age_days, min_volume_24h_usd, max_market_cap_usd, paying_only, live_only, sort, limit, formatEvery reward coin from a 10-minute ingest, served from memory. Per row: payout_status, hours since last payout, live (traded AND paid in 24h), round_trip_pct tax cost, holders, yields, volume, mcap. Sort by volume24h (default), lastPayout, holders, priceChange24h, yield7d, yield30d, rewardsUsd
stonk-gems$0.03quote_mint, category, max_age_days, min_holders, max_market_cap_usd, limit, formatLive-coin shortlist: ranks reward coins 0–100 on recent holder payout, holders, mcap headroom, 24h turnover, age, momentum, quote strength, flywheel. Stages GEM / WATCH / NOISE / DEAD with reasons and warnings per coin. Measures alive, paying and liquid — not a price forecast (in a paper test higher scores did not beat the market); pair with stonk-creator and stonk-quote
stonk-launch-intel$0.02category, min_coins, sort, limit, formatWhat to launch and against what. Per quote asset: launches (24h/7d), share trading today, share paying today, survival past day 3, median holders + mcap, 100 vs 300 bps tax mix with trading/paying rates, crowding, 0–100 demand score, plus overall stats and plain recommendations
stonk-quote$0.005mint, size_usd, hold_days, formatCost and payback of one trade at one size, no swap: entry/exit cost (tax + price impact), round-trip % and breakeven move, pro-rata payout share with dust warning, expected payout over the hold from real yield history, PAYS / MARGINAL / COSTS / NOT_PAYING with breakeven hold days
stonk-market-pulse$0.005formatIs the StonkFun market rising or falling? RISK_ON / NEUTRAL / RISK_OFF from breadth (share of live coins up 24h) and the median move, plus the volume-weighted move, launches per day, share trading and paying, holder revenue 7d vs prior 7d, strongest and weakest quote shelves, daily breadth trend
stonk-creator$0.01creator or mint, formatTrack record of a StonkFun creator: ESTABLISHED / MIXED / SERIAL_LAUNCHER / NEW, launches per day and week, share of coins older than 3 days still trading (baseline 19% one-time creators vs 5% serial launchers), payouts in 24h, living coins
stonk-launch-preflight$0.25unsigned_transaction, quote_mint, mode, launch_params, formatDecodes the LaunchLab initialize instruction and diffs every parameter against StonkFun's /launchlab/pricing — GlobalConfig, platform id per mode, curve, supply, totalSellA, raise, 6-decimal Token-2022 base mint, quote token program, curve-rule account last, and the reward-mode transfer fee (catches Raydium's transferFeeBasePoints / maxinumFee spelling). Returns ok, mismatches[{field, expected, actual, fix}], warnings. A mismatched pool is never adopted: the tax goes to nobody

Intelligence Feed & Signals (4 endpoints)

EndpointPriceInputDescription
feed-latest$0.005since, formatDaily intelligence brief — pre-computed trending ranking, cached 24h, built for recurring polling
consensus-signal$0.005address/type or limit, window, formatWhat other agents are querying right now — proprietary attention signal from our request stream
attention-momentum$0.02window, limit, formatTokens ranked by acceleration of agent attention, with price divergence: early_signal (attention up, price flat) / distribution_risk (attention cooling, price pumping)
check-alerts$0.008tokens[], wallets[], since, criteria, formatPoll-based alerts: price spikes, whale flows, risk changes + perps events (position add/close, liquidation approaching, PnL swings)

Natural Language (1 endpoint)

EndpointPriceInputDescription
query$0.003question, formatPlain English questions routed to the right enricher

Example Request

curl -X POST https://api.solenrich.com/entrypoints/compare-tokens/invoke \
  -H "Content-Type: application/json" \
  -d '{"mints":["JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN","DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"],"format":"both"}'

Request bodies are flat JSON matching each endpoint's schema in /openapi.json. A {"input": {...}} envelope is also accepted.

Output Formats

Every endpoint accepts a format parameter:

  • json — Structured data for agent-to-agent consumption
  • llm — Natural language briefing (markdown) for LLM context windows
  • both — JSON data with an additional llm_summary field

Scoring Methodology

All scoring is deterministic on-chain logic — no LLM inference anywhere in the pipeline.

Wallet Risk Score (0.0 - 1.0)

Seven additive factors from on-chain activity:

FactorWeight
High transaction concentration (few counterparties)+0.15
Low transaction diversity+0.10
New wallet (< 30 days old)+0.15
Bot-like patterns (high frequency, repetitive)+0.20
Interactions with known risky programs+0.15
Airdrop farming signals (many small token accounts)+0.10
Low protocol diversity (< 2 protocols)+0.10

Risk Levels: LOW (< 0.25) | MODERATE (0.25-0.50) | ELEVATED (0.50-0.65) | HIGH (0.65-0.80) | CRITICAL (> 0.80)

HHI (Herfindahl-Hirschman Index)

Holder concentration metric from top 20 on-chain holders:

  • < 1500 — Well distributed
  • 1500-2500 — Moderately concentrated
  • > 2500 — Highly concentrated

Price Volatility

Computed from DexScreener multi-timeframe data (zero extra API calls):

  • LOW — daily std < 3%
  • MODERATE — 3-8%
  • HIGH — 8-15%
  • EXTREME — > 15%

Token Pricing

Median of up to 3 sources (Helius DAS, DexScreener, Jupiter). Median resists outliers from any single DEX.

Architecture

Client → x402 Paywall → Entrypoint Router → Enrichment Engine → Format Router → Response

Repo layout

PathWhat is there
src/enrichers/The scoring logic: each enricher fetches, cross-checks, and scores. Verdict rules are pure functions with unit tests (for example stonk-creator.ts, stonk-pulse.ts, wallet-link.ts, risk-scorer.ts).
src/entrypoints/One file per endpoint suite: input schema, handler, briefing.
src/sources/Clients for Helius, Solana RPC, DexScreener, Jupiter, Birdeye, DeFi Llama, StonkFun, and the perps venues.
src/lib/agent.tsApp setup, x402 payment middleware, metrics, /docs.
src/mcp-tools.tsThe MCP server's tools (one per endpoint).
src/openapi.ts, src/lib/llms-txt.tsDiscovery surfaces: OpenAPI, llms.txt.
agents/solscout/Our test agent: pays every endpoint in production and checks the answers.
skills/solenrich/The installable agent skill.
test/Unit tests (run in CI) and live endpoint checks.

Data Sources

SourceUsage
HeliusDAS API (assets, token accounts), enhanced transaction parsing, RPC
DexScreenerToken prices, market data, liquidity, OHLCV
DeFi LlamaProtocol TVL, yield data
JupiterToken prices (cross-reference), metadata, verification status, perps quotes
BirdeyeReal holder counts, daily OHLCV for volatility
Solana RPCSOL balances, mint info, top 20 holders, Token-2022 transfer fees, Jupiter Perps, Adrena and Flash on-chain accounts
StonkFun public APIReward coins, payouts, launch ledger (creators), revenue history
Hyperliquid + dYdX v4Cross-chain perps reference (funding rates, basis)

Entity Labeling

20+ known Solana addresses auto-tagged across all enrichment results: CEX wallets (Binance, Coinbase), protocol addresses (Raydium, Orca, Jupiter), bridges, and foundations.

NFT Classification

Most non-fungible assets on a Solana wallet are unsolicited compressed drops, so a raw NFT count overstates collecting activity. One measured wallet held 118 non-fungibles: 15 were real holdings and 103 were airdrops, several of them drainer bait.

Wallet enrichment returns nft_summary with three buckets that sum to nft_count:

BucketMeaning
collectedUncompressed and not spam-flagged. Minting these costs rent per asset, so they are usually bought or minted deliberately.
airdroppedCompressed and not spam-flagged. Cheap to mint in bulk, so usually sent unsolicited.
suspected_spamName or description matches claim bait, an embedded domain, or invisible filter-evasion characters.

nft_collections lists the largest collections, real holdings first. distinct_collections counts only collected holdings in a named collection.

Spam detection is pattern matching on names and descriptions, applied to compressed assets only. Treat it as a signal, not a verdict — a legitimate compressed drop with promotional wording can be flagged. The nft_collector label requires 10 or more collected NFTs, so it no longer fires on airdrop volume.

Agent Skill

One line installs the SolEnrich skill into Claude Code, Cursor, Codex and other agents that read Agent Skills. It teaches the agent which endpoint answers which question, how to pay per call over x402, and the trade and StonkFun workflows:

npx skills add 0xSardius/solenrich --skill solenrich

Source: skills/solenrich/. Listed on skills.sh. Data calls are paid (x402, USDC on Solana or Base); the agent needs a wallet with USDC.

MCP Server

SolEnrich exposes an MCP endpoint for Claude Desktop, Claude Code, and Cursor. No install required:

{
  "mcpServers": {
    "solenrich": {
      "type": "streamable-http",
      "url": "https://api.solenrich.com/mcp"
    }
  }
}

49 tools — every endpoint is exposed as an MCP tool (wallet/token light+full variants fold into depth/include_holders toggles). Highlights: enrich_wallet, enrich_token, due_diligence, whale_watch, perps_cross_venue_funding, trending_signals, smart_money_flow, check_alerts.

Free Demo

Try SolEnrich without payment — paste any Solana wallet address or token mint:

curl -X POST https://api.solenrich.com/demo/enrich \
  -H "Content-Type: application/json" \
  -d '{"address":"JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"}'

10 free queries per IP per hour. Auto-detects wallet vs token. Returns format: "both" (JSON + LLM summary).

Interactive demo on the landing page: https://solenrich.com

Development

# Install dependencies
bun install

# Start dev server (port 3000)
bun run dev

# Type check
bunx tsc --noEmit

# Run tests (CI runs the unit test files: 500+ tests across 15 files, see .github/workflows/ci.yml)
bun test test/unit.test.ts                # core unit tests
bun test test/stonk.test.ts               # StonkFun suite (recorded fixtures)
bun run test/test-all-endpoints.ts        # live endpoint checks (requires a running server)
bun run test/test-402-production.ts       # production paywall verification
bun run agents/solscout/index.ts --target production --mode stress   # free 402 check of every route

Environment Variables

Shortened here. Read the whole README on GitHub.

Tools it offers (46)

What this server listed when Ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.

  • enrich_wallet
  • enrich_token
  • parse_transaction
  • whale_watch
  • due_diligence
  • wallet_graph
  • copy_trade_signals
  • batch_enrich
  • compare_tokens
  • compare_wallets
  • token_trend
  • wallet_history
  • portfolio_history
  • new_tokens
  • protocol_profile
  • query
  • perps_market_structure
  • perps_trader_profile
  • hyperliquid_trader_profile
  • hyperliquid_smart_money
  • perps_basis_signal
  • perps_market_trend
  • perps_venue_comparison
  • perps_cross_venue_funding
  • trending_signals
  • smart_money_flow
  • smart_money_trenches
  • runner_scan
  • feed_latest
  • check_alerts

Signals

GitHub stars
2
Last commit
Oct 2026
Advanced
Delivery
solenrich MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
Item type
mcp-server
Key
io-github-0xsardius-solenrich
Source
github.com/0xsardius/solenrich
Hosted endpoint
https://api.solenrich.com/mcp