> ## Documentation Index
> Fetch the complete documentation index at: https://docs.liquid.trade/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool reference

> Every Co-Invest MCP tool: inputs, annotations and an example call.

Tools served on Main come first. Tools marked with other surfaces only are not available on Main. See the [changelog](https://docs.liquid.trade/co-invest/changelog.md) for how this catalog changed.

## analyze\_market

**Analyzing the market**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Bring Liquid's powerful market intelligence into the conversation: real-time prices, funding, and proprietary positioning insights in one place. 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, CL for WTI crude, BRENT for Brent crude), indices (SP500), crypto (BTC, ETH, SOL), and more. If the result requires an asset choice, ask the user which candidate they mean and retry with its exact symbol. Returns real-time Liquid price, funding, OI, and positioning data, including the smart-money (profitable traders) vs losing-crowd long/short split when available. Do NOT use search\_markets when the user asks about a specific known asset — use analyze\_market instead. After presenting the analysis, offer in your own reply to turn it into a trade (a paper trade when paper trading is active; otherwise mention they can paper trade risk-free with \$10k simulated funds, or deposit and trade for real). Do NOT call suggest\_trade until the user says yes.

* `symbol` (string, **required**): Asset symbol for positioning data. Use the Liquid market symbol directly, e.g. BTC, ETH, HYPE, GOLD.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbol": "BTC"
}
```

## get\_positioning\_pulse

**Checking positioning pulse**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Uncover crowded trades and contrasting trader views with a 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, position count, and the smart-money vs losing-crowd split (profitable vs unprofitable pnl cohorts) — a wide gap where winners fade the crowd is the strongest contrarian signal. 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.

* `limit` (integer, optional; minimum 1; maximum 20): Max rows per bucket (long-heavy and short-heavy).
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## market\_picks

**Picking markets**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Bring market catalysts to life with 5 news-driven trade picks (at least 1; fewer only when fewer catalysts qualify) 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. After presenting the picks, ask in your own reply which pick the user would like to trade (paper trade when paper trading is active; otherwise mention they can paper trade risk-free with \$10k simulated funds, or deposit and trade for real). Do NOT call suggest\_trade until the user chooses one.

* `picks` (array, **required**; minItems 1; maxItems 5): 1 to 5 trade picks
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "picks": [
    {
      "asset": "BTC",
      "displayName": "x",
      "side": "long",
      "catalyst": "x",
      "reasoning": "Run the local fixture scenario for this tool."
    },
    {
      "asset": "BTC",
      "displayName": "x",
      "side": "long",
      "catalyst": "x",
      "reasoning": "Run the local fixture scenario for this tool."
    },
    {
      "asset": "BTC",
      "displayName": "x",
      "side": "long",
      "catalyst": "x",
      "reasoning": "Run the local fixture scenario for this tool."
    },
    {
      "asset": "BTC",
      "displayName": "x",
      "side": "long",
      "catalyst": "x",
      "reasoning": "Run the local fixture scenario for this tool."
    },
    {
      "asset": "BTC",
      "displayName": "x",
      "side": "long",
      "catalyst": "x",
      "reasoning": "Run the local fixture scenario for this tool."
    }
  ]
}
```

## analyze\_markets\_batch

**Comparing markets**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Put 2–10 markets side-by-side for a rich comparison of price, funding, and positioning. 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.

**Inputs on Main and Grok and ?profile=all:**

* `symbols` (array, **required**; minItems 2; maxItems 10): Between 2 and 10 asset symbols (e.g. \['BTC','ETH','SOL']).
* `thesis` (string, optional): One-sentence framing for why these markets are being compared together (e.g. 'risk-on basket ahead of CPI', 'pre-earnings watchlist'). Renders prominently in the widget — supply when there's a coherent reason these assets are grouped.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer and Computer support mode:**

* `symbols` (array, **required**; minItems 2; maxItems 10): Between 2 and 10 asset symbols (e.g. \['BTC','ETH','SOL']).
* `thesis` (string, optional): One-sentence framing for why these markets are being compared together (e.g. 'risk-on basket ahead of CPI', 'pre-earnings watchlist').
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbols": [
    "BTC",
    "BTC"
  ]
}
```

## suggest\_trade

**Suggesting a trade**

**Available on:** Main, Grok and ?profile=all, Computer

Bring a data-backed trade idea straight into a clear, 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. For limit orders you may set timeInForce (gtc default, ioc, or alo/post-only). 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`. `size` is notional exposure, NOT collateral — the required collateral is `size / leverage`. Refuse to suggest only if `available_balance` is less than `size / leverage` (the required collateral); e.g. a $600 order at 3x needs $200 collateral and is valid on a \$300 account. Tell the user they need to fund their account first via the deposit flow.

