x402 client SDK for MadeOnSol Solana KOL intelligence API. Works with LangChain, CrewAI, and standalone.
Project description
madeonsol-x402
Python SDK for the MadeOnSol Solana KOL intelligence API.
Real-time Solana trading intelligence: track 1,000+ KOL wallets with <3s latency, score 6,700+ Pump.fun deployers by reputation, detect multi-KOL coordination signals, monitor any Solana wallet for swaps and transfers, and stream every DEX trade. Free tier: 200 requests/day at madeonsol.com/developer — no credit card required.
Authentication
Two options (in priority order):
| Method | Parameter / Env var | Best for |
|---|---|---|
| MadeOnSol API key (recommended) | api_key / MADEONSOL_API_KEY |
Developers — get a free key |
| x402 micropayments | private_key / SVM_PRIVATE_KEY |
AI agents with Solana wallets |
Install
pip install madeonsol-x402 # core SDK
pip install madeonsol-x402[langchain] # + LangChain tools
pip install madeonsol-x402[crewai] # + CrewAI tools
x402 dependencies are only needed when using
private_key/SVM_PRIVATE_KEY.
Quick Start
from madeonsol_x402 import MadeOnSolClient
client = MadeOnSolClient(api_key="msk_your_api_key_here")
# Real-time KOL trades
trades = client.kol_feed(limit=10, action="buy")
# KOL convergence signals
signals = client.kol_coordination(period="24h", min_kols=3)
# KOL leaderboard — 180 days of history
leaders = client.kol_leaderboard(period="7d") # today | 7d | 30d | 90d | 180d
# Deployer alerts — PRO/ULTRA can filter by tier
alerts = client.deployer_alerts(limit=10)
elite_only = client.deployer_alerts(limit=10, tier="elite") # PRO/ULTRA only
# Wallet Tracker
watchlist = client.rest.wallet_tracker_watchlist()
client.rest.wallet_tracker_add("WALLET_ADDRESS", label="whale")
events = client.rest.wallet_tracker_trades(limit=50)
LangChain
from madeonsol_x402.langchain_tools import ALL_TOOLS
# Set MADEONSOL_API_KEY or SVM_PRIVATE_KEY env var
agent = create_react_agent(llm, tools=ALL_TOOLS)
CrewAI
from madeonsol_x402.crewai_tools import ALL_TOOLS
agent = Agent(role="Solana Analyst", tools=ALL_TOOLS)
Endpoints
KOL Intelligence
| Method | Description |
|---|---|
kol_feed() |
Real-time KOL trade feed (1,000+ wallets) |
kol_coordination() |
Multi-KOL convergence signals |
kol_leaderboard() |
PnL and win rate rankings — windows: today, 7d, 30d, 90d, 180d (180-day retention) |
kol_pairs() |
KOL affinity matrix — which KOLs co-trade the same tokens |
kol_hot_tokens() |
KOL momentum tokens — accelerating buy interest |
REST API (API key or x402)
| Method | Description |
|---|---|
rest.kol_pnl(wallet, period=) |
Deep per-wallet PnL: equity curve, risk metrics, positions. BASIC=summary, PRO=+curve+closed, ULTRA=+open. |
rest.kol_trending_tokens(period=, min_kols=, limit=) |
Tokens ranked by KOL buy volume (5m–12h). Sub-hour periods PRO+ only. |
rest.kol_timing(wallet) |
KOL entry/exit timing profile |
rest.deployer_trajectory(wallet) |
Deployer skill curve — streaks, rolling bond rate, trend |
rest.deployer_alerts(limit=, tier=) |
Pump.fun deployer launches with KOL enrichment |
Alpha Wallet Intelligence (PRO/ULTRA)
| Method | Description |
|---|---|
rest.alpha_leaderboard(period=, min_tokens=, sort=, exclude_bots=) |
Leaderboard of 47,000+ scored wallets. BASIC: 25, PRO: 100, ULTRA: 500. |
rest.alpha_wallet(wallet) |
Full wallet profile + bot_signals — ULTRA only |
rest.alpha_linked(wallet) |
Linked-wallet clustering (co-buyers within 2s) — ULTRA only |
rest.token_cap_table(mint) |
First buyers enriched with win rates, PnL, KOL identity — PRO/ULTRA |
rest.token_buyer_quality(mint) |
0–100 cohort quality score. All tiers. |
Wallet Tracker
| Method | Description |
|---|---|
rest.wallet_tracker_watchlist() |
List tracked wallets and remaining capacity (BASIC: 10, PRO: 50, ULTRA: 100) |
rest.wallet_tracker_add(wallet_address, label=) |
Add wallet to watchlist |
rest.wallet_tracker_remove(wallet_address) |
Remove wallet from watchlist |
rest.wallet_tracker_update_label(wallet_address, label) |
Update wallet label |
rest.wallet_tracker_trades(wallet=, action=, event_type=, limit=, before=) |
Historical swap/transfer events (120-day retention) |
rest.wallet_tracker_summary(period=, wallet=) |
Per-wallet stats: swap counts, SOL bought/sold, last event |
General
| Method | Description |
|---|---|
token_info(mint) |
Token intelligence — price, market cap, volume, deployer, KOL activity |
api_status() |
System health — service status and uptime (no auth required) |
discovery() |
List all endpoints and prices (free) |
DEX Firehose (Ultra) — WebSocket
rest.get_stream_token() returns dex_ws_url (Ultra only). Connect with any WebSocket client (websockets, websocket-client, etc.) and use the multi-subscription protocol — up to 10 named subs per connection, each with its own sub_id, server-side filters, and optional replay from a 500-trade in-memory ring buffer.
import asyncio, json, websockets
from madeonsol_x402 import MadeOnSolClient
client = MadeOnSolClient(api_key="msk_...")
async def main():
token = client.rest.get_stream_token() # {"token", "ws_url", "dex_ws_url", ...}
# token MUST be appended as query param
async with websockets.connect(f"{token['dex_ws_url']}?token={token['token']}") as ws:
await ws.send(json.dumps({
"type": "subscribe",
"sub_id": "fresh-pumpfun",
"replay": 50, # up to 500 from ring buffer
"filters": {
"dex": "pumpfun",
"token_age_max_seconds": 300,
"min_sol": 0.5,
"action": "buy",
},
}))
async for raw in ws:
msg = json.loads(raw)
if msg.get("channel") == "dex:trades":
d = msg["data"]
print(msg["sub_id"], d["dex"], d["action"], d["sol_amount"])
asyncio.run(main())
Operations (all carry sub_id): subscribe, update (replace filters in place), unsubscribe, list, ping. Filters: token_mint(s) (≤50), wallet(s) (≤50), dex (pumpfun | pumpamm | pumpswap | raydium | jupiter | orca | meteora | launchlab), program, deployer_tier, token_age_max_seconds, market_cap_min/max_sol, min_sol, max_sol, action. At least one targeting filter is required. Inbound rate limit: 5 messages/sec.
Full protocol reference: madeonsol.com/api-docs#streaming.
Tiers
| Tier | Price | Wallets tracked | Requests/day |
|---|---|---|---|
| BASIC | Free | 10 | 200 |
| PRO | $49/mo | 50 | 10,000 |
| ULTRA | $199/mo | 100 + WS events | 100,000 |
Get a key at madeonsol.com/developer.
Also Available
| Platform | Package |
|---|---|
| TypeScript SDK | madeonsol on npm |
| MCP Server (Claude, Cursor) | mcp-server-madeonsol |
| ElizaOS | @madeonsol/plugin-madeonsol |
| Solana Agent Kit | solana-agent-kit-plugin-madeonsol |
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file madeonsol_x402-0.5.0.tar.gz.
File metadata
- Download URL: madeonsol_x402-0.5.0.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89678fd626ce7c69394aa4a3345b8df7bb1403d5fd5b88c16975d69294775098
|
|
| MD5 |
3fa6cd8ad485d5aa9ebd9ed599b43b65
|
|
| BLAKE2b-256 |
b5f85c95c07e822e40ddee48d5c343bbabab7e1f2054b27f0a5381588018859f
|
File details
Details for the file madeonsol_x402-0.5.0-py3-none-any.whl.
File metadata
- Download URL: madeonsol_x402-0.5.0-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efc2cf4f0c09751f437547f3bcba456fc7b0b646416cc04368c0ba0cb04b62f4
|
|
| MD5 |
6fb8520ec43604055e86ab874b1c4b50
|
|
| BLAKE2b-256 |
36a9c5050c507c616cfe6342d5206c71c74d2c3a95dbddfd0ab1bcb716448f34
|