SolEnrich
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
- The agent calls an endpoint with no payment.
- SolEnrich answers
402 Payment Requiredwith apayment-requiredheader: the price, the USDC pay-to address on Solana and on Base, and a real example of the response. - 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/). - 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)
Premium (5 endpoints)
Comparison (2 endpoints)
Temporal (3 endpoints)
Discovery & Protocol (2 endpoints)
Perps Intelligence (8 endpoints)
Orchestration (2 endpoints)
Trenches — Memecoin Intelligence (5 endpoints)
Collectibles / RWA (1 endpoint)
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.
Intelligence Feed & Signals (4 endpoints)
Natural Language (1 endpoint)
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 consumptionllm— Natural language briefing (markdown) for LLM context windowsboth— JSON data with an additionalllm_summaryfield
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:
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
Data Sources
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:
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
Deployment
Deployed on Railway with Docker (Bun runtime). Auto-deploys from main branch.
License
MIT