* `asset` (string, **required**): Liquid asset identifier. Examples: BTC, ETH, GOLD.
* `leverage` (number, **required**; exclusiveMinimum 0): Proposed leverage
* `orderType` (string, **required**; one of `"market"`, `"limit"`): Order type
* `reasoning` (string, **required**): Brief 1-sentence explanation
* `side` (string, **required**; one of `"long"`, `"short"`): Trade direction
* `size` (number, **required**; exclusiveMinimum 0): Order size as a USD notional dollar amount (collateral × leverage) — NOT a quantity of coins/contracts. E.g. 250 means $250 of exposure, not 250 units. Minimum $10 collateral × leverage. Always pass this as notional at your requested leverage, even when sizeBasis is 'margin' (e.g. $300 margin at 3x leverage is size=900, not size=300) — sizeBasis never converts this value for you. (e.g. $50 at 5x, \$100 at 10x).
* `limitPrice` (number, optional; exclusiveMinimum 0): Limit price (required if orderType is limit)
* `markPrice` (number, optional; exclusiveMinimum 0): Current mark price from market\_data
* `sizeBasis` (string, optional; one of `"margin"`, `"notional"`): `size` must already be the notional dollar amount computed at requestedLeverage regardless of this field — sizeBasis does NOT convert a margin/collateral number into notional for you (compute notional yourself as margin × requestedLeverage before calling). This only controls what gets preserved if the venue ends up using a different leverage than requestedLeverage (e.g. inheriting an existing position's leverage, or a leverage cap): 'notional' keeps size's dollar exposure fixed and recomputes margin; 'margin' keeps the margin implied by size/requestedLeverage fixed and recomputes notional at the new leverage. Defaults to notional.
* `stopLoss` (number, optional; exclusiveMinimum 0): Stop loss price
* `takeProfit` (number, optional; exclusiveMinimum 0): Take profit price
* `timeInForce` (string, optional; one of `"gtc"`, `"ioc"`, `"alo"`): Time-in-force for limit orders: 'gtc' rests on the book until filled or cancelled (default), 'ioc' fills whatever is immediately available and cancels the remainder, 'alo' is post-only / add-liquidity-only (rejected instead of taking liquidity). Ignored for market orders.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "asset": "BTC",
  "side": "long",
  "leverage": 5,
  "orderType": "market",
  "size": 100,
  "reasoning": "Run the local fixture scenario for this tool."
}
```

## suggest\_order

**Suggesting a paper order**

**Available on:** Main, Grok and ?profile=all, Computer

Prepare a paper-only order review link in Liquid after checking market and account context. This tool never places an order and cannot choose live mode. Paper trading mode must already be active for your wallet. Review the prefilled order in Liquid and confirm paper mode before placing it. Size is notional USD; sizeBasis preserves the user’s intended collateral or notional when leverage changes.

* `asset` (string, **required**): Liquid asset identifier. Examples: BTC, ETH, GOLD.
* `leverage` (number, **required**; exclusiveMinimum 0): Proposed leverage
* `orderType` (string, **required**; one of `"market"`, `"limit"`): Order type
* `reasoning` (string, **required**): Brief 1-sentence explanation
* `side` (string, **required**; one of `"long"`, `"short"`): Trade direction
* `size` (number, **required**; exclusiveMinimum 0): Order size as a USD notional dollar amount (collateral × leverage) — NOT a quantity of coins/contracts. E.g. 250 means $250 of exposure, not 250 units. Minimum $10 collateral × leverage. Always pass this as notional at your requested leverage, even when sizeBasis is 'margin' (e.g. $300 margin at 3x leverage is size=900, not size=300) — sizeBasis never converts this value for you. (e.g. $50 at 5x, \$100 at 10x).
* `limitPrice` (number, optional; exclusiveMinimum 0): Limit price (required if orderType is limit)
* `markPrice` (number, optional; exclusiveMinimum 0): Current mark price from market\_data
* `sizeBasis` (string, optional; one of `"margin"`, `"notional"`): `size` must already be the notional dollar amount computed at requestedLeverage regardless of this field — sizeBasis does NOT convert a margin/collateral number into notional for you (compute notional yourself as margin × requestedLeverage before calling). This only controls what gets preserved if the venue ends up using a different leverage than requestedLeverage (e.g. inheriting an existing position's leverage, or a leverage cap): 'notional' keeps size's dollar exposure fixed and recomputes margin; 'margin' keeps the margin implied by size/requestedLeverage fixed and recomputes notional at the new leverage. Defaults to notional.
* `stopLoss` (number, optional; exclusiveMinimum 0): Stop loss price
* `takeProfit` (number, optional; exclusiveMinimum 0): Take profit price
* `timeInForce` (string, optional; one of `"gtc"`, `"ioc"`, `"alo"`): Time-in-force for limit orders: 'gtc' rests on the book until filled or cancelled (default), 'ioc' fills whatever is immediately available and cancels the remainder, 'alo' is post-only / add-liquidity-only (rejected instead of taking liquidity). Ignored for market orders.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

## execute\_order

**Executing your order**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Execute a previously suggested order after user confirmation. This is called by the order confirmation widget — do not call directly. Confirmed by the user; call with confirmed=true after explicit approval.

**Inputs on Main:**

* `side` (string, **required**; one of `"buy"`, `"sell"`)
* `symbol` (string, **required**): Asset symbol, e.g. BTC, ETH, xyz:GOLD
* `aiAttribution` (object, optional)
* `confirmed` (boolean, optional): Must be true to execute. Missing or false is rejected as an error — this tool has no preview mode; use suggest\_trade for that.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode of the reviewed confirmation. Copy it unchanged from the proposal; missing or changed mode requires a new proposal.
* `idempotencyKey` (string, optional; minLength 1; maxLength 128): Optional. Set by the confirmation widget once per card so a retried Confirm click (after a network/timeout error where the order may already have executed) is rejected as a duplicate instead of placing a second order. Do not set this directly.
* `leverage` (number, optional; exclusiveMinimum 0): Leverage multiplier (e.g. 5). Required unless reduceOnly is true — a reduce-only order does not change leverage.
* `maxSlippageBps` (integer, optional; minimum 1; maximum 500): Optional max slippage in basis points (1-500) for market orders. The order is sent as an immediate-or-cancel limit at the current mid plus or minus this many bps; anything that cannot fill within it is cancelled. If it only partly fills, attached TP/SL is not placed; set it with execute\_tpsl.
* `price` (number, optional; exclusiveMinimum 0): Limit price. Required when type is 'limit'.
* `quantity` (number, optional; exclusiveMinimum 0): Exact order quantity in base-asset units (e.g. 0.25 BTC) — an alternative to size. On a limit order the placed quantity is exact; on a market order it is converted at the current price. When both size and quantity are present, quantity takes precedence.
* `reasoning` (string, optional): One-sentence rationale for this order
* `reduceOnly` (boolean, optional): When true the order can only reduce or close an existing position — it can never open or increase one. Use for partial take-profit exits, e.g. side=sell, type=limit, price=\<target>, quantity=\<coins to close>, reduceOnly=true. Cannot be combined with tp or sl.
* `requestedLeverage` (number, optional; exclusiveMinimum 0)
* `size` (number, optional; exclusiveMinimum 0): Order size as a USD notional dollar amount (collateral × leverage) — NOT a quantity of coins/contracts. E.g. 250 means $250 of exposure, not 250 units. Minimum $10 collateral × leverage. Always pass this as notional at your requested leverage, even when sizeBasis is 'margin' (e.g. \$300 margin at 3x leverage is size=900, not size=300) — sizeBasis never converts this value for you. Required unless quantity is provided.
* `sl` (number, optional; exclusiveMinimum 0): Stop-loss trigger price
* `timeInForce` (string, optional; one of `"gtc"`, `"ioc"`, `"alo"`): Time-in-force for limit orders: 'gtc' rests on the book until filled or cancelled (default), 'ioc' fills whatever is immediately available and cancels the remainder, 'alo' is post-only / add-liquidity-only (rejected instead of taking liquidity). Ignored for market orders.
* `tp` (number, optional; exclusiveMinimum 0): Take-profit trigger price
* `type` (string, optional; one of `"market"`, `"limit"`)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Grok and ?profile=all:**

* `side` (string, **required**; one of `"buy"`, `"sell"`)
* `symbol` (string, **required**): Asset symbol, e.g. BTC, ETH, xyz:GOLD
* `aiAttribution` (object, optional)
* `confirmed` (boolean, optional): Must be true to execute. Missing or false is rejected as an error — this tool has no preview mode; use suggest\_trade for that.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode of the reviewed confirmation. Copy it unchanged from the proposal; missing or changed mode requires a new proposal.
* `idempotencyKey` (string, optional; minLength 1; maxLength 128): Opaque key for this exact confirmed action. Generate one key and retain it for reconciliation and any safe retry; never invent a different key to repeat an uncertain result or bypass deduplication. Changed terms require a new review, confirmation and key.
* `leverage` (number, optional; exclusiveMinimum 0): Leverage multiplier (e.g. 5). Required unless reduceOnly is true — a reduce-only order does not change leverage.
* `maxSlippageBps` (integer, optional; minimum 1; maximum 500): Optional max slippage in basis points (1-500) for market orders. The order is sent as an immediate-or-cancel limit at the current mid plus or minus this many bps; anything that cannot fill within it is cancelled. If it only partly fills, attached TP/SL is not placed; set it with execute\_tpsl.
* `price` (number, optional; exclusiveMinimum 0): Limit price. Required when type is 'limit'.
* `quantity` (number, optional; exclusiveMinimum 0): Exact order quantity in base-asset units (e.g. 0.25 BTC) — an alternative to size. On a limit order the placed quantity is exact; on a market order it is converted at the current price. When both size and quantity are present, quantity takes precedence.
* `reasoning` (string, optional): One-sentence rationale for this order
* `reduceOnly` (boolean, optional): When true the order can only reduce or close an existing position — it can never open or increase one. Use for partial take-profit exits, e.g. side=sell, type=limit, price=\<target>, quantity=\<coins to close>, reduceOnly=true. Cannot be combined with tp or sl.
* `requestedLeverage` (number, optional; exclusiveMinimum 0)
* `size` (number, optional; exclusiveMinimum 0): Order size as a USD notional dollar amount (collateral × leverage) — NOT a quantity of coins/contracts. E.g. 250 means $250 of exposure, not 250 units. Minimum $10 collateral × leverage. Always pass this as notional at your requested leverage, even when sizeBasis is 'margin' (e.g. \$300 margin at 3x leverage is size=900, not size=300) — sizeBasis never converts this value for you. Required unless quantity is provided.
* `sl` (number, optional; exclusiveMinimum 0): Stop-loss trigger price
* `timeInForce` (string, optional; one of `"gtc"`, `"ioc"`, `"alo"`): Time-in-force for limit orders: 'gtc' rests on the book until filled or cancelled (default), 'ioc' fills whatever is immediately available and cancels the remainder, 'alo' is post-only / add-liquidity-only (rejected instead of taking liquidity). Ignored for market orders.
* `tp` (number, optional; exclusiveMinimum 0): Take-profit trigger price
* `type` (string, optional; one of `"market"`, `"limit"`)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer:**

* `side` (string, **required**; one of `"buy"`, `"sell"`): buy opens/increases a long; sell opens/increases a short.
* `symbol` (string, **required**): Liquid asset identifier. Examples: BTC, ETH, GOLD.
* `idempotencyKey` (string, optional; minLength 1; maxLength 128): Opaque key for this exact confirmed action. Generate one key and retain it for reconciliation and any safe retry; never invent a different key to repeat an uncertain result or bypass deduplication. Changed terms require a new review, confirmation and key.
* `leverage` (number, optional): Leverage multiplier for the order. Required unless reduceOnly — a reduce-only order never changes leverage.
* `price` (number, optional): Limit price. Required when type=limit.
* `quantity` (number, optional): Exact order quantity in coin units (e.g. 0.25 BTC) — an alternative to size. On a limit order the placed quantity is exact; on a market order it converts at the current price. When both are present quantity wins.
* `reduceOnly` (boolean, optional): When true the order can only reduce or close an existing position — it can never open or increase one. Cannot be combined with tp or sl.
* `requestedLeverage` (number, optional): Must equal leverage when present; execution never silently changes approved leverage.
* `size` (number, optional): Notional size in USD (= collateral × leverage). Required unless quantity is provided.
* `sl` (number, optional): Optional stop-loss trigger price. Cannot be combined with reduceOnly — set position protection with execute\_tpsl.
* `tp` (number, optional): Optional take-profit trigger price. Cannot be combined with reduceOnly — set position protection with execute\_tpsl.
* `type` (string, optional; one of `"market"`, `"limit"`): Order type. Defaults to market.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer support mode:**

* `leverage` (number, **required**): Leverage multiplier for the order.
* `side` (string, **required**; one of `"buy"`, `"sell"`): buy opens/increases a long; sell opens/increases a short.
* `size` (number, **required**): Notional size in USD (= collateral × leverage).
* `symbol` (string, **required**): Liquid asset identifier. Examples: BTC, ETH, GOLD.
* `price` (number, optional): Limit price. Required when type=limit.
* `requestedLeverage` (number, optional): Must equal leverage when present; execution never silently changes approved leverage.
* `sl` (number, optional): Optional stop-loss trigger price.
* `tp` (number, optional): Optional take-profit trigger price.
* `type` (string, optional; one of `"market"`, `"limit"`): Order type. Defaults to market.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbol": "BTC",
  "side": "buy",
  "size": 100,
  "leverage": 5,
  "confirmed": true,
  "executionMode": "paper"
}
```

