Skip to main content
This is a reference for the verification API’s payload adapter. For apps you can use inside a Desk, see Desk apps.
venue: liquid. Over HTTP, liquidtrade, liquidx, coinvest, liquidcoinvest and liquidmcp also resolve to it. Liquid (liquid.trade) is a self-custodial terminal for crypto perps, tokenised equities, commodities, FX and prediction markets, executing mainly on Hyperliquid. Its Co-Invest MCP server lets an agent research markets and place real orders on the user’s account.

What to send

The MCP tool call the agent is about to make: { name, arguments } (or tool with args, input or params), or the JSON-RPC envelope { method: "tools/call", params: { name, arguments } }. A client prefix such as mcp__liquid-co-invest__execute_order is parsed. Without venue, a prefixed call is detected only when the server segment contains liquid or coinvest and not hyperliquid, and the tool is known. Some bare names are shared with other venues (get_portfolio, cancel_order, close_position, execute_order, search_markets, get_news, show_chart, analyze_market, view_open_orders, help). They are detected only when the arguments carry Liquid’s user_intent or aiAttribution field. Set venue: "liquid" and detection does not matter. Order arguments sent with no tool name (symbol or asset, plus side) are classified only when venue is set, with actionType: null. actionType is the tool name.

No live lookup

Every read on the Liquid server needs the user’s own OAuth session. To give the judge live facts, run a preview-capable tool with confirmed: false first and pass its result in context.

Tools the agent should not call

execute_order, execute_orders_batch, close_position, execute_tpsl, generate_deposit_address and create_onramp_session describe themselves as internal to Liquid’s confirmation widget, which calls them after the user taps Confirm. Any client holding the trade scope can still call them directly. When an agent does, the classifier notes that the Confirm tap was skipped and the verdict is the only gate left. suggest_trade, suggest_trades_batch and modify_position only render a confirmation card, but they are judged as the trade they propose.

Two traps

size changes meaning by direction. On execute_order, suggest_trade and the prediction order tools it is USD notional (collateral × leverage): size: 250 is $250 of exposure, not 250 coins. On `close_position` and `close_positions_batch.closes[]` it is coin units. The classifier states the collateral at risk (notional ÷ leverage) and flags collateral under Liquid's documented $15 minimum. Several large actions carry no dollar figure, so a mandate written only as dollar limits does not constrain them:
  • close_positions_batch with confirmed: true and neither symbols nor closes closes every open position.
  • disable_paper_trading puts every later order back on real funds. Paper mode is account state, so an order payload never shows whether it is real.
  • update_leverage on an open position moves its liquidation price without trading.
  • Removing a stop-loss with modify_position or execute_tpsl strips protection from a leveraged position.

Other notes the classifier adds

  • On close_position, close_positions_batch, execute_prediction_order, close_prediction_position, cancel_prediction_order and update_leverage, confirmed: true executes and anything else previews. When the payload has confirmed, the note says which one it is. A preview is judged as the action it previews.
  • A leveraged order with no take-profit or stop-loss, a market order, and a limit order with no price.
  • A prediction market is named only by a numeric market_id and outcome_id, so the question is unverified unless your rules pin the id. Prediction prices must be between 0 and 1.
  • convert_balances.needed_amount is the amount of the destination token to produce.
Tool names, argument names, enums and sizing come from the server’s own tools/list (45 tools, server Liquid-MCP 1.0.0, captured 2026-09).

Example

From an MCP client

Add the Chance connector next to Liquid’s and instruct the agent to call verify_intent before any Liquid tool that trades or moves funds, with your rules as intent, the exact tool call as action and venue: "liquid", and to act only on ALLOW. Chance never holds your Liquid login.