Odel
solenrich

solenrich

@0xsardius2TypeScriptUpdated Today

Solana onchain intelligence for AI agents: wallet risk, due-diligence, perps funding, smart money.

Server endpointStreamable HTTPNo authProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

SolEnrich

Solana onchain data enrichment agent. Accepts USDC micropayments via x402 and returns enriched wallet, token, and transaction data — structured JSON for agents or natural language briefings for LLMs.

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 45 endpoints (44 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"}'

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
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$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, formatGem finder: 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. "What should I look at on StonkFun right now?"
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-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

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, Jupiter Perps + Adrena on-chain accounts
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.

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"
    }
  }
}

32 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
bun test test/unit.test.ts                # 138 unit tests
bun run test/test-all-endpoints.ts        # 55 endpoint tests (requires local server)
bun run test/test-402-production.ts       # Production paywall verification

Environment Variables

VariableRequiredDescription
HELIUS_API_KEYYesHelius API key (helius.dev)
AGENT_WALLET_ADDRESSYesSolana wallet address for payments
PAYMENTS_ENABLEDNoSet to "true" to enable x402 paywall
FACILITATOR_URLIf paymentsx402 facilitator URL
UPSTASH_REDIS_REST_URLNoUpstash Redis for caching (falls back to in-memory)
UPSTASH_REDIS_REST_TOKENNoUpstash Redis token
JUPITER_API_KEYNoJupiter API key (optional, free tier works)
BIRDEYE_API_KEYNoBirdeye API key — real holder counts + daily OHLCV for volatility
METRICS_TOKENNoBearer token for GET /metrics; without it metrics are locked in production

Deployment

Deployed on Railway with Docker (Bun runtime). Auto-deploys from main branch.

License

MIT

Built by

@0xSardius