Co-Invest
Co-Invest lets you trade directly from ChatGPT, Claude, or your AI of choice.
Что умеет
- Analyze Market: PRIMARY TOOL for any question about a specific tradeable asset on Liquid. Use this whenever the user asks about an asset's price, outlook, positioning, sentiment, what an asset is doin
- Get Positioning Pulse: Market-wide cohort-bias snapshot across Liquid markets with positioning data coverage. Returns the most one-sided assets split into long-heavy and short-heavy buckets, with noti
- Market Picks: Render 5 news-driven trade picks as interactive cards. ONLY call this as the final step of the /markets command flow, after calling get_news(), search_markets(), and get_positioning_puls
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Co-Invest lets you trade directly from ChatGPT, Claude, or your AI of choice.
Explore, analyze, and place trades across a wide range of assets through a simple conversational interface. Whether you’re tracking crypto, equities, commodities, FX, or market indexes, Co-Invest helps you move from idea to action without switching between multiple apps.
With 24/7 access, you can monitor opportunities, review positions, and execute trades whenever markets are moving. Ask questions in plain English, get relevant market context, and trade from the same chat where you’re already thinking through your next move.
Co-Invest is built for people who want a faster, more intuitive way to interact with markets: less tab-hopping, fewer complex menus, and a trading experience that feels natural from the first prompt.
Key features:
- Trade a broad range of assets
- Access markets 24/7
- Ask questions and get market context in plain English
- View positions and portfolio details conversationally
- Move from research to execution in one workflow
Liquid Co-Invest brings trading into the conversation, making it easier to understand markets, act on ideas, and stay connected to your portfolio.
Список инструментов сервера (34)
Технические названия из tools/list. Нужны только разработчикам.
| analyze_market | PRIMARY TOOL for any question about a specific tradeable asset on Liquid. Use this whenever the user asks about an asset's price, outlook, positioning, sentiment, what an asset is doing, how traders are positioned, or wants analysis on a particular market. Liquid covers equities (TSLA, AAPL, NVDA), commodities (GOLD, SILVER, OIL), indices (SP500), crypto (BTC, ETH, SOL), and more. Returns real-time Liquid price, funding, OI, and positioning data. Do NOT use search_markets when the user asks about a specific known asset — use analyze_market instead. |
| get_positioning_pulse | Market-wide cohort-bias snapshot across Liquid markets with positioning data coverage. Returns the most one-sided assets split into long-heavy and short-heavy buckets, with notional and position count. Use in the /markets flow BEFORE market_picks to ground picks in actual positioning, or when the user asks 'what's crowded?', 'what are traders long/short?', or wants a contrarian setup. Do NOT call for single-asset queries — use analyze_market instead. |
| market_picks | Render 5 news-driven trade picks as interactive cards. ONLY call this as the final step of the /markets command flow, after calling get_news(), search_markets(), and get_positioning_pulse(). Do NOT call for single-asset queries — use analyze_market instead. Each pick: asset, direction, news catalyst, reasoning — weight reasoning with the positioning pulse (contrarian vs. crowded) and the unusual-activity section from get_news. |
| analyze_markets_batch | Compare 2–10 markets side-by-side. Use when the user asks about more than one asset at once (e.g. 'how are BTC, ETH, and SOL looking?', 'compare gold to oil', 'show me my watchlist'). Returns a short text summary plus a multi-market widget. For deep single-asset analysis still use analyze_market. |
| suggest_trade | Suggest a trade with an interactive confirmation widget. When your analysis concludes with a specific directional trade (asset + side + size), call this tool to render a confirmation card instead of writing the parameters in prose or a markdown table. Only call when you have a concrete, data-backed trade recommendation — always call analyze_market first to gather data. Requires: asset, side, leverage, orderType, size, reasoning. TP/SL optional. The user must press Confirm to execute — a suggestion is NOT an execution. Do NOT call on purely informational queries. 'No trade' is a valid position. PREREQUISITE: call `get_portfolio` first to check `available_balance`. Refuse to suggest if `available_balance` is less than the requested `size` (notional in USD). Tell the user they need to fund their account first via the deposit flow. |
| execute_order | INTERNAL: Called by confirmation widgets when the user presses Confirm. Do not call directly. Execute a previously suggested order after user confirmation. This is called by the order confirmation widget — do not call directly. |
| modify_position | Modify an existing position — add, modify, or remove TP/SL levels. Use when the user wants to set, change, or remove stop loss or take profit on an open position. Do NOT use this to close a position — there is no direct close tool. To close a position, call get_portfolio and let the user press the Close button on the portfolio widget. Call get_portfolio first to get current position details (side, size, liquidation price). Renders a confirmation widget — the user must press Confirm to execute. |
| execute_tpsl | SYSTEM INTERNAL — called only by the tpsl-confirmation widget. The model must NEVER call this tool directly. |
| close_position | SYSTEM INTERNAL — called only by the close-position-confirmation widget. The model must NEVER call this tool directly. To close a position, call get_portfolio — the portfolio widget has a Close button. |
| suggest_trades_batch | Suggest 2–8 related trades together as a basket with a single Place-all button. Use ONLY when the user explicitly asks for multiple trades at once (e.g. 'long BTC and short ETH', 'open my pairs trade', 'execute the basket'). For a single trade always use suggest_trade. PREREQUISITE: call get_portfolio first and verify available_balance covers the SUM of all trade sizes (notionals in USD). Each trade is validated independently — invalid trades are rejected with a clear reason. The user MUST press Place all to execute. A suggestion is NOT an execution. |
| execute_orders_batch | INTERNAL: Called by the basket confirmation widget when the user presses Place all. Do not call directly. Executes a list of orders sequentially, collecting per-order results. |
| plan_portfolio | Build a multi-trade portfolio plan in one shot. Use this when the user asks for a 'portfolio', 'plan', 'how should I deploy $X', 'suggest a few trades', or any multi-position allocation question — instead of suggesting trades one at a time. PREREQUISITE: BEFORE calling this tool, you MUST collect the user's preferences using the client's built-in interactive question widget (the one rendered for AskUserQuestion / structured Q&A). NEVER ask the questions as a numbered prose list in chat — always use the native question UI. Required answers: (1) risk tolerance (conservative | moderate | aggressive), (2) time horizon (intraday | swing_week | position_long_term), (3) asset classes to consider (multi-select from crypto, equities, commodities, indices, fx). Do NOT ask about balance — this tool fetches the user's available_balance from their portfolio and assumes they want to deploy all of it. Once you have the three answers, call this tool. It fetches the account balance + news + market-wide positioning + top-trader cohort + unusual volume in parallel (plus upcoming earnings when equities are selected) and returns a research bundle plus sizing rules and synthesis instructions. AFTER this tool returns, you must (a) write a 2–3 sentence thesis, (b) call suggest_trades_batch ONCE with that thesis plus all proposed legs as a basket, then (c) write a 1–2 sentence risk wrap. Do NOT call suggest_trade per-leg — always use suggest_trades_batch for portfolio plans. Do NOT write the trade plan in prose or a markdown table. |
| search_markets | Search or browse the authoritative list of tradeable markets on Liquid. Use when the user asks what markets are available, wants to browse assets, needs to find a specific market symbol, or asks whether Liquid can trade something. Returns top markets by volume if no query, or filtered results matching a search term. Liquid covers equities, commodities, indices, crypto, and other supported markets. Do NOT use this for single-asset analysis (price, outlook, positioning) — use analyze_market instead. No visual — use show_market_overview for the full dashboard view. |
| show_market_overview | Render a visual market overview dashboard showing Liquid's full multi-asset trading surface, including equities, commodities, indices, crypto, and other supported markets. Only call when the user explicitly asks to see all markets, wants the full dashboard view, or asks for a visual overview of market activity. Do NOT use for single-asset queries — use analyze_market instead. Do NOT use for text-only market listings — use search_markets instead. |
| show_orderbook | Render an orderbook depth view widget for a specific asset. Only call when the user explicitly asks to see the order book, bid/ask spread, or market depth for a specific market. Do NOT call for general price or analysis queries — use analyze_market instead. |
| show_chart | Render a visual price chart (candlestick) widget for a specific asset. Only call when the user explicitly asks to see a chart, price history, or candlestick view (e.g. 'show me a chart of BTC', 'chart ETH'). Do NOT call for general price or analysis queries — use analyze_market instead, which returns price data as text without needing a visual chart. |
| view_open_orders | List the user's currently open orders — includes resting limit orders and position-level trigger orders (TP/SL). Use when the user asks about pending orders, working orders, resting limits, or current TP/SL levels. Do NOT confuse with get_portfolio — this shows ORDERS (pending/resting), not POSITIONS (active holdings). Returns text (no widget) with order id, symbol, side, kind (limit/tp/sl/trigger), size, price or trigger, and flags. The order id can be passed to cancel_order to cancel. |
| update_leverage | No-UI leverage update tool for an existing portfolio position. Do not call this automatically as the first step when the user asks to change leverage. First ask whether they have a custom integer leverage value in mind or whether they want an investigation/recommendation. If the user provides a custom value, call this with targetLeverage and confirmed=false to verify the open position, min/max bounds, and impact before confirmation. If the user asks for investigation, gather the needed account and market context first, then call this with the resulting targetLeverage and confirmed=false before confirmation. After the user explicitly confirms the change, call this again with the same targetLeverage and confirmed=true, or validationPhase='executetime', to execute the Liquid API leverage update. When targetLeverage is omitted, this only verifies the position and returns current/min/max context; use that only when the user asks for bounds or context. The tool always re-validates the current position and max leverage before executing. |
| cancel_order | Cancel an open order by its order ID. Call view_open_orders first to get the order ID. Only use for resting/pending orders, not for closing active positions — use modify_position with action='close' to close a position. |
| enable_trading | Check whether the user's Liquid account is ready for MCP trading and render the correct setup action. Use when a trade action says setup is required, when the user asks to enable trading, or after they fund their account. For funded embedded-wallet accounts that are missing the MCP trading key, the widget opens the Liquid re-auth/setup flow to create the right agent key. Liquid uses a non-custodial wallet model: the user stays in control, and trading through this MCP still requires explicit confirmation for state-changing actions. |
| get_portfolio | Get the user's complete portfolio — account balance, equity, margin, and all open positions with entry price, PnL, leverage, and TP/SL levels. Use when the user asks about their account, balance, positions, portfolio, how much they have, or their P&L. Also use this when the user wants to close a position: there is no direct close tool available to you — the portfolio widget renders per-position Close buttons that the user presses to trigger the close confirmation flow. Do NOT confuse with view_open_orders — this shows POSITIONS (active holdings), not ORDERS (pending/resting). Call this before suggest_trade or modify_position to get position details. Collateral routing: USDC perps use available USDC (account.available_balance). USDH-denominated assets (HIP-3 vntl:/flx:/km:) use the combined `USDH-denominated capacity` line under Currencies, which already rolls available USDH + USDC-convertible into one number — quote that, not raw USDH or raw USDC. Never tell the user to convert USDH→USDC before trading a USDH-denominated asset; check `analyze_market`'s `Collateral` field to know which currency each market uses. |
| show_portfolio_chart | Render a visual pie chart of portfolio allocation by notional value. Only call when the user explicitly asks to see a portfolio chart, allocation breakdown, or visual representation of their positions. Do NOT call for general portfolio/balance queries — use get_portfolio instead, which returns text data. |
| get_news | Get recent market news headlines with source links, plus a Liquid unusual-activity section (tradeable symbols whose last-hour volume is anomalously high vs. 24h average). Covers equities, commodities, indices, crypto, and macro. Returns text for the model to reference — no visual widget. Use to cross-reference headlines against positioning data, or when the user asks 'what's happening in the markets' or about recent news. Returns curated trading headlines mapped to Liquid's tradeable markets. |
| enable_paper_trading | Switch the current account into paper trading mode. When enabled, every tool in this server routes to the paper trading simulator — orders, closes, TP/SL, positions, and account balances are all simulated with no real funds at risk. Call this whenever the user asks to 'paper trade', 'try trades without real money', 'practice', 'simulate', or similar. Idempotent — calling it twice simply keeps paper mode on. |
| disable_paper_trading | Exit paper trading mode and return to live trading. After this is called, trading tools route to the live Liquid API and use real funds. Call this when the user asks to 'stop paper trading', 'go back to live', 'trade real money', or similar. Idempotent — calling it when paper mode is already off is a no-op. |
| reset_paper_account | Reset the current paper trading account back to its original state: wipes every open position, cancels every open order, clears fills / funding history / leverage overrides, and restores the balance to the default equity (10,000 USD). Only works while paper trading is enabled — refuses to run in live mode to prevent accidents. Use this when the user asks to 'reset my paper account', 'start over', 'give me a fresh 10k', 'wipe my paper trades', or similar. This is destructive and irreversible for the paper account; there is no confirmation step beyond the user's request. |
| paper_trading_status | Report whether paper trading is currently enabled for this account. Use when the user asks 'am I paper trading?' or you need to disambiguate before executing a trade. |
| show_deposit | Show the deposit widget so the user can fund their Liquid account. Offers credit card via Stripe, credit card via Swapped, Other Apps (Coinbase, MetaMask, etc.), and wallet transfer. The user picks a method in the widget. |
| generate_deposit_address | INTERNAL: Called by the deposit widget when the user picks a token + chain for a crypto deposit. Do not call directly. Returns { address, chain, direct }. HyperCore resolves to the user's own wallet (direct=true, no bridging); other chains return a Relay bridge address (direct=false). |
| create_onramp_session | INTERNAL: Called by the deposit widget when the user confirms a fiat amount for credit card or Other Apps. Do not call directly. Returns { url }. |
| refer | Show the authenticated user's referral link and stats. Called when the user types /refer. Returns a widget with copy/share buttons and referral performance summary. |
| convert_balances | Convert between USDC and USDH on Hyperliquid. Use when the user explicitly asks to swap between the two, or when they need to top up USDH for a USDH-denominated perp order. Unified-account users complete native USDC↔USDH ≥ $10 inline via the MCP trading agent; smaller USDH→USDC sells and legacy accounts render an interactive widget so the user can open the Liquid app to sign in their browser. `needed_amount` is the EXACT amount of destination token to produce. If the user says 'convert 20 USDH to USDC', pass 20 — the server converts that much regardless of existing destination balance. Minimum is 15. DO NOT auto-retry on error or timeout — under unified-account mode the server may execute the swap inline, so funds can move before a response is returned. On error, check the user's actual balance first; if some of the destination token has already landed, complete the rest via convert_balances with the remaining amount (or let the user click the deep-link from a prior response). |
| _convert_pending_status | INTERNAL: Polled by the convert-pending widget. Returns the current status of a pending conversion request. The model should NOT call this directly except to manually check on a stuck conversion the user is asking about. Status values: awaiting_user (user hasn't signed yet), completed (success — proceed with original action), failed (the conversion errored). |
| help | List Liquid AI's user-facing capabilities grouped by category. Call this when the user asks what you can do, says 'help', sends '/help', or seems unsure how to use the platform. |