## modify\_position

**Modifying your position**

**Available on:** Main, Grok and ?profile=all, Computer

Fine-tune an existing position with clear take-profit and stop-loss controls — 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.

* `action` (string, **required**; one of `"add_tpsl"`, `"modify_tpsl"`, `"remove_tpsl"`): Position modification action (synonyms like 'add', 'update', 'remove' are accepted).
* `asset` (string, **required**): Coin field from market\_data or portfolio
* `positionSide` (string, **required**; one of `"long"`, `"short"`): Direction of existing position
* `positionSize` (number, **required**): Asset quantity in the position
* `reasoning` (string, **required**): Brief 1-sentence explanation
* `currentPrice` (number, optional): Current mark price
* `liquidationPrice` (number, optional): Liquidation price from portfolio
* `removeSL` (boolean, optional): True to remove SL (action=remove\_tpsl)
* `removeTP` (boolean, optional): True to remove TP (action=remove\_tpsl)
* `sizeBasis` (string, optional; one of `"margin"`, `"notional"`): The quantity the user named: margin/collateral or notional exposure. Size is always submitted as notional; margin preserves size/requested leverage if leverage changes. Defaults to notional.
* `stopLoss` (number, optional): Stop loss price
* `takeProfit` (number, optional): Take profit price
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

## execute\_tpsl

**Setting take-profit / stop-loss**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Confirmed by the user; call with confirmed=true after explicit approval.

**Inputs on Main and Grok and ?profile=all:**

* `action` (string, optional)
* `asset` (string, optional)
* `confirmed` (boolean, optional): Must be true to apply. Missing or false is rejected as an error — this tool has no preview mode; use modify\_position for that.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode of the reviewed confirmation. Copy it unchanged from the proposal; missing or changed mode requires a new proposal.
* `positionSide` (string, optional; one of `"long"`, `"short"`)
* `reasoning` (string, optional)
* `removeSL` (boolean, optional)
* `removeTP` (boolean, optional)
* `sl` (number, optional)
* `symbol` (string, optional)
* `tp` (number, optional)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer and Computer support mode:**

* `symbol` (string, **required**): Liquid asset identifier. Examples: BTC, ETH, GOLD.
* `action` (string, optional)
* `asset` (string, optional)
* `positionSide` (string, optional; one of `"long"`, `"short"`)
* `reasoning` (string, optional)
* `removeSL` (boolean, optional): True cancels the position's stop-loss trigger orders. Cannot be combined with sl.
* `removeTP` (boolean, optional): True cancels the position's take-profit trigger orders. Cannot be combined with tp.
* `sl` (number, optional): Stop-loss trigger price.
* `tp` (number, optional): Take-profit trigger price.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbol": "BTC",
  "tp": 60000,
  "confirmed": true,
  "executionMode": "paper"
}
```

## close\_position

**Closing your position**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

To close or reduce a position, call get\_portfolio — the portfolio widget has Reduce and Close controls. Confirmed by the user; call with confirmed=true after explicit approval.

**Inputs on Main and Grok and ?profile=all:**

* `symbol` (string, **required**): Market symbol, e.g. BTC-PERP
* `aiAttribution` (object, optional)
* `confirmed` (boolean, optional): True to execute. Omit or false to preview.
* `percent` (number, optional; maximum 100; exclusiveMinimum 0): Partial close as a percentage of the current position size (0-100], resolved server-side against the live position size and the venue's lot precision. 100 closes the whole position.
* `reasoning` (string, optional)
* `size` (number, optional; exclusiveMinimum 0): Partial close size in coin units (omit for full close)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer and Computer support mode:**

* `symbol` (string, **required**): Liquid asset identifier. Examples: BTC, ETH, GOLD.
* `size` (number, optional; exclusiveMinimum 0): Partial close size in coin units (omit for full close)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbol": "BTC",
  "confirmed": true
}
```

## close\_positions\_batch

**Closing positions**

**Available on:** Main, Grok and ?profile=all, Computer

Close one, some, or all currently open positions through a selectable confirmation widget. Call with confirmed=false or omit confirmed to preview the open positions that can be closed. Only call with confirmed=true after the user explicitly confirms which positions to close. Omitting symbols and closes on confirmed=true closes every open position in full; passing symbols closes only those selected positions in full. To close specific positions — including partial closes — pass closes with an optional per-position size (coin units) or percent; the preview reconciles every open position (included/excluded, requested vs resolved quantity after venue rounding, expected remainder). This uses the same Liquid close-position execution flow as the per-position close widget for each selected position.

* `aiAttribution` (object, optional)
* `closes` (array, optional; minItems 1): Per-position close requests with optional partial sizing. When provided, only the listed positions are closed and symbols is ignored; must contain at least one entry. Positions not listed are excluded and enumerated as such in the preview.
* `confirmed` (boolean, optional): True to execute. Omit or false to preview.
* `symbols` (array, optional): Internal: symbols selected in the confirmation widget. Omit or empty to close every open position. Ignored when closes is provided.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## suggest\_trades\_batch

**Suggesting a basket trade**

**Available on:** Main, Grok and ?profile=all, Computer

Bring a multi-trade idea together: propose 2–8 related trades as one easy-to-review 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 each trade's required collateral (size / leverage per trade), NOT the sum of notionals. 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.

