MCP Server
MCP
three.ws Portfolio
An agent's trading state — portfolio value, PnL, live balances, trade feed, and signed transfers.
Install
npx -y @three-ws/[email protected]
Configuration Example
{
"remotes": [],
"packages": [
{
"registryType": "npm",
"identifier": "@three-ws/portfolio-mcp",
"version": "0.1.1",
"runtimeHint": "npx",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Base URL of the three.ws API that serves the portfolio + trades endpoints. Override only when self-hosting or targeting a preview deployment.",
"format": "string",
"default": "https://three.ws",
"name": "THREE_WS_BASE"
},
{
"description": "Per-request timeout in milliseconds for the live three.ws API reads.",
"format": "number",
"default": "20000",
"name": "THREE_WS_TIMEOUT_MS"
},
{
"description": "Your three.ws session token (the value of the `__Host-sid` cookie from a signed-in browser). Required for the account-scoped reads — get_portfolio_summary, get_portfolio_history, get_portfolio_asset — which return data for the agents YOU own. The public trade feed and on-chain balance reads do not need it. Treat like a password.",
"format": "string",
"isSecret": true,
"name": "THREE_WS_SESSION"
},
{
"description": "Solana mainnet RPC endpoint used by get_wallet_balances and send_transfer. Defaults to https://api.mainnet-beta.solana.com — bring your own (Helius / Quicknode / Triton) for production traffic.",
"format": "string",
"default": "https://api.mainnet-beta.solana.com",
"name": "SOLANA_RPC_URL"
},
{
"description": "Base58-encoded Solana secret key for the wallet that send_transfer signs from. REQUIRED for send_transfer (the only write tool); a per-call `secret` arg overrides it. Not needed for any read tool. Treat like cash.",
"isRequired": true,
"format": "string",
"isSecret": true,
"name": "SOLANA_SECRET_KEY"
},
{
"description": "Per-transaction spend cap in SOL for native SOL transfers via send_transfer. Bounds the blast radius of a leaked key or an injected argument.",
"format": "number",
"default": "0.5",
"name": "MAX_SOL_PER_TX"
},
{
"description": "Optional comma-separated base58 pubkeys. When set, send_transfer refuses any recipient not in the list.",
"format": "string",
"name": "RECIPIENT_ALLOWLIST"
},
{
"description": "When on (default), send_transfer refuses until re-issued with confirm:true. Set 0/false to disable the gate.",
"format": "boolean",
"default": "true",
"name": "REQUIRE_CONFIRM"
}
]
}
]
}
mcp
model-context-protocol
npm
By
Comments
Sign in to leave a comment