| # | Wallet | Score | Realized PnL | Win Rate | Buy Vol | Sell Vol | Trades | Tokens | Avg Size | Largest | Last Trade |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Loading leaderboard... | |||||||||||
| Token | Chain | Type | Signal Price | Current Price | Return | Sent |
|---|
Integrate smart money signals into your platform. Understand signal types, query our APIs, and build real-time notification flows for your users.
Wallets are ranked by a proprietary composite trader_score that identifies consistently skilled traders. Unlike single-metric rankings (PnL, win rate), the score is resistant to one-trade flukes, dust-wallet noise, and garbage upstream data.
The score includes multiple safety filters to automatically exclude bots, dust wallets, and wallets with anomalous data. MEV/arb bots (detected by zero net PnL) are filtered by default. Each wallet also receives a data_confidence badge (high/medium/low) based on the number of closed positions, so you know how trustworthy the score is. Scores are recomputed every 15 minutes.
convergence_min_wallets (default 3) is still required. Global engine window is set via Lambda env CONVERGENCE_WINDOW_HOURS (default 6h).convergence_min_wallets (default 3) but fewer than 5 qualifying wallets on the same token; set min wallets to 2 for the earliest P1 tier.whale_min_trade_usd and whale_max_rank)market object (question, outcome, slug) from DynamoDB enrichment.clob_token_id (buys only), subject to convergence_min_wallets and the same global window as DEX (env CONVERGENCE_WINDOW_HOURS).convergence_min_wallets (default 3) but fewer than 5 on the same CLOB; use 2 for earliest P1 if you lower that setting in customer-config.
Polymarket uses the same page layout as DEX chains, but a separate ranked wallet pool and outcome-based convergence (grouping by clob_token_id). Use the controls below to explore bettors, tune PM notifications, and deep-link to markets.
chain=polymarket. Wallets show a PM badge; explorer links go to Polygonscan.min_tokens=2, min_closed=0, min_buy_vol=1000 (see API Reference table).pm_convergence_bet_p0 and pm_convergence_bet_p1 independently of DEX convergence.market.question/market.outcome_label via Postgres first (secret POLYMARKET_PG_SECRET, default pg_ds1_config), then falls back to DynamoDB mappings/items. If enrichment can’t resolve, the UI falls back to the CLOB id prefix.question / outcome.cta.slug or cta.item_id from the payload.GET /leaderboard?chain=polymarket — Ranked bettor pool.GET /trader?wallet=...&chain=polymarket — Profile and positions by CLOB id.PUT /config — Include polymarket in chains and PM types in signal_types as in the config body table above.Whale-move and sell-signal types are DEX-only today; enabling them does not create Polymarket whale/sell alerts.
https://api.mbd.xyz/v3/alpha
Authorization header.
Authorization: Bearer mbd-your-api-key-here
401 Unauthorized.
realized_pnl_usd. Switch to trader_score for a composite view blending PnL efficiency, win rate, consistency, and activity. Bot wallets are filtered by default.| Parameter | Default | Description |
|---|---|---|
| rank_by | realized_pnl_usd | Sort metric. Options: trader_score, realized_pnl_usd, true_win_rate (or win_rate), net_pnl_usd, total_buy_volume_usd, trade_count, tokens_traded, avg_trade_size_usd, largest_trade_usd. Invalid values return 400. |
| limit | 50 | Number of results (max 200) |
| min_trades | 1 | Minimum trade count filter |
| min_tokens | 5 (base/eth), 3 (sol), 2 (polymarket) | Minimum unique tokens traded (filters market-maker bots) |
| min_closed | 5 (base/eth/sol), 0 (polymarket) | Minimum closed positions (wallets need closed trades for PnL/win-rate data) |
| min_buy_vol | 5K (base/eth), 1K (sol/polymarket) | Minimum buy volume USD — filters out dust wallets with negligible activity |
| max_buy_vol | 1B | Maximum buy volume USD — filters out aggregators and bots with unrealistic volume |
| chain | base | Chain to query: base, ethereum, solana, polymarket |
| offset | 0 | Pagination offset. Use with limit to paginate results (e.g., offset=20&limit=20 for page 2) |
| hide_bots | true | Filter out MEV/arb bot wallets (detected by zero net PnL). Set to false to see the full unfiltered pool |
data_confidence (high/medium/low based on closed positions), pipeline_info (data_since, data_age_days, latest_trade), and trader_score for every wallet.
# Top 25 wallets on Base (default: sorted by realized PnL, bots filtered) curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/leaderboard?limit=25&chain=base" # Top 50 wallets on Solana sorted by composite trader score curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/leaderboard?rank_by=trader_score&chain=solana&limit=50" # Polymarket smart-money leaderboard (notification pipeline index) curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/leaderboard?chain=polymarket&limit=25" # Page 2 of results (wallets 21-40) curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/leaderboard?limit=20&offset=20&chain=base"
chain and type filters — filtered queries paginate through DynamoDB to return the full limit of matching items. Use /signals for cursor-based paginated history.| Parameter | Default | Description |
|---|---|---|
| since | 24h ago | ISO 8601 timestamp — return notifications newer than this |
| limit | 50 | Max results (max 100) |
| type | all | Filter by signal type: convergence_p0, convergence_p1, whale_move, sell_signal, pm_convergence_bet_p0, pm_convergence_bet_p1 |
| chain | all | Filter by chain: base, ethereum, solana, polymarket |
| wallet_id | — | Wallet address for personalized enrichment. Each signal is checked against this wallet's on-chain positions (DEX token holdings and/or Polymarket outcome bets). Matching signals receive a personal block with position details and are boosted to the top of results. |
# Latest 20 signals curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/notifications?limit=20" # Personalized: signals enriched with your wallet's positions curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/notifications?wallet_id=0x7a3f...9e2d&limit=20" # Only sell signals on Base curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/notifications?type=sell_signal&chain=base&limit=10" # Poll for new signals since last check curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/notifications?since=2026-03-23T10:00:00Z&limit=50"
curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/config"
| Body Field | Type | Description |
|---|---|---|
| daily_budget | number | Max notifications per day (5–50) |
| chains | list | Active chains: ["base", "ethereum", "solana", "polymarket"] (subset per account) |
| signal_types | list | Active signal types: ["convergence_p0", "convergence_p1", "whale_move", "sell_signal", "pm_convergence_bet_p0", "pm_convergence_bet_p1"] (subset per account) |
| min_trades | number | Minimum trade count for ranked wallets |
| min_win_rate | number | Minimum win rate (0–1) for signal-generating wallets |
| min_closed_positions | number | Minimum closed positions required |
| webhook_url | string | Webhook endpoint for real-time signal delivery |
| min_trade_size_usd | number | Min individual trade size in USD to count toward a signal (default: 50). Trades below this threshold are excluded from convergence counts and sell signals. |
| convergence_min_wallets | number | Minimum distinct qualifying wallets before a convergence can fire (default: 3). Classification: P0 when count is 5+, P1 when between this minimum and 4. Set to 2 for earliest P1. Applies to DEX and Polymarket. |
| convergence_window_hours | number | Stored per customer (default: 6). Used for pruning/state and copy; the detector’s global rolling window also follows Lambda env CONVERGENCE_WINDOW_HOURS (typically match these). |
| whale_min_trade_usd | number | Min trade size for whale alerts (default: 50000) |
| whale_max_rank | number | Max rank for whale alerts (default: 50) |
| min_trader_score | number | Min composite score for triggering wallet (0–1) |
| min_trigger_win_rate | number | Min win rate for triggering wallet (0–1) |
| min_trigger_closed | number | Min closed positions for triggering wallet |
| min_avg_holding_period_hours | number | Min avg holding period (hours) across a wallet's closed positions. Filters out scalpers. Default: 0 (no filter). |
| min_token_liquidity_usd | number | Min 24h volume for the token |
| min_token_holders | number | Min holder count for the token |
| priority_filter | string | Priority filter: "all", "P0", "P0,P1", etc. |
| cooldown_hours | number | Hours between duplicate signals for same token (default: 2) |
# Set daily budget to 30 and enable only P0 signals curl -X PUT \ -H "Authorization: Bearer mbd-your-api-key-here" \ -H "Content-Type: application/json" \ -d '{ "daily_budget": 30, "priority_filter": "P0", "chains": ["base", "ethereum"] }' \ "https://api.mbd.xyz/v3/alpha/config" # Tighten quality gates curl -X PUT \ -H "Authorization: Bearer mbd-your-api-key-here" \ -H "Content-Type: application/json" \ -d '{ "min_trader_score": 0.2, "min_trigger_win_rate": 0.5, "min_trigger_closed": 3 }' \ "https://api.mbd.xyz/v3/alpha/config"
| Parameter | Default | Description |
|---|---|---|
| wallet | required | Wallet address |
| chain | base | Chain to query: base, ethereum, solana, polymarket |
# Full profile for a wallet on Base curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/trader?wallet=0x7a3f...9e2d&chain=base"
limit of matching items per page. Returns full signal payloads including traders, trade details, and why-reasons.| Parameter | Default | Description |
|---|---|---|
| chain | all | Filter by chain: base, ethereum, solana |
| type | all | Filter by type: convergence_p0, convergence_p1, whale_move, sell_signal, pm_convergence_bet_p0, pm_convergence_bet_p1 |
| limit | 20 | Results per page (max 100) |
| cursor | — | Pagination cursor from next_cursor in previous response |
| wallet_id | — | Wallet address for personalized enrichment. Same behavior as /notifications — adds personal block and boosts held-token signals. |
# First page of Solana convergence signals curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/signals?chain=solana&type=convergence_p0&limit=20" # Next page using cursor curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/signals?cursor=eyJjdXN0b21lci..."
polymarket outcome/CLOB pricing may not resolve cleanly — treat PM metrics as best-effort.| Parameter | Default | Description |
|---|---|---|
| chain | all | Filter by chain: base, ethereum, solana, polymarket (PM returns may be unreliable) |
| days | 7 | Lookback window (1–30) |
| limit | 200 | Max signals to return (max 500) |
| dedup | false | Deduplicate by token+chain (keeps earliest signal per token) |
# Base chain signal performance over last 14 days curl -H "Authorization: Bearer mbd-your-api-key-here" \ "https://api.mbd.xyz/v3/alpha/signals/performance?chain=base&days=14"
{
"signal_id": "conv-base-TOSHI-20260319-0845",
"signal_type": "convergence",
"notification_type": "convergence_p0",
"priority": "P0",
"chain": "base",
"headline": "5 top-ranked traders bought $TOSHI in last 6h",
"token": {
"address": "0xac17...",
"symbol": "$TOSHI",
"current_price_usd": 0.000812,
"price_change_pct": 12.4,
"first_smart_entry_price": 0.000722
},
"traders": [
{
"wallet": "0x7a3f...9e2d",
"leaderboard_rank": 4,
"trader_score": 0.4821,
"realized_pnl_usd": 142000,
"true_win_rate": 0.65,
"closed_positions": 31,
"winning_positions": 20,
"trade_count": 214,
"avg_trade_size_usd": 3250.00,
"total_buy_volume_usd": 695500.00,
"trade": {
"size_usd": 8420.50,
"token_bought": "TOSHI",
"token_sold": "WETH",
"token_bought_amount": 19250000,
"token_sold_amount": 3.48,
"transaction_hash": "0x8b2e...f41a",
"traded_at": "2026-03-19T08:32:15+00:00"
}
}
// ... more traders
],
"summary": {
"trader_count": 5,
"total_usd_inflow": 34200.00,
"highest_rank": 4
},
"why": {
"reasons": [
{ "text": "Trader #4 has $142K realized profit (65% win rate, 31 closed positions)" },
{ "text": "Token price up +12% since first smart entry" },
{ "text": "Combined inflow $34.2K in 6 hours" }
]
},
"cta": {
"action": "swap",
"token_address": "0xac17...",
"chain": "base"
},
"timestamp": "2026-03-19T08:45:00Z"
}
Each notification includes a why.reasons[] array that explains why this signal matters. These amplifiers help your users make informed decisions.
The leaderboard has two layers of controls: table controls for adjusting the current view and a config panel (gear icon) for persisting per-customer settings.
CONVERGENCE_WINDOW_HOURS. Shorter windows require wallets to cluster more tightly in time.
GET /notifications?since=<last_check> every 10-30 seconds with your Bearer token. Store the latest sent_at timestamp to avoid re-processing signals.headline, why.reasons[], and token fields to build rich notification cards. DEX signals use traders[] (merged rows with nested trade). Polymarket signals use user_trades[] — each item is { trader, trade } — plus market and often cta.action: polymarket with slug / item_id. The cta object provides deep-link data for swaps or Polymarket.cta.token_address and cta.chain to open your swap UI. For Polymarket, use cta.slug or cta.item_id to open the event or market page (see demo “View on Polymarket”).GET /leaderboard to show your users who the top traders are. Default trader_score ranking surfaces consistently skilled traders. Switch to realized_pnl_usd or true_win_rate for single-metric views.wallet_id to /notifications or /signals to get personalized results. Each signal is cross-referenced against the wallet's on-chain positions (DEX token holdings + Polymarket outcome bets). Matching signals get a personal block with position size, entry price, unrealized PnL, and a relevance label. Held-token signals are boosted to the top. Without wallet_id, you get the standard broadcast feed.