* `thesis` (string, **required**): One-sentence basket-level thesis (why these trades together)
* `trades` (array, **required**; minItems 2; maxItems 8): Between 2 and 8 trades to propose as a basket.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "trades": [
    {
      "asset": "BTC",
      "side": "long",
      "leverage": 5,
      "orderType": "market",
      "size": 100,
      "reasoning": "Run the local fixture scenario for this tool."
    },
    {
      "asset": "BTC",
      "side": "long",
      "leverage": 5,
      "orderType": "market",
      "size": 100,
      "reasoning": "Run the local fixture scenario for this tool."
    }
  ],
  "thesis": "Run the local fixture scenario for this tool."
}
```

## execute\_orders\_batch

**Placing basket orders**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Executes a list of orders sequentially, collecting per-order results. Confirmed by the user; call with confirmed=true after explicit approval.

**Inputs on Main:**

* `orders` (array, **required**; minItems 1; maxItems 8)
* `confirmed` (boolean, optional): Must be true to execute. Missing or false is rejected as an error — this tool has no preview mode; use suggest\_trades\_batch for that.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode of the reviewed confirmation. Copy it unchanged from the proposal; missing or changed mode requires a new proposal.
* `idempotencyKey` (string, optional; minLength 1; maxLength 128): Optional. Set by the confirmation widget once per basket card so a retried Place All click (after a network/timeout error where some legs may already have executed) is rejected leg by leg as a duplicate instead of resubmitting them. Do not set this directly.
* `thesis` (string, optional): Basket-level thesis from the confirmation widget. Used only for attribution metadata.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Grok and ?profile=all:**

* `orders` (array, **required**; minItems 1; maxItems 8)
* `confirmed` (boolean, optional): Must be true to execute. Missing or false is rejected as an error — this tool has no preview mode; use suggest\_trades\_batch for that.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode of the reviewed confirmation. Copy it unchanged from the proposal; missing or changed mode requires a new proposal.
* `idempotencyKey` (string, optional; minLength 1; maxLength 128): Opaque key for this exact confirmed action. Generate one key and retain it for reconciliation and any safe retry; never invent a different key to repeat an uncertain result or bypass deduplication. Changed terms require a new review, confirmation and key.
* `thesis` (string, optional): Basket-level thesis from the confirmation widget. Used only for attribution metadata.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer:**

* `orders` (array, **required**; minItems 1; maxItems 8)
* `idempotencyKey` (string, optional; minLength 1; maxLength 128): Opaque key for this exact confirmed action. Generate one key and retain it for reconciliation and any safe retry; never invent a different key to repeat an uncertain result or bypass deduplication. Changed terms require a new review, confirmation and key.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer support mode:**

* `orders` (array, **required**; minItems 1; maxItems 8)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

## plan\_portfolio

**Planning your portfolio**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Turn market research and personal preferences into a cohesive 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) assetClasses as an array of one or more selected asset class strings 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.

**Inputs on Main and Grok and ?profile=all:**

* `assetClasses` (array, **required**; minItems 1; maxItems 5): Required array of selected asset classes. Always pass an array, even for one choice, e.g. \["crypto"].
* `riskTolerance` (string, **required**; one of `"conservative"`, `"moderate"`, `"aggressive"`): Risk tolerance answered via the client's native question widget.
* `timeHorizon` (string, **required**; one of `"intraday"`, `"swing_week"`, `"position_long_term"`): Time horizon answered via the client's native question widget.
* `maxLeverage` (number, optional; exclusiveMinimum 0): Optional user-supplied leverage cap. The risk profile may cap this lower.
* `themes` (string, optional): Optional free-text bias from the user (e.g. 'lean oil', 'short the crowded names').
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer and Computer support mode:**

* `assetClasses` (array, **required**; minItems 1): Asset classes the user wants to consider, multi-select from the native structured Q\&A UI.
* `riskTolerance` (string, **required**; one of `"conservative"`, `"moderate"`, `"aggressive"`): Risk tolerance answered via the client's native structured Q\&A UI.
* `timeHorizon` (string, **required**; one of `"intraday"`, `"swing_week"`, `"position_long_term"`): Time horizon answered via the client's native structured Q\&A UI.
* `maxLeverage` (number, optional; exclusiveMinimum 0): Optional user-supplied leverage cap. The risk profile may cap this lower.
* `themes` (string, optional): Optional free-text bias from the user (e.g. 'lean oil', 'short the crowded names').
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "riskTolerance": "conservative",
  "timeHorizon": "intraday",
  "assetClasses": [
    "crypto"
  ]
}
```

## search\_markets

**Searching markets**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Explore Liquid's multi-asset market lineup with authoritative search and browsing. 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.

**Inputs on Main and Grok and ?profile=all:**

* `query` (string, optional): Search term to filter markets by symbol or asset name (e.g. 'BTC', 'gold', 'tech'). Omit to browse the top markets by volume.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer and Computer support mode:**

* `query` (string, optional)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## show\_market\_overview

**Showing market overview**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Explore Liquid at a glance with a rich visual market overview dashboard showing its 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.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## show\_orderbook

**Showing the orderbook**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

See liquidity and bid/ask depth clearly with an orderbook 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.

* `symbol` (string, **required**): Liquid market symbol from market\_data, e.g. BTC
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbol": "BTC"
}
```

## show\_chart

**Showing the chart**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Bring price action into focus with a detailed candlestick chart 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.

**Inputs on Main and Grok and ?profile=all:**

* `interval` (string, **required**; one of `"1m"`, `"5m"`, `"15m"`, `"30m"`, `"1h"`, `"4h"`, `"1d"`): Candle interval (aliases like '60m', '1hour', 'daily' are accepted).
* `symbol` (string, **required**): Liquid market symbol from market\_data, e.g. BTC
* `limit` (integer, optional; minimum 1; maximum 200): Number of candles (default 100, max 200)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer and Computer support mode:**

* `interval` (string, **required**; one of `"1m"`, `"5m"`, `"15m"`, `"30m"`, `"1h"`, `"4h"`, `"1d"`): Candle interval
* `symbol` (string, **required**): Liquid market symbol from market\_data, e.g. BTC
* `limit` (integer, optional; minimum 1; maximum 200): Number of candles (default 100, max 200)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbol": "BTC",
  "interval": "1m"
}
```

## get\_technical\_indicators

**Computing technical indicators**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Explore market momentum, trends, and volatility with the latest technical indicator values (RSI, MACD, SMA/EMA 20/50/200, Bollinger Bands, Stochastic, ATR, rolling VWAP, OBV) for one tradeable market from candle data, returned as structured JSON. Read-only market data; complements analyze\_market, which serves broader pre-computed market analysis (price, funding, positioning).

