mcpField
T
three.ws KOL

three.ws KOL

Local
three.wsFinance255Updated today

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

  1. 01Live portfolio card for a single wallet
  2. 0230-day realized P&L from on-chain trades
  3. 0330-day win rate, trade count and volume
  4. 04One wallet's buys and sells of a given mint
  5. 05Separates empty history from upstream failures

Use cases

  1. 01Deciding whether to follow a tracked trader
  2. 02Reviewing a trader's entries and exits on one token
  3. 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.

mcp.json · Universal config
{
"mcpServers": {
"nirholas-kol": {
"command": "npx",
"args": [
"-y",
"@three-ws/kol-mcp"
],
"env": {
"THREE_WS_BASE": "<THREE_WS_BASE>",
"THREE_WS_TIMEOUT_MS": "<THREE_WS_TIMEOUT_MS>"
}
}
}
}
Run commandnpx -y @three-ws/kol-mcp
Environment variables to set
THREE_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.

Packages
npm@three-ws/kol-mcp0.1.2

Tools

2

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
walletstringYesThe Solana wallet address of the KOL trader to pull a portfolio card for.

Details

From the project README

three.ws

@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.

npm license node MCP Registry three.ws


A Model Context Protocol server for the per-wallet KOL deep dive. Where @three-ws/intel-mcp ranks 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

ToolTypeWhat it does
get_wallet_portfolioread-onlyOne 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_tradesread-onlyThat 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_trades therefore needs both a wallet and a mint. To see every tracked wallet's trades on a mint, use kol_trades in @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 own THREE_WS_BASE).
Environment variables
VariableRequiredDefault
THREE_WS_BASEnohttps://three.ws
THREE_WS_TIMEOUT_MSno20000

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


Part of the three.ws SDK suite — 3D AI agents, on-chain identity, and agent payments.
Website · Changelog · GitHub

Comments

Markdown supported

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.