About three.ws KOL
KOL is a three.ws MCP server for a deep dive into one tracked trader wallet. It returns the wallet's live holdings, on-chain realized P&L and its buys and sells of a given token. It suits agents deciding whether to copy or analyze that trader.
Key features
- 01Live portfolio card for a single wallet
- 0230-day realized P&L from on-chain trades
- 0330-day win rate, trade count and volume
- 04One wallet's buys and sells of a given mint
- 05Separates empty history from upstream failures
Use cases
- 01Deciding whether to follow a tracked trader
- 02Reviewing a trader's entries and exits on one token
- 03Checking a trader's track record inside an agent workflow
MCP support
The server provides the read-only MCP tools get_wallet_portfolio and get_wallet_trades. The client needs no API key or signer, as data is served through the three.ws backend proxy.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @three-ws/kol-mcpTHREE_WS_BASEBase URL of the three.ws API that serves the KOL endpoints. Override only when self-hosting or targeting a preview deployment.THREE_WS_TIMEOUT_MSPer-request timeout in milliseconds for the live KOL reads.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
2Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| wallet | string | Yes | The Solana wallet address of the KOL trader to pull a portfolio card for. |
Details
From the project README@three-ws/kol-mcp
Track one smart trader: a tracked KOL wallet's holdings, real on-chain P&L, and its trades on a given mint, from any AI agent.
A Model Context Protocol server for the per-wallet KOL deep dive. Where
@three-ws/intel-mcpranks the whole tracked KOL set (kol_leaderboard) and shows everyone's trades on a mint (kol_trades), this server zooms in on one smart trader: pull their live portfolio card (holdings plus real on-chain P&L), then inspect their own buys/sells of a specific token: everything an agent needs to decide whether to copy or analyze them.
Holdings come from the three.ws Birdeye proxy (the Birdeye key lives server-side); P&L is FIFO-computed from the wallet's own on-chain trades, and trade history comes from the three.ws Helius-backed KOL feed. All live, read-only: no API key, signer, or payment on the client. Point THREE_WS_BASE at a deployment and go.
Install
npm install @three-ws/kol-mcp
Or run with npx (no install):
npx @three-ws/kol-mcp
Quick start
Claude Code, one line:
claude mcp add kol -- npx -y @three-ws/kol-mcp
Claude Desktop / Cursor (claude_desktop_config.json or mcp.json):
{
"mcpServers": {
"kol": {
"command": "npx",
"args": ["-y", "@three-ws/kol-mcp"]
}
}
}
Inspect the surface with the MCP Inspector:
npx -y @modelcontextprotocol/inspector npx @three-ws/kol-mcp
Tools
| Tool | Type | What it does |
|---|---|---|
get_wallet_portfolio | read-only | One KOL wallet's live portfolio card: holdings value, position count and top holding, plus 30d realized P&L, win rate, trades and volume from its own on-chain trades. |
get_wallet_trades | read-only | That wallet's recent buys/sells of a given mint — side, SOL size, token amount, price, USD value, and timing, newest first. |
Both tools read live data: holdings, P&L and trade feeds move between calls, so neither is idempotent.
Input parameters
get_wallet_portfolio — wallet (required).
get_wallet_trades — wallet (required), mint (required), limit (1–100, default 20).
The three.ws trade feed is mint-keyed (it scans every tracked KOL wallet for activity on one mint), so a per-wallet view is that feed narrowed to your wallet.
get_wallet_tradestherefore needs both awalletand amint. To see every tracked wallet's trades on a mint, usekol_tradesin@three-ws/intel-mcp.
Example
// get_wallet_portfolio
> { "wallet": "5xY…KoL" }
{
"ok": true,
"wallet": "5xY…KoL",
"has_activity": true,
"portfolio_value_usd": 38120,
"holdings": 14,
"top_token": { "symbol": "THREE", "valueUsd": 21500 },
"realized_pnl_usd": 124300,
"win_rate": 0.64,
"total_trades": 412,
"volume_usd": 2840000,
"pnl_source": "onchain-fifo",
"pnl_window": "30d"
}
// get_wallet_trades
> { "wallet": "5xY…KoL", "mint": "FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump", "limit": 3 }
{
"ok": true,
"wallet": "5xY…KoL",
"mint": "FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump",
"count": 2,
"trades": [
{ "side": "buy", "amountSol": 4.2, "amountToken": 1830000, "price": 0.0000022, "usd": 612.4, "time": "2026-06-24T09:12:03.000Z", "source": "kol", "label": "Top Trader" }
]
}
has_activity: false on a portfolio (no holdings and no trades) means the proxy has no recorded history for that address yet: an honest "no data", not a failure. A null P&L field with pnl_source: null is the same kind of honesty at field level: three.ws has no trade history for that wallet in the window, so it reports nothing rather than a zero that would read as a flat record.
An outage is never dressed up as either of those. When the holdings provider is down or rate-limited, three.ws omits the wallet's row rather than inventing one, and get_wallet_portfolio fails with upstream_unavailable instead of answering with an empty card. A quiet wallet and a dark provider are different answers, and an agent copying a trader needs to be able to tell them apart.
Examples
Runnable examples live in examples/:
node examples/list-tools.mjs # both tools with their full input schemas
node examples/wallet-card.mjs # a trader's portfolio card + trades, live
Both spawn this server over stdio and read the live public KOL API. Every tool
here is read-only, so nothing can be signed, spent, or published. See
examples/README.md for expected output.
Requirements
- Node.js >= 20.
- Network access to
https://three.ws(or your ownTHREE_WS_BASE).
Environment variables
| Variable | Required | Default |
|---|---|---|
THREE_WS_BASE | no | https://three.ws |
THREE_WS_TIMEOUT_MS | no | 20000 |
No key on the client: the Birdeye key that backs the holdings half and the Helius key behind the trade feed both live server-side on three.ws.
Links
- Homepage: https://three.ws
- Changelog: https://three.ws/changelog
- Issues: https://github.com/nirholas/three.ws/issues
- License: Apache-2.0, see LICENSE
Part of the three.ws SDK suite — 3D AI agents, on-chain identity, and agent payments.
Website · Changelog · GitHub
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.