* `symbol` (string, **required**): Liquid market symbol from market\_data, e.g. BTC
* `indicators` (array, optional): Indicators to compute (default: all)
* `interval` (string, optional; one of `"1m"`, `"5m"`, `"15m"`, `"30m"`, `"1h"`, `"4h"`, `"1d"`): Candle interval (default 1h)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbol": "BTC"
}
```

## search\_prediction\_markets

**Searching prediction markets**

**Available on:** Main, Grok and ?profile=all, Computer

Search or browse Liquid prediction markets. Use this for event-style markets, yes/no outcomes, probabilities, or HIP-4 prediction markets. For sports markets, search by match/team names and optionally category, e.g. match='Ecuador Germany', category='World Cup'. Returns user-facing prediction market groups with each bettable outcome's numeric marketID and outcome\_id (match markets list both sides, e.g. Mexico outcome\_id=0 and England outcome\_id=1). Pass that marketID and outcome\_id directly to execute\_prediction\_order or show\_prediction\_orderbook; do not add a hip4: prefix. Bet on any outcome by buying it; bet against one by buying the opposing outcome.

* `category` (string, optional): Market category filter, e.g. 'World Cup', 'sports', 'politics', or 'crypto'.
* `limit` (integer, optional; maximum 25; exclusiveMinimum 0)
* `match` (string, optional): Sports match/team search terms, e.g. 'Ecuador Germany' or 'Argentina vs Algeria'. Combined with query when both are provided.
* `provider` (string, optional): Prediction provider. Defaults to hip4.
* `query` (string, optional): General search terms such as an event, candidate, asset, or market title.
* `status` (string, optional; one of `"open"`, `"closed"`, `"settled"`, `"paused"`)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## show\_prediction\_orderbook

**Showing prediction orderbook**

**Available on:** Main, Grok and ?profile=all, Computer

Get the orderbook for a HIP-4 prediction market outcome. Use the numeric marketID from search\_prediction\_markets as market\_id with no hip4: prefix. Use the outcome\_id from the search row (defaults to 0, the YES/first side).

* `market_id` (string, **required**): Numeric marketID from search\_prediction\_markets, e.g. '594'. Do not include 'hip4:'.
* `depth` (integer, optional; maximum 20; exclusiveMinimum 0): Number of orderbook levels per side to return (1-20). Defaults to 5.
* `outcome_id` (string, optional): Provider-native outcome id from search\_prediction\_markets (match markets list both sides, e.g. 0 and 1). Defaults to 0.
* `provider` (string, optional): Prediction-market provider id. Defaults to hip4.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

## view\_prediction\_positions

**Viewing prediction positions**

**Available on:** Main, Grok and ?profile=all, Computer

List the user's prediction-market positions, including HIP-4 outcome quantities. Use for questions about prediction bets, YES/NO holdings, or event-market exposure.

* `market_id` (string, optional): Numeric marketID from search\_prediction\_markets, e.g. '594'. Do not include a 'hip4:' prefix. Omit to list across all markets.
* `provider` (string, optional): Prediction-market provider id. Defaults to hip4.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: false, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## view\_prediction\_orders

**Viewing prediction orders**

**Available on:** Main, Grok and ?profile=all, Computer

List prediction-market orders. Use status=open for cancellable resting orders. The returned orderId and provider can be passed to cancel\_prediction\_order.

* `market_id` (string, optional): Numeric marketID from search\_prediction\_markets, e.g. '594'. Do not include a 'hip4:' prefix. Omit to list across all markets.
* `provider` (string, optional): Prediction-market provider id. Defaults to hip4.
* `status` (string, optional): Order status filter, e.g. 'open' for resting/cancellable orders. Defaults to 'open'.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: false, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## execute\_prediction\_order

**Placing prediction order**

**Available on:** Main, Grok and ?profile=all, Computer

Preview or place a prediction-market order. Call with confirmed=false or omit confirmed to preview the order. Only call with confirmed=true after the user explicitly confirms the exact prediction order, and copy the executionMode returned by the preview unchanged. Use the numeric marketID and outcome\_id shown next to the user's desired outcome in search\_prediction\_markets, with no hip4: prefix. Always bet by BUYING the outcome the user wants to back. To bet against a team or outcome, buy the opposing outcome from the search results (e.g. to fade Mexico in 'Mexico vs England', buy England's outcome\_id) — side=sell only reduces contracts the user already holds and is rejected otherwise. Do not call show\_prediction\_orderbook just to place a market order; use orderbook only when the user asks for book depth/spread or when choosing a limit price. size is USD notional. Prediction markets have no leverage. Any valid probability strictly between 0 and 1 is allowed. Honor the user's selected outcome; do not refuse or substitute another bet because the odds are low or high.

* `market_id` (string, **required**): Numeric marketID from search\_prediction\_markets, e.g. '594'. Do not include 'hip4:'.
* `side` (string, **required**; one of `"buy"`, `"sell"`): buy to open/add exposure to the outcome; sell only reduces contracts the user already holds.
* `size` (number, **required**; exclusiveMinimum 0): USD notional order size (dollar amount to bet). Prediction markets have no leverage.
* `aiAttribution` (object, optional)
* `confirmed` (boolean, optional): True to execute. Omit or false to preview.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode (paper or live) returned by this tool's preview. Required with confirmed=true; copy it unchanged. A missing or changed mode places nothing and requires a new preview.
* `outcome_id` (string, optional): Provider-native outcome id from search\_prediction\_markets (match markets list both sides, e.g. 0 and 1). Defaults to 0.
* `price` (number, optional; exclusiveMinimum 0; exclusiveMaximum 1): Limit price/probability in (0, 1). Required for limit orders.
* `provider` (string, optional): Prediction-market provider id. Defaults to hip4.
* `reasoning` (string, optional): Brief 1-sentence rationale for the order.
* `reduce_only` (boolean, optional): True to only reduce an existing position, never open/increase one.
* `time_in_force` (string, optional; one of `"gtc"`, `"ioc"`): Time in force for limit orders: gtc (rest) or ioc (fill-or-cancel).
* `type` (string, optional; one of `"market"`, `"limit"`): Order type. Defaults to market.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

## close\_prediction\_position

**Closing prediction position**

**Available on:** Main, Grok and ?profile=all, Computer

Preview or close a prediction-market position fully or partially. Call with confirmed=false or omit confirmed to preview. Only call with confirmed=true after the user explicitly confirms the close, and copy the executionMode returned by the preview unchanged. Omit size to close the full outcome position; provide size (USD notional) to partially close — it is converted to outcome contracts at the execution price (the limit price for limit closes, otherwise the live mark).

* `market_id` (string, **required**): Numeric marketID from search\_prediction\_markets, e.g. '594'. Do not include a 'hip4:' prefix.
* `outcome_id` (string, **required**): Provider-native outcome id from search\_prediction\_markets (both sides are listed, e.g. 0 and 1). Defaults to 0.
* `aiAttribution` (object, optional)
* `confirmed` (boolean, optional): True to execute. Omit or false to preview.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode (paper or live) returned by this tool's preview. Required with confirmed=true; copy it unchanged. A missing or changed mode places nothing and requires a new preview.
* `price` (number, optional; exclusiveMinimum 0; exclusiveMaximum 1): Limit close price/probability in (0, 1). Required for limit closes.
* `provider` (string, optional): Prediction-market provider id. Defaults to hip4.
* `reasoning` (string, optional): Brief 1-sentence rationale for the close.
* `size` (number, optional; exclusiveMinimum 0): USD notional to close (converted to outcome contracts at the execution price: the limit price for limit closes, otherwise the live mark). Omit for full close; a notional >= the position's value closes it fully.
* `time_in_force` (string, optional; one of `"gtc"`, `"ioc"`): Time in force for limit closes: gtc (rest) or ioc (fill-or-cancel).
* `type` (string, optional; one of `"market"`, `"limit"`): Order type. Defaults to market.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "market_id": "BTC",
  "outcome_id": "fixture-id-1"
}
```

## cancel\_prediction\_order

**Cancelling prediction order**

**Available on:** Main, Grok and ?profile=all, Computer

Preview or cancel a resting prediction-market order by provider and provider-native order id. Call view\_prediction\_orders first if the order id is unknown. Omit confirmed to preview; use confirmed=true only after explicit user confirmation, copying the executionMode returned by the preview unchanged.

* `order_id` (string, **required**): Provider-native order id to cancel (from view\_prediction\_orders).
* `confirmed` (boolean, optional): True to execute cancellation. Omit or false to preview.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode (paper or live) returned by this tool's preview. Required with confirmed=true; copy it unchanged. A missing or changed mode places nothing and requires a new preview.
* `provider` (string, optional): Prediction-market provider id. Defaults to hip4.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "order_id": "fixture-id-1"
}
```

## view\_open\_orders

**Viewing open orders**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

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, followed by a protection-coverage readback for every position with a live TP/SL trigger (a fixed-size leg can stop covering the full position after an add, or after a partial close). The order id can be passed to cancel\_order to cancel. Perpetual orders only — HIP-4 prediction-market orders are excluded (they would otherwise render as an unresolvable bare id with a probability shown as a dollar price); use view\_prediction\_orders for those.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## update\_leverage

**Updating leverage**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

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

**Inputs on Main and Grok and ?profile=all:**

* `asset` (string, **required**): Open position asset from the portfolio, e.g. BTC, BTC-PERP, or GOLD.
* `confirmed` (boolean, optional): Set true only after the user explicitly confirms the leverage change. This executes the update.
* `positionSide` (string, optional; one of `"long"`, `"short"`): Use when there may be more than one matching position side.
* `targetLeverage` (integer, optional; maximum 9007199254740991; exclusiveMinimum 0): Integer leverage the user wants to set, e.g. 3 for 3x. Omit only when the user asks for bounds or context.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.
* `validationPhase` (string, optional; one of `"infotime"`, `"executetime"`): infotime before asking/confirming; executetime executes after explicit user confirmation.

**Inputs on Computer and Computer support mode:**

* `asset` (string, **required**): Open position asset from the portfolio, e.g. BTC, BTC-PERP, or GOLD.
* `positionSide` (string, optional; one of `"long"`, `"short"`): Use when there may be more than one matching position side.
* `targetLeverage` (integer, optional; maximum 9007199254740991; exclusiveMinimum 0): Integer leverage the user wants to set, e.g. 3 for 3x. Omit only when the user asks for bounds or context.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

## cancel\_order

**Canceling your order**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

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.

* `order_id` (string, **required**): The order ID to cancel
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "order_id": "fixture-id-1"
}
```

## execute\_spot\_order

**Placing your spot order**

**Available on:** Main, Grok and ?profile=all

Buy or sell a Hyperliquid EQX tokenized stock spot token (e.g. EQAAPL, EQNVDA) at 1x with a market IOC order. No leverage and no shorting; live only, paper trading is not supported. Pass exactly one of size (USD notional), quantity (tokens, sell only) or sellAll (sell only). Same confirmation rules as execute\_order: confirmed=true executes, otherwise a preview is returned and nothing is placed. Perpetual symbols such as AAPL or xyz:AAPL belong to execute\_order.

* `side` (string, **required**; one of `"buy"`, `"sell"`)
* `symbol` (string, **required**): EQX tokenized stock spot token, e.g. EQAAPL or EQNVDA.
* `aiAttribution` (object, optional)
* `confirmed` (boolean, optional): Must be true to execute. Missing or false returns a preview and places nothing.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode of the reviewed confirmation. Tokenized stocks trade live only; paper is refused.
* `idempotencyKey` (string, optional; minLength 1; maxLength 128): Optional. One key per confirmed order; a retry with the same key is rejected as a duplicate instead of placing a second order.
* `maxSlippageBps` (integer, optional; minimum 1; maximum 500): Optional max slippage in basis points (1-500) for the market order. Defaults to 500.
* `quantity` (number, optional; exclusiveMinimum 0): Token quantity to sell. Sell only.
* `reasoning` (string, optional): One-sentence rationale for this order
* `sellAll` (boolean, optional): Sell the whole available holding. Sell only.
* `size` (number, optional; exclusiveMinimum 0): USD notional to buy or sell (minimum \$10).
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

