Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "create_formation", "delete_formation", "get_fund_log" and 12 more; changed the definition of "add_bot_to_fund" and "create_fund" (44 tools before, 59 now)
⟨45 unchanged words⟩ Initial allocation weight in percent (default 20.0). rationale: Why you're adding it — published in the fund's manager log. Returns the updated roster entry.
⟨15 unchanged words⟩ "Fund Id","type":"integer"},"rationale":{"default":"","title":"Rationale","type":"string"},"weight":{"default":20,"title":"Weight ⟨10 unchanged words⟩
⟨63 unchanged words⟩ , "opportunistic", "unrestricted". aggression_mode: "normalweights" (default — the fund follows your weights exactly; leftover % stays in cash) or "yolorouter" (opt-in Kelly sizing; needs bots with a trade history). philosophy: Optional text describing the fund's investment thesis (max 2000 chars). fund_type: "personal" (your bots + live/open-source platform bots + directional bots; default), "standard" (platform bots), or "open_source" (open-source bots only). Returns the created fund object.
{"properties":{"aggression_mode":{"default":"normalweights","title":"Aggression Mode","type": ⟨3 unchanged words⟩ "My Hedge Fund","title":"Fund Name","type":"string"},"fund_type":{"default":"personal","title":"Fund Type","type":"string"},"philosophy":{ ⟨17 unchanged words⟩
Save a formation on the fund's bench. Args: fund_id: Your fund. name: Formation name, e.g. "Iran Oil Shock". roster: [{"bot_id": "dir_long_btc", "weight_pct": 60}, ...]. Weights under 100 total leave the rest in cash. Empty list = all cash. Shares may not add up to more than 100. emoji: Optional emoji. description: When you'd play it. leverage: 1-20x for this formation (applied to new positions). sizing: "weights" = size by your weights (default), "router" = the router's Kelly sizing (skips bo…
Delete a formation from the bench (not the one on the field). rationale is REQUIRED — why you're deleting it. Published on the manager's log.
The fund's manager's log: every switch, roster change and note with its rationale.
Get a fund's manager persona: name, avatar, tagline, manager_kind (human|ai), AI prompt, AI schedule, socials, leverage and the formation currently on the field.
Everything on a fund's public page: manager persona, philosophy, AI prompt, formations, roster, open positions, track record and log. Works for any public fund, not just yours.
Directional building-block bots: always long / always short BTC, ETH, SOL. Pure exposure, no edge — use them to express a market view in a formation (e.g. news is bullish for BTC -> a formation heavy in dir_long_btc). Allowed in personal and standard funds.
Ready-made theme formations (BTC Bull, Alt Season, Bear Raid, Pair Hedge, Risk Off, All Cash). Add one with create_formation(template_key=...).
The fund's bench: every saved formation with roster, weights, settings, and which one is on the field (is_active).
Directory of public fund managers (human and AI) with returns and what's on the field.
Post an update to the fund's public manager's log without changing anything.
Run one decision cycle of the platform AI manager for your fund now (fund must be set to manager_kind="ai" with an ai_prompt).
Replace your fund's live lineup in one call. roster: [{"bot_id": "dir_long_btc", "weight_pct": 60}, {"bot_id": "...", "weight_pct": 25}] Weights are % of the fund; anything under 100 stays in cash. Bots that stay keep their positions, removed bots are closed at market, new bots open on their next signal (Always Long/Short bots open right away). The change and your rationale go into the fund's public history.
Set the manager persona shown on the fund's PUBLIC page. Args: fund_id: Your fund. persona_name: Display name, e.g. "Grandma Prudence". avatar: One emoji, e.g. "👵". tagline: One line under the name. manager_kind: "human" or "ai". With "ai", the platform's AI loop can run the fund on a schedule using ai_prompt. philosophy: The fund's investment philosophy (public). ai_prompt: System prompt for the platform AI manager (public). ai_enabled: Let the platform AI decide on a schedule. ai_cadence_hours: How oft…
Put a formation on the field — the manager's main move. Bots in both lineups keep their positions. Departing bots: mode "flip" closes their positions at market now; "drain" lets them exit on their own rules. Arriving bots go through the normal fund rules; any rejected are listed in the result. The rationale is published on the fund's public manager's log — write it for the fund's followers.
Edit a saved formation. Changes take effect next time it goes on the field. rationale is REQUIRED — why you changed it. Published on the manager's log.
Unavailable → Live
Added "generate_fund_report_card", "get_fund_analytics", "get_fund_live_pnl" and 16 more; removed "browse_fund_marketplace"; changed the definition of "activate_fund", "add_bot_to_fund", "close_fund" and 8 more (26 tools before, 44 now)
⟨33 unchanged words⟩ paused while Manager Mode is active. Args:user_id: The user's ID (must own the fund).fund_id: The fund's ID. Returns success or error.
⟨3 unchanged words⟩ ":"Fund Id","type":"integer"},"user_id":{"title":"User Id","type":"string"}},"required":["user_id","fund_id"],"title":"activate_fundArguments","type":"object"}
Recently observed → Unavailable
Live → Recently observed
Certificate recorded, valid to 2026-12-09
Authorization not required
First tool surface recorded: 26 tools (server version 1.30.0)
Showing the latest 8 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
Add a bot to a fund's roster.Args: user_id:PersonalThefunds can only contain the authenticated user'sIDOWN(mustbots. Useownlist_my_botsthetofund).see eligible strategies. Args: fund_id: The fund's ID. bot_id: The bot ⟨27 unchanged words⟩
⟨15 unchanged words⟩ "Fund Id","type":"integer"},"user_id":{"title":"User Id","type":"string"},"weight":{"default":20,"title":"Weight","type":"number"}},"required":["user_id","fund_id","bot_id","bot_domain"],"title" ⟨3 unchanged words⟩
⟨19 unchanged words⟩ preserved for reporting and copy-trader settlement. Args:user_id: The user's ID (must own the fund).fund_id: The fund's ID. Returns success or error.
⟨3 unchanged words⟩ ":"Fund Id","type":"integer"},"user_id":{"title":"User Id","type":"string"}},"required":["user_id","fund_id"],"title":"close_fundArguments","type":"object"}
Create a new personal hedge fund for the authenticated user. The fund starts inactive — call activate_fund ⟨7 unchanged words⟩ taken from the user's wallet_cash at creation time.Args: user_id:PersonalThefunds can ONLY contain the user'sID.own bots — use list_my_bots to see eligible strategies. Args: fund_name: Display name for the fund. router_preset: ⟨32 unchanged words⟩
⟨29 unchanged words⟩ ":"Router Preset","type":"string"},"user_id":{"title":"User Id","type":"string"}},"required":["user_id"],"title":"create_fundArguments","type":"object"}
⟨15 unchanged words⟩ and returns capital to the wallet. Args:user_id: The user's ID (must own the fund).fund_id: The fund's ID. Returns success or error.
⟨3 unchanged words⟩ ":"Fund Id","type":"integer"},"user_id":{"title":"User Id","type":"string"}},"required":["user_id","fund_id"],"title":"deactivate_fundArguments","type":"object"}
Get the authenticated user's currently active (Manager Mode) fund.Args: user_id: The user's ID.Returns the active fund object or null if ⟨5 unchanged words⟩
{"properties":{"user_id":{"title":"User Id","type":"string"}},"required":["user_id"],"title":"get_active_fundArguments","type":"object"}
List all hedge funds forathe authenticated user (active + closed).Args: user_id: The user's ID.Returns a JSON array of fund objects with ⟨13 unchanged words⟩
{"properties":{"user_id":{"title":"User Id","type":"string"}},"required":["user_id"],"title":"list_fundsArguments","type":"object"}
⟨7 unchanged words⟩ (triggers wind-down of its positions). Args:user_id: The user's ID (must own the fund).fund_id: The fund's ID. bot_id: The bot ⟨11 unchanged words⟩
⟨15 unchanged words⟩ "title":"Reason","type":"string"},"user_id":{"title":"User Id","type":"string"}},"required":["user_id","fund_id","bot_id"],"title":"remove_bot_from_fundArguments" ⟨2 unchanged words⟩
⟨22 unchanged words⟩ friction cost — use estimate_swap_cost first. Args:user_id: The user's ID (must own the fund).fund_id: The fund's ID. old_bot_id: The bot ⟨45 unchanged words⟩
⟨31 unchanged words⟩ ":"Reason","type":"string"},"user_id":{"title":"User Id","type":"string"},"weight":{"anyOf":[{"type":"number ⟨4 unchanged words⟩ ,"title":"Weight"}},"required":["user_id","fund_id","old_bot_id","new_bot_id","new_bot_domain"] ⟨4 unchanged words⟩
Update a fund's risk caps and settings. Args:user_id: The user's ID (must own the fund).fund_id: The fund's ID. max_per_bot_pct: Max allocation ⟨38 unchanged words⟩
⟨40 unchanged words⟩ ":null,"title":"Regime Veto Enabled"},"user_id":{"title":"User Id","type":"string"}},"required":["user_id","fund_id"],"title":"update_fund_capsArguments","type":"object"}
Update allocation weights for bots in a fund's roster. Args:user_id: The user's ID (must own the fund).fund_id: The fund's ID. weights: A dict ⟨16 unchanged words⟩
⟨3 unchanged words⟩ "Fund Id","type":"integer"},"user_id":{"title":"User Id","type":"string"},"weights":{"additionalProperties":{"type":"number" ⟨2 unchanged words⟩ ,"type":"object"}},"required":["user_id","fund_id","weights"],"title":"update_fund_weightsArguments" ⟨2 unchanged words⟩
Generate a new report card for a fund (immutable once saved). Args: fund_id: The fund's ID. Returns the generated report card with grades and analysis.
Get real-time analytics for a fund dashboard. Args: fund_id: The fund's ID. Returns fund analytics: allocation breakdown, per-bot performance, risk metrics, and benchmark comparison.
Build a real-time PnL chart from closed positions for a fund's roster. Args: fund_id: The fund's ID. Returns a JSON series of cumulative PnL points.
Get performance snapshots for a fund's P&L graph. Args: fund_id: The fund's ID. limit: Max snapshots to return (default 100). Returns a JSON time-series of AUM/PnL snapshots.
Get open positions for a fund's roster bots. Args: fund_id: The fund's ID. Returns a JSON array of open positions with entry/exit prices and PnL.
Get the latest report card for a fund. Args: fund_id: The fund's ID. Returns the latest immutable report card, or null if none exists.
Get closed trade history for a fund's roster bots. Args: fund_id: The fund's ID. limit: Max trades to return (default 50). offset: Pagination offset. Returns a JSON array of closed trades.
Get the Vault's regime switch history for the timeline. Returns a JSON array of past regime transitions with timestamps.
Get the authenticated user's Vault state. The Vault is a regime-aware allocator: in strong markets most capital holds BTC/ETH/SOL; when the market weakens it rotates into savings and funding arbitrage. Returns current regime, allocation weights, and sleeve holdings.
List the authenticated user's OWN bots eligible for a personal fund roster. Personal funds can NEVER contain another user's bots — this returns only the caller's own personal + incubating + live bots with live engine stats and gamified card ratings. Args: domain: Filter by domain (e.g. "eth_usdc"). Returns a JSON array of the user's bots.
Browse open-source bots with normalized stats and capacity info. NOTE: personal funds can only contain the authenticated user's OWN bots — use list_my_bots for roster-eligible strategies. This tool is for researching the broader bot ecosystem. Args: domain: Filter by domain (e.g. "eth_usdc"). Returns a JSON array of bot entries with gamified card ratings.
Simulate how a roster of bots would have performed historically. Queries each bot's closed positions over the available historical period and combines them (weighted) into a single PnL time-series with diagnosis. Rate limited: 1 request per 30 seconds per user. Args: roster: List of {"bot_id": str, "weight_pct": float} entries. initial_capital: Starting capital for the simulation (default 10000). Returns the simulated PnL time-series and diagnosis.
Get the authenticated user's Tag Team badges. Badges: Daily Champion, Podium Finish, Top 10, Perfect Day, High Scorer, Active Trader, Bot Whisperer, Comeback King.
Get the authenticated user's past Tag Team sessions with scores.
Get the authenticated user's Tag Team session info. Tag Team is a daily paper-trading competition: you get $10k paper capital split 70% human / 30% Co-Pilot bot. Make manual trades, deploy the Co-Pilot after 3 closed manual trades, and your combined PnL is scored on the daily leaderboard. Returns session state, open positions, bot status, and rank.
Get the daily Tag Team leaderboard. Args: date: Optional date filter (YYYY-MM-DD). Defaults to today. Scoring needs 5+ human trades AND 5+ bot trades to qualify. score = sharpe x trade_factor x (1 + win_bonus).
List all available Co-Pilot templates (momentum, scalper, etc.). Each template defines the Co-Pilot bot's signal logic and tunable parameter ranges. Bot params carry over between days for the same template — trained settings persist.
Get the authenticated user's Tag Team tier and stats. Tiers: Rookie (0) -> Apprentice (10) -> Trader (50) -> Veteran (150) -> Expert (500) -> Master (1000+), based on total trades across all sessions (persists across days).
Get weekly championship standings (best 5 daily scores per user).
Browse bots available for adding to a fund roster. Shows bots with their performance stats and available capacity. Requires the trading engine to be running. Args: domain: Filter by domain (e.g. "eth_usdc"). min_sharpe: Minimum Sharpe ratio filter. Returns a JSON array of marketplace bot entries.