{
  "markdown": "# SolEnrich\n\nSolana 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.\n\n**Live API:** https://api.solenrich.com/\n**Landing Page:** https://solenrich.com\n**Docs (agent-readable):** https://api.solenrich.com/docs\n\n## Quick Start\n\n```bash\n# Health check\ncurl https://api.solenrich.com/health\n\n# Agent card (A2A discovery)\ncurl https://api.solenrich.com/.well-known/agent.json\n\n# List all 45 endpoints (44 paid + 1 free)\ncurl https://api.solenrich.com/entrypoints\n\n# Full API documentation (agent-readable JSON)\ncurl https://api.solenrich.com/docs\n\n# Free demo (no payment required, 10 queries/hr)\ncurl -X POST https://api.solenrich.com/demo/enrich \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"address\":\"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263\"}'\n```\n\n## Endpoints\n\nAll 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.\n\n### Core (5 endpoints)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `enrich-wallet-light` | $0.002 | `address`, `format` | SOL balance, token holdings, NFT breakdown, labels, risk score |\n| `enrich-wallet-full` | $0.005 | `address`, `format` | + DeFi positions, connected wallets, enhanced tx history |\n| `enrich-token-light` | $0.002 | `mint`, `format` | Price (median of 3 sources), market cap, volume, liquidity, risk flags |\n| `enrich-token-full` | $0.004 | `mint`, `format` | + Top 20 holders, HHI concentration, volatility metrics |\n| `parse-transaction` | $0.001 | `signature`, `format` | Type detection, protocol identification, transfer breakdown |\n\n### Premium (5 endpoints)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `whale-watch` | $0.008 | `mint`, `format` | Top holders with accumulation/distribution tracking |\n| `batch-enrich` | $0.015 | `addresses[]`, `type`, `depth`, `format` | Parallel enrichment of up to 25 wallets or tokens |\n| `wallet-graph` | $0.010 | `address`, `depth`, `format` | Transaction connection mapping and cluster detection |\n| `copy-trade-signals` | $0.010 | `address`, `format` | PnL, win rate, Sharpe/Sortino ratios, max drawdown |\n| `due-diligence` | $0.020 | `mint`, `format` | Composite risk report with SAFE / CAUTION / RISKY verdict |\n\n### Comparison (2 endpoints)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `compare-tokens` | $0.006 | `mints[]` (2-3), `format` | Side-by-side: price, liquidity, volatility, HHI, risk. Rankings + summary |\n| `compare-wallets` | $0.006 | `addresses[]` (2-3), `depth`, `format` | Side-by-side: portfolio, activity, risk, labels. Rankings + summary |\n\n### Temporal (3 endpoints)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `token-trend` | $0.006 | `mint`, `lookback`, `format` | Token metrics over time — daily snapshots with improving/declining/stable direction per metric |\n| `wallet-history` | $0.006 | `address`, `lookback`, `format` | Portfolio value, SOL balance, risk score deltas + position changes across daily snapshots |\n| `portfolio-history` | $0.006 | `address`, `period`, `format` | Full portfolio time-series (7/14/30d) with peak, trough, max drawdown, change vs start |\n\n### Discovery & Protocol (2 endpoints)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `new-tokens` | $0.012 | `min_liquidity_usd`, `max_risk_score`, `limit`, `format` | Recently launched tokens, enriched + risk-scored, safest first |\n| `protocol-profile` | $0.008 | `protocol`, `include_yields`, `format` | Protocol TVL, yields, on-chain activity, health signals, automated-activity % |\n\n### Perps Intelligence (8 endpoints)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `perps-market-structure` | $0.012 | `format` | Jupiter Perps OI, utilization, borrow APR, skew, health flags for SOL/BTC/ETH |\n| `perps-trader-profile` | $0.010 | `address`, `format` | Multi-venue (Jupiter + Adrena) open positions, leverage, PnL, trader classification |\n| `perps-cross-venue-funding` | $0.015 | `market`, `include_reference`, `format` | Funding/borrow APR + OI across Jupiter, Adrena, Hyperliquid, dYdX — best entry per side, arbitrage spreads |\n| `perps-venue-comparison` | $0.020 | `market`, `side`, `size_usd`, `format` | Where to trade at this size: slippage, fees, OI headroom, total entry cost, recommendation |\n| `perps-basis-signal` | $0.015 | `asset`, `min_yield_apr_pct`, `format` | Net-yield-after-borrow basis trade scanner — actually-earnable yield per venue |\n| `perps-market-trend` | $0.008 | `lookback`, `format` | Per-market deltas (price, OI, skew, utilization, borrow APR) over 7/14/30d — regime detection |\n| `hyperliquid-trader-profile` | $0.012 | `address` (0x), `format` | Hyperliquid live positions, leverage, liquidation distance, risk flags, week/month/all-time PnL |\n| `hyperliquid-smart-money` | $0.05 | `market`, `top_traders`, `format` | Leaderboard funnel → consistency-gated traders → per-coin positioning consensus + top-trader drill-down |\n\n### Orchestration (2 endpoints)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `trending-signals` | $0.050 | `min_liquidity_usd`, `max_risk_score`, `limit`, `format` | Composite ranking of trending tokens: discovery + whale-watch + risk scoring, with reasoning |\n| `smart-money-flow` | $0.100 | `wallets[]`, `min_win_rate`, `lookback_days`, `format` | Scores seed wallets, filters to winners, surfaces tokens they're accumulating + clusters |\n\n### Trenches — Memecoin Intelligence (5 endpoints)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `smart-money-trenches` | $0.05 | `hours_back`, `max_token_age_hours`, `min_buyers`, `limit`, `format` | Which proven-winner wallets are aping fresh (<6h) launches right now — vetted realized-PnL seed set, bot-guarded, ranked by distinct smart buyers + recency |\n| `runner-scan` | $0.04 | `max_token_age_hours`, `min_liquidity_usd`, `min_volume_h1_usd`, `limit`, `format` | Which 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 |\n| `trenches-scan` | $0.08 | `max_token_age_hours`, `min_liquidity_usd`, `limit`, `format` | All 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 |\n| `trenches-check` | $0.03 | `mint`, `format` | The 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 |\n| `exit-signal` | $0.04 | `mint`, `entry_price_usd`, `format` | The 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 |\n\n### Collectibles / RWA (1 endpoint)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `gacha-ev-scan` | $0.02 | `machine`, `franchise`, `exit_strategy`, `min_edge_pct`, `format` | Jupiter 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 |\n\n### StonkFun — Quote-Paired & Reward Coins (5 endpoints, 1 free)\n\nCoins launched on [stonkfun.xyz](https://www.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.\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `stonk-pairs` | free | `category`, `launchable_only`, `format` | Quote 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 |\n| `stonk-reward-risk` | $0.005 | `mint`, `format` | Payout 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 |\n| `stonk-yield` | $0.005 | `mint`, `format` | Trailing 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 |\n| `stonk-screener` | $0.01 | `quote_mint`, `category`, `min_holders`, `min_age_days`, `max_age_days`, `min_volume_24h_usd`, `max_market_cap_usd`, `paying_only`, `live_only`, `sort`, `limit`, `format` | Every 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` |\n| `stonk-gems` | $0.03 | `quote_mint`, `category`, `max_age_days`, `min_holders`, `max_market_cap_usd`, `limit`, `format` | Gem 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?\" |\n| `stonk-launch-intel` | $0.02 | `category`, `min_coins`, `sort`, `limit`, `format` | What 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 |\n| `stonk-launch-preflight` | $0.25 | `unsigned_transaction`, `quote_mint`, `mode`, `launch_params`, `format` | Decodes 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 |\n\n### Intelligence Feed & Signals (4 endpoints)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `feed-latest` | $0.005 | `since`, `format` | Daily intelligence brief — pre-computed trending ranking, cached 24h, built for recurring polling |\n| `consensus-signal` | $0.005 | `address`/`type` or `limit`, `window`, `format` | What other agents are querying right now — proprietary attention signal from our request stream |\n| `attention-momentum` | $0.02 | `window`, `limit`, `format` | Tokens ranked by *acceleration* of agent attention, with price divergence: early_signal (attention up, price flat) / distribution_risk (attention cooling, price pumping) |\n| `check-alerts` | $0.008 | `tokens[]`, `wallets[]`, `since`, `criteria`, `format` | Poll-based alerts: price spikes, whale flows, risk changes + perps events (position add/close, liquidation approaching, PnL swings) |\n\n### Natural Language (1 endpoint)\n\n| Endpoint | Price | Input | Description |\n|----------|-------|-------|-------------|\n| `query` | $0.003 | `question`, `format` | Plain English questions routed to the right enricher |\n\n### Example Request\n\n```bash\ncurl -X POST https://api.solenrich.com/entrypoints/compare-tokens/invoke \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"mints\":[\"JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN\",\"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263\"],\"format\":\"both\"}'\n```\n\nRequest bodies are flat JSON matching each endpoint's schema in [`/openapi.json`](https://api.solenrich.com/openapi.json). A `{\"input\": {...}}` envelope is also accepted.\n\n## Output Formats\n\nEvery endpoint accepts a `format` parameter:\n\n- **`json`** — Structured data for agent-to-agent consumption\n- **`llm`** — Natural language briefing (markdown) for LLM context windows\n- **`both`** — JSON data with an additional `llm_summary` field\n\n## Scoring Methodology\n\nAll scoring is **deterministic on-chain logic** — no LLM inference anywhere in the pipeline.\n\n### Wallet Risk Score (0.0 - 1.0)\n\nSeven additive factors from on-chain activity:\n\n| Factor | Weight |\n|--------|--------|\n| High transaction concentration (few counterparties) | +0.15 |\n| Low transaction diversity | +0.10 |\n| New wallet (< 30 days old) | +0.15 |\n| Bot-like patterns (high frequency, repetitive) | +0.20 |\n| Interactions with known risky programs | +0.15 |\n| Airdrop farming signals (many small token accounts) | +0.10 |\n| Low protocol diversity (< 2 protocols) | +0.10 |\n\n**Risk Levels:** LOW (< 0.25) | MODERATE (0.25-0.50) | ELEVATED (0.50-0.65) | HIGH (0.65-0.80) | CRITICAL (> 0.80)\n\n### HHI (Herfindahl-Hirschman Index)\n\nHolder concentration metric from top 20 on-chain holders:\n- **< 1500** — Well distributed\n- **1500-2500** — Moderately concentrated\n- **> 2500** — Highly concentrated\n\n### Price Volatility\n\nComputed from DexScreener multi-timeframe data (zero extra API calls):\n- **LOW** — daily std < 3%\n- **MODERATE** — 3-8%\n- **HIGH** — 8-15%\n- **EXTREME** — > 15%\n\n### Token Pricing\n\nMedian of up to 3 sources (Helius DAS, DexScreener, Jupiter). Median resists outliers from any single DEX.\n\n## Architecture\n\n```\nClient → x402 Paywall → Entrypoint Router → Enrichment Engine → Format Router → Response\n```\n\n### Data Sources\n\n| Source | Usage |\n|--------|-------|\n| [Helius](https://helius.dev) | DAS API (assets, token accounts), enhanced transaction parsing, RPC |\n| [DexScreener](https://dexscreener.com) | Token prices, market data, liquidity, OHLCV |\n| [DeFi Llama](https://defillama.com) | Protocol TVL, yield data |\n| [Jupiter](https://jup.ag) | Token prices (cross-reference), metadata, verification status, perps quotes |\n| [Birdeye](https://birdeye.so) | Real holder counts, daily OHLCV for volatility |\n| Solana RPC | SOL balances, mint info, top 20 holders, Jupiter Perps + Adrena on-chain accounts |\n| Hyperliquid + dYdX v4 | Cross-chain perps reference (funding rates, basis) |\n\n### Entity Labeling\n\n20+ known Solana addresses auto-tagged across all enrichment results: CEX wallets (Binance, Coinbase), protocol addresses (Raydium, Orca, Jupiter), bridges, and foundations.\n\n### NFT Classification\n\nMost 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.\n\nWallet enrichment returns `nft_summary` with three buckets that sum to `nft_count`:\n\n| Bucket | Meaning |\n|--------|---------|\n| `collected` | Uncompressed and not spam-flagged. Minting these costs rent per asset, so they are usually bought or minted deliberately. |\n| `airdropped` | Compressed and not spam-flagged. Cheap to mint in bulk, so usually sent unsolicited. |\n| `suspected_spam` | Name or description matches claim bait, an embedded domain, or invisible filter-evasion characters. |\n\n`nft_collections` lists the largest collections, real holdings first. `distinct_collections` counts only collected holdings in a named collection.\n\nSpam 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.\n\n## MCP Server\n\nSolEnrich exposes an MCP endpoint for Claude Desktop, Claude Code, and Cursor. **No install required:**\n\n```json\n{\n  \"mcpServers\": {\n    \"solenrich\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://api.solenrich.com/mcp\"\n    }\n  }\n}\n```\n\n32 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`.\n\n## Free Demo\n\nTry SolEnrich without payment — paste any Solana wallet address or token mint:\n\n```bash\ncurl -X POST https://api.solenrich.com/demo/enrich \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"address\":\"JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN\"}'\n```\n\n10 free queries per IP per hour. Auto-detects wallet vs token. Returns `format: \"both\"` (JSON + LLM summary).\n\nInteractive demo on the landing page: https://solenrich.com\n\n## Development\n\n```bash\n# Install dependencies\nbun install\n\n# Start dev server (port 3000)\nbun run dev\n\n# Type check\nbunx tsc --noEmit\n\n# Run tests\nbun test test/unit.test.ts                # 138 unit tests\nbun run test/test-all-endpoints.ts        # 55 endpoint tests (requires local server)\nbun run test/test-402-production.ts       # Production paywall verification\n```\n\n### Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `HELIUS_API_KEY` | Yes | Helius API key (helius.dev) |\n| `AGENT_WALLET_ADDRESS` | Yes | Solana wallet address for payments |\n| `PAYMENTS_ENABLED` | No | Set to `\"true\"` to enable x402 paywall |\n| `FACILITATOR_URL` | If payments | x402 facilitator URL |\n| `UPSTASH_REDIS_REST_URL` | No | Upstash Redis for caching (falls back to in-memory) |\n| `UPSTASH_REDIS_REST_TOKEN` | No | Upstash Redis token |\n| `JUPITER_API_KEY` | No | Jupiter API key (optional, free tier works) |\n| `BIRDEYE_API_KEY` | No | Birdeye API key — real holder counts + daily OHLCV for volatility |\n| `METRICS_TOKEN` | No | Bearer token for `GET /metrics`; without it metrics are locked in production |\n\n## Deployment\n\nDeployed on [Railway](https://railway.app) with Docker (Bun runtime). Auto-deploys from `main` branch.\n\n## License\n\nMIT\n\n## Built by\n\n[@0xSardius](https://github.com/0xSardius)\n",
  "bytes": 19241,
  "sha": "492bc76bb85ee1fb76904d9cea66d6778814806d749fc1769acd9799f40da3d9",
  "repo_slug": "0xsardius/solenrich",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_0xsardius_solenrich_3e6c8053/readme"
}