## enable\_trading

**Enabling trading**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Help the user get ready to trade with a clear account readiness check and the right setup action for their Liquid account. 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.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## get\_portfolio

**Loading your portfolio**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Bring the user's complete trading picture into one place — account balance, equity, margin, and all open positions (perps and prediction-market holdings) 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 on perp positions (prediction-market holdings are read-only there) 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. Users trade on a unified account and can access all markets without needing to manually swap currencies. Any required currency conversion is handled automatically.

**Inputs on Main and Grok and ?profile=all:**

* `skipCache` (boolean, optional): Internal: bypass the 5s clearinghouse-state and open-orders caches. Used by the portfolio widget on mount and manual refresh so the user always sees up-to-the-second data.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer and Computer support mode:**

* `skipCache` (boolean, optional): Internal: bypass the 5s clearinghouse-state and open-orders caches so the user always sees up-to-the-second data.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## show\_portfolio\_chart

**Showing portfolio chart**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

See your portfolio allocation at a glance with a clear visual pie chart 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.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## leaderboard\_data

**Loading the leaderboard**

**Available on:** Main, Grok and ?profile=all, Computer

Discover standout traders with the Liquid leaderboard. Ranks traders by `metric` (pnl, volume, points, streak) over `duration` (24H, 7D, 30D, all\_time) and returns rank, display name, PnL, volume, points, streak, directional bias, and biggest position per trader. Pass `asset` to keep only traders whose biggest position is in that market (e.g. 'BTC', 'xyz:SP500'). points and streak are all-time boards, so duration is ignored for them. Use when the user asks about top traders, best performers this week, highest-volume traders, who holds a given asset, or leaderboard rankings. For a single named trader's standing use leaderboard\_rank; for the user's own positions use get\_portfolio.

* `asset` (string, optional): Only traders whose biggest position is this market, e.g. 'BTC'.
* `duration` (string, optional; one of `"24H"`, `"7D"`, `"30D"`, `"all_time"`): Time window. Defaults to 'all\_time'. Ignored for points/streak.
* `limit` (integer, optional; minimum 1; maximum 50): Traders to return, 1-50. Defaults to 10.
* `metric` (string, optional; one of `"pnl"`, `"volume"`, `"points"`, `"streak"`): Ranking metric. Defaults to 'pnl'.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## leaderboard\_rank

**Checking a leaderboard rank**

**Available on:** Main, Grok and ?profile=all, Computer

Get a focused view of one trader’s leaderboard standing on a given board. `trader` accepts a wallet address, display name, or @handle; omit it to check the authenticated user's own rank. Returns the rank plus PnL, volume, points, streak, bias, and biggest position when the trader is in the top 50, the rank alone for ranks 51-100, and says so when they are unranked. Use when the user asks 'where am I on the leaderboard?', 'what rank is X?', or how a specific trader is doing. Use leaderboard\_data for whole-board listings.

* `duration` (string, optional; one of `"24H"`, `"7D"`, `"30D"`, `"all_time"`): Time window. Defaults to 'all\_time'. Ignored for points/streak.
* `metric` (string, optional; one of `"pnl"`, `"volume"`, `"points"`, `"streak"`): Board to check. Defaults to 'pnl'.
* `trader` (string, optional): Wallet address, display name, or @handle. Defaults to the signed-in user.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## get\_transaction\_history

**Loading transaction history**

**Available on:** Main, Grok and ?profile=all, Computer

Bring the user's trading and money movement into one clear, newest-first activity timeline: trade fills, deposits, withdrawals, sends/receives, account transfers, and prediction-market trades with human-readable market names. Use when the user asks for their transactions, activity, trade history, past trades, deposit/withdrawal history, or 'what have I done recently'. Do NOT confuse with get\_portfolio (current balances and open positions) or view\_open\_orders (resting orders) — this shows PAST activity. The response's paperMode flag applies to Trade and Prediction rows: while paper trading is active they are simulated fills, never real trades or bets, but Deposit/Withdraw/Send/Receive/Transfer rows are always the user's real wallet activity and are never simulated — do not describe them as paper trades. Use the type filter to narrow to just trades, transfers, or prediction activity. Coverage is RECENT history, not all-time: each source contributes its most recent window (Liquid returns roughly the \~2000 most recent trade fills and ledger updates; prediction activity is the order history the backend returns), `total` counts rows in that fetched snapshot, and `offset` pages within it — not through older, unfetched history.

* `limit` (integer, optional; minimum 1; maximum 100): Maximum rows to return after merging all sources. Defaults to 10, max 100.
* `offset` (integer, optional; minimum 0; maximum 9007199254740991): Rows to skip after merging and sorting (newest-first) — use offset=limit\*N to page. Pages within the fetched recent-history snapshot only (each source's most recent window), never into older history. Applied before limit. Defaults to 0.
* `skipCache` (boolean, optional): Internal: bypass the 5s history caches. Used by the transaction-list widget on mount and manual refresh so the user always sees up-to-the-second data.
* `type` (string, optional; one of `"all"`, `"trades"`, `"transfers"`, `"predictions"`): Filter: 'trades' for fills only, 'transfers' for deposits/withdrawals/sends/receives, 'predictions' for prediction-market activity, 'all' for everything. Defaults to all.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## get\_position\_history

**Loading recent position history**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Reconstruct the authenticated wallet's recent perpetual position lifecycles from its bounded Hyperliquid fill window. Use for past perpetual positions and their entry/exit execution details; this is recent-fill coverage, not all-time history, and an open result means open at the last observed fill only. For current balances or positions use get\_portfolio. For transactions, transfers, deposits, or withdrawals use get\_transaction\_history. This tool is read-only, follows the current live or paper account mode, and never accepts a wallet or mode override.

* `includeFills` (boolean, optional): Include constituent fills, capped at 100 details across the whole response. Defaults to false.
* `limit` (integer, optional; minimum 1; maximum 50): Maximum matching lifecycles to return, from 1 to 50. Defaults to 10.
* `offset` (integer, optional; minimum 0; maximum 9007199254740991): Number of matching lifecycles to skip in the reconstructed recent-fill snapshot. Defaults to 0.
* `status` (string, optional; one of `"closed"`, `"open"`, `"unknown"`, `"all"`): Lifecycle status filter. Defaults to closed; all also includes uncertain fragments.
* `symbol` (string, optional): Exact case-sensitive source coin, including any venue prefix such as xyz:BTC.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## get\_news

**Fetching the news**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Stay on top of market catalysts with curated recent headlines, source links, and 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.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## read\_link

**Reading the link**

**Available on:** Main, Grok and ?profile=all, Computer

Bring shared links into the conversation with rich post details and readable page content. For x.com/twitter.com status URLs, returns the post's author name, handle, verified flag, age, full text, and attached media via the X API (requires TWITTER\_BEARER\_TOKEN). For any other http(s) page, fetches it and returns title, meta description, and the main text content (truncated). Use when the user pastes a link, asks 'what does this post say', or wants a page summarized. Not for Liquid market or account data — use the dedicated tools for that.

* `url` (string, **required**): The full http(s) URL to read
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

## get\_asset\_profile

**Fetching asset profile**

**Available on:** Main, Grok and ?profile=all, Computer

Fundamentals for a ticker from Liquid's asset metadata: name, asset class, description, website, CEO, employees, sector/industry, headquarters, market cap, trailing P/E, circulating supply, and the last four quarters of revenue and net income. Equities carry the full profile; crypto and other asset classes may only have a description and circulating supply. Accepts a bare ticker ('NVDA') or a venue-prefixed symbol ('xyz:NVDA'). Use when the user asks about a company's market cap, valuation, fundamentals, 'what does X do', or recent earnings results — not for upcoming earnings dates (use upcoming\_earnings).

* `symbol` (string, **required**): Ticker or venue-prefixed symbol, e.g. 'NVDA', 'xyz:NVDA'.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

## upcoming\_earnings

**Available on:** Main, Grok and ?profile=all, Computer

Stay ahead of upcoming earnings catalysts for companies tradeable on Liquid (HL HIP-3 stock dexes), from the Nasdaq calendar. Returns days\[] with preMarket/postMarket/unspecified buckets; each company has symbol, name, epsForecast, marketCap, and a markets\[] list whose prefixed\_symbol (e.g. 'xyz:NVDA') is the exact coin field for analyze\_market and suggest\_trade. Window: 'week' (default, next 7 days) or 'month' (next 30). Use during /markets to surface earnings catalysts, or when the user asks 'what earnings are coming up?', 'who reports this week?', or about a specific upcoming earnings play.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.
* `window` (string, optional; one of `"week"`, `"month"`): Lookahead window from today. Defaults to 'week'.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

## enable\_paper\_trading

**Enabling paper trading**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Explore trading ideas hands-on with simulated funds: enable paper trading for the current wallet in this MCP connector. Trading actions, positions, open orders, and account balances accessed through this connector use the paper trading simulator; these simulated trades do not use real funds. This paper account is keyed by wallet address on Liquid's shared paper-trading simulator, so it is not scoped to this MCP connector: enabling, disabling, or resetting it here also applies wherever else this wallet trades paper, including other Liquid MCP connectors. It does not switch the Liquid web app into paper mode; orders placed there may use real funds. 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.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, idempotentHint: true, openWorldHint: false, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## disable\_paper\_trading

**Disabling paper trading**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Exit paper trading mode for this wallet in this MCP connector and return to live account data. Any permitted live trades use real funds; deployment trading permissions still apply. This paper account is keyed by wallet address on Liquid's shared paper-trading simulator, so it is not scoped to this MCP connector: enabling, disabling, or resetting it here also applies wherever else this wallet trades paper, including other Liquid MCP connectors. It does not switch the Liquid web app into paper mode; orders placed there may 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.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, idempotentHint: true, openWorldHint: false, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## reset\_paper\_account

**Resetting paper account**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

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. This paper account is keyed by wallet address on Liquid's shared paper-trading simulator, so it is not scoped to this MCP connector: enabling, disabling, or resetting it here also applies wherever else this wallet trades paper, including other Liquid MCP connectors. It does not switch the Liquid web app into paper mode; orders placed there may use real funds. 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 — including any paper positions or orders open on another Liquid MCP connector for the same wallet; there is no confirmation step beyond the user's request.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, idempotentHint: true, openWorldHint: false, readOnlyHint: false

## paper\_trading\_status

**Checking paper trading status**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Report whether paper trading is currently enabled for this wallet in this MCP connector. This paper account is keyed by wallet address on Liquid's shared paper-trading simulator, so it is not scoped to this MCP connector: enabling, disabling, or resetting it here also applies wherever else this wallet trades paper, including other Liquid MCP connectors. It does not switch the Liquid web app into paper mode; orders placed there may use real funds. Use when the user asks 'am I paper trading?' or you need to disambiguate before executing a trade.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: false, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## show\_deposit

**Showing deposit options**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Make funding a Liquid account easy with a deposit widget offering multiple ways to get started. 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.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## generate\_deposit\_address

**Generating a deposit address**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Returns a crypto deposit address for one token on one chain. Call it only when the user explicitly asks for a deposit address and names both the token and the chain (for example "give me a USDC deposit address on Arbitrum"). For general questions about depositing, or when the token or chain is missing, call show\_deposit instead. The deposit widget also calls this tool when the user picks a token and chain. Supported tokens: USDC, USDT, BTC, ETH, SOL; other tokens and unsupported chains are refused. 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).

* `chain` (string, **required**; one of `"ethereum"`, `"base"`, `"arbitrum"`, `"solana"`, `"bitcoin"`, `"hypercore"`, `"hyperevm"`, `"bsc"`, `"optimism"`, `"polygon"`, `"abstract"`): Chain identifier
* `token` (string, **required**): Token symbol, e.g. USDC, BTC, ETH, SOL
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "token": "USDC",
  "chain": "ethereum"
}
```

## create\_onramp\_session

**Starting an onramp session**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Returns \{ url }.

* `amount` (number, **required**; minimum 2; maximum 1000000)
* `method` (string, **required**; one of `"credit_card"`, `"crypto_apps"`)
* `provider` (string, optional; one of `"swapped"`, `"stripe"`)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: false

## refer

**Sharing your referral link**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Make inviting friends easy with the authenticated user's referral link, sharing controls, and referral stats. Called when the user types /refer, or whenever they want to refer someone to Liquid, invite friends, share the app, or ask for a referral link. Returns a widget with copy/share buttons and referral performance summary.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: false, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## payment\_link

**Creating your payment link**

**Available on:** Main, Grok and ?profile=all, Computer

Generate the signed-in user's payment link — their public Liquid profile URL, where anyone who opens it can sign in to Liquid and send them USDC. Called when the user wants to get paid, asks for a payment link or 'pay me' link, or wants someone to send them money on Liquid. Returns a share card with copy and share buttons. Requires sign-in; the link always points at the user's own profile. The link opens the user's public profile page, which also shows their trading activity.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: false, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## deposit\_earn

**Depositing to Earn**

**Available on:** Main, Grok and ?profile=all, Computer

Deposit USDC into Liquid's Earn vault, a Gauntlet-managed USDC yield vault on Arbitrum. Use when the user asks to deposit into Earn or the vault, or to earn yield on idle USDC. `amount` is the exact USDC to deposit (minimum 1, at most 6 decimals). Deposits use USDC already on Arbitrum; if the user is short there, the signing page offers to move USDC from Hyperliquid first, so do not check or move balances beforehand. This creates a request only: the user opens a Liquid link and approves each transaction there; Co-Invest cannot sign it. Do not say the deposit happened until the status is submitted, and never auto-retry.

* `amount` (number, **required**; maximum 100000000; exclusiveMinimum 0): Exact USDC amount to deposit. Minimum 1.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: false

## withdraw\_earn

**Withdrawing from Earn**

**Available on:** Main, Grok and ?profile=all, Computer

Withdraw (redeem) USDC from Liquid's Earn vault back to the user's Arbitrum wallet. This moves the user's own funds out of the yield vault; it is not a withdrawal off Liquid to an external address. Use when the user asks to withdraw from Earn or the vault, or to redeem their vault position. Pass exactly one of `amount` (exact USDC, at most 6 decimals) or `all: true` (the entire position). This creates a request only: the user opens a Liquid link and approves each transaction there; Co-Invest cannot sign it. Do not say the withdrawal happened until the status is submitted, and never auto-retry. Vault withdrawals can settle after they are submitted.

* `all` (boolean, optional): Withdraw the entire Earn position. Do not combine with amount.
* `amount` (number, optional; maximum 100000000; exclusiveMinimum 0): Exact USDC amount to withdraw. Omit it and set all=true to withdraw the entire position.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: false

## \_earn\_pending\_status

**Checking Earn request**

**Available on:** Main, Grok and ?profile=all, Computer

Call only with a pending\_id returned by deposit\_earn or withdraw\_earn in this conversation, and only when the user asks for an update; never construct or guess an id. Statuses: awaiting\_user, preparing, awaiting\_approval, submitting (in progress), submitted (every transaction broadcast; balances update once they confirm, not settled), preparation\_failed (no vault transactions were submitted, though a Hyperliquid top-up may already have moved USDC to the user's Arbitrum wallet; the user can ask again). An expired request cannot be resumed.

* `pending_id` (string, **required**; minLength 1): Server-issued id returned by deposit\_earn or withdraw\_earn in this conversation.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

## get\_earn\_balance

**Loading your Earn balance**

**Available on:** Main, Grok and ?profile=all, Computer

Read the user's Earn vault holdings: the USDC settled in Liquid's Gauntlet-managed Earn vault on Arbitrum, any pending (queued) deposit or withdrawal, the total committed, the deposit-lock time if any, and the vault's current APY and TVL. Use when the user asks about their Earn balance, holdings, position, vault, or yield, or whether a deposit or withdrawal landed. Earn holdings are not part of the trading balance get\_portfolio reports, and get\_transaction\_history does not list vault activity. This tool is read-only: it cannot deposit or withdraw (use deposit\_earn / withdraw\_earn).

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

## set\_trailing\_stop

**Setting a trailing stop**

**Available on:** Main, Grok and ?profile=all, Computer

Set or update a trailing stop-loss on an open Hyperliquid perp position, live or paper according to the connection's current trading mode. It is a native Hyperliquid trailing stop. percent is the equity (return on margin) retracement the user asks for; it becomes a fixed price retracement of percent divided by the leverage at the moment of placement, and that price distance does not change afterwards. The stop follows the best price W reached since tracking began: a long fires at W x (1 - retracement), a short at W x (1 + retracement). Example: entry 100, 10x leverage, percent 20 is a 2% price retracement: with the best price at 100 the stop sits at 98; once the price has reached 110 it sits at 107.8, and the distance stays 2% of price. sizePercent (default 100) fixes the quantity closed when the stop fires, taken from the position size at placement; it does not follow later changes in position size and never exceeds the position. A partial stop (below the whole position) must be at least \$10 notional. activationPrice (optional) delays tracking until the mark reaches it: a long starts at or above it, a short at or below it. Omit it to keep an activation that is not yet reached, pass null to clear it, or a number to set it. Once tracking has started a different activation price is refused. An update places a new stop and then cancels the old one, so the position is never unprotected; tracking restarts from the current mark, and an omitted sizePercent keeps the current quantity. Flow: call first with confirmed omitted or false to get a preview (position, mark, price retracement, trigger at the start price, quantity to close) and show it to the user. After the user explicitly confirms the unchanged terms, call again with the same arguments, confirmed=true and the executionMode from the preview. A live stop runs on Hyperliquid and keeps working if this connection's trading approval later expires; changing or removing it needs a valid approval. Hyperliquid markets only, including HIP-3 markets such as xyz:BTC; Lighter markets are refused.

* `percent` (number, **required**; exclusiveMinimum 0; exclusiveMaximum 100): Equity (return on margin) retracement, e.g. 20 for 20%. It becomes a fixed price retracement of percent divided by leverage when placed. Above 0 and below 100.
* `symbol` (string, **required**): Open position market, e.g. BTC, BTC-PERP, or a HIP-3 market such as xyz:BTC. Hyperliquid only.
* `activationPrice` (any, optional): Price at which tracking starts. Omit to keep an activation not yet reached, null to clear it, a number to set it. A different value is refused once tracking has started.
* `confirmed` (boolean, optional): Set true only after the user explicitly confirms the previewed terms. Omitted or false returns a preview and changes nothing.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode of the reviewed preview. Copy it unchanged from the preview; a different current mode refuses the call.
* `reasoning` (string, optional): Why this stop, in the user's terms.
* `sizePercent` (number, optional; maximum 100; exclusiveMinimum 0): Share of the position to close when the stop fires, above 0 and at most 100, fixed as a quantity when placed. Default 100 on a new stop; omitted on an update keeps the current quantity. A partial stop must be at least \$10 notional.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbol": "BTC",
  "percent": 20,
  "sizePercent": 50,
  "confirmed": true,
  "executionMode": "live"
}
```

## remove\_trailing\_stop

**Removing a trailing stop**

**Available on:** Main, Grok and ?profile=all, Computer

Remove the trailing stop on a Hyperliquid perp position, live or paper according to the connection's current trading mode. Removal cancels every trailing stop order on the market, including one placed in Hyperliquid's own app. Call first with confirmed omitted or false to see the trailing stop that would be removed and show it to the user. After the user explicitly confirms, call again with the same symbol, confirmed=true and the executionMode from the preview. Use view\_trailing\_stop to check the final state. Hyperliquid markets only; Lighter markets are refused.

* `symbol` (string, **required**): Open position market, e.g. BTC, BTC-PERP, or a HIP-3 market such as xyz:BTC. Hyperliquid only.
* `confirmed` (boolean, optional): Set true only after the user explicitly confirms the removal. Omitted or false shows what would be removed and changes nothing.
* `executionMode` (string, optional; one of `"paper"`, `"live"`): Trading mode of the reviewed preview. Copy it unchanged from the preview; a different current mode refuses the call.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbol": "BTC",
  "confirmed": true,
  "executionMode": "live"
}
```

## view\_trailing\_stop

**Checking a trailing stop**

**Available on:** Main, Grok and ?profile=all, Computer

Read the trailing stop on a Hyperliquid perp position, live or paper according to the connection's current trading mode: its phase (waiting\_activation, active or none), the equity percent at the current leverage, the fixed price retracement, the quantity it closes, activation price, best price, trigger price and order id. Read-only. Use it after set\_trailing\_stop or remove\_trailing\_stop, or when the user asks whether a trailing stop is running.

* `symbol` (string, **required**): Open position market, e.g. BTC, BTC-PERP, or a HIP-3 market such as xyz:BTC. Hyperliquid only.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "symbol": "BTC"
}
```

## get\_staking

**Loading your HYPE staking**

**Available on:** Main, Grok and ?profile=all, Computer

Get a rich view of the user's HYPE staking in one place: delegated and undelegated staking balance, per-validator delegations with predicted APR, commission and lockup, accrued staking rewards, pending unstaking withdrawals, and the highest-APR active validators. Use when the user asks about staking, delegating, validators, staking rewards or APR, or 'how much HYPE am I staking'. Staking balances are separate from the trading balance get\_portfolio reports and are never part of trading collateral. This tool is read-only: it cannot stake, unstake or redelegate.

* `skipCache` (boolean, optional): Internal: bypass the 5s staking caches for a fresh read.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: true, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## edit\_watchlist

**Editing your watchlist**

**Available on:** Main, Grok and ?profile=all, Computer

Keep favorite markets within reach by updating the authenticated user's named watchlists. Call this when the user asks to add, remove, or track a symbol on their watchlist (e.g. "add HYPE to my watchlist", "stop tracking ETH", "set my watchlist to BTC and SOL"). A user can have multiple named lists; the `list` field selects which one to edit (defaults to "Watchlist"). `set` replaces the named list's contents with exactly the given symbols, while `add` and `remove` merge against the current contents. `set` with no symbols clears the list. Returns the updated list.

* `action` (string, **required**; one of `"add"`, `"remove"`, `"set"`): add: add symbols to the list; remove: remove symbols from the list; set: replace the list's contents with exactly these symbols (pass an empty array to clear the list)
* `symbols` (array, **required**): Ticker symbols, e.g. BTC, ETH, HYPE. Required for add/remove; may be empty for set to clear the list
* `list` (string, optional): Name of the watchlist to edit (a user can have multiple named lists)
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: true, openWorldHint: true, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "action": "add",
  "symbols": [
    "BTC"
  ]
}
```

## help

**Showing what I can do**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

List Co-Invest'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.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: false, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## enable\_automated\_trading

**Save automated trading policy**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Only save a policy when the user explicitly asks and supplies maxOrderNotional. Store the requested per-order limit and expiry in the verified account's automation policy record. This only saves policy data: it does not start a scheduler, authorize automated orders in this MCP profile, or bypass Main's existing order confirmation flow. The saved policy documents an intended batch limit of five times the per-order limit for clients that use it. Expiry is limited to seven days. A running Computer process may retain its current local policy until its status tool refreshes it.

**Inputs on Main and Grok and ?profile=all:**

* `maxOrderNotional` (number, **required**; exclusiveMinimum 0): Maximum intended notional USD per order in the saved policy record.
* `expiresInMinutes` (integer, optional; maximum 10080; exclusiveMinimum 0): How long the saved policy remains unexpired. Defaults to seven days; the maximum is seven days.
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Inputs on Computer and Computer support mode:**

* `maxOrderNotional` (number, **required**; exclusiveMinimum 0): Maximum notional USD for any single order.
* `expiresInMinutes` (integer, optional; maximum 10080; exclusiveMinimum 0): How long automation stays enabled. Defaults to 10080 minutes (7 days). Max 10080 minutes (7 days).
* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, idempotentHint: true, openWorldHint: false, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "maxOrderNotional": 1
}
```

## disable\_automated\_trading

**Clear saved automation policy**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Clear the saved automation policy record for the verified account. This does not change order behavior or cancel accepted orders. A running Computer process may retain its previous local policy until its status tool refreshes it.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, idempotentHint: true, openWorldHint: false, readOnlyHint: false

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## automated\_trading\_status

**Read saved automation policy**

**Available on:** Main, Grok and ?profile=all, Computer, Computer support mode

Read the saved automation policy record for the verified account. A missing or expired record is reported as no active saved policy. This reports persisted policy data only; it does not tell whether another Computer process has refreshed its local state or authorize orders in this MCP profile.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: false, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```

## get\_account

**Showing your trading account**

**Available on:** Main, Grok and ?profile=all, Computer

Return the public address of the authenticated trading account. This is the trading account address, not a deposit or bridge destination. No credentials or account secrets are returned.

* `user_intent` (string, optional; maxLength 2048): One-sentence paraphrase of the user's request that led to this tool call. Include when you have conversational context.

**Annotations:** destructiveHint: false, openWorldHint: false, readOnlyHint: true

**Example call:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.