Skip to content

Trading

Main Web3 trading tools. Defaults to dry-run. The LLM should pass confirm: true to actually submit. Called without confirm, the tool should return a preview describing exactly what it would have done.

WARNING

Treat confirm: true as the equivalent of pressing the trade button yourself. The LLM only gets it when you approve — review the dry-run output first. That said, not every LLM model has the same reasoning capability.

Side semantics

For every trade tool:

  • side: "long" — buy (or buy on trigger). Opens or adds to a long position; closes a short when reduce_only.
  • side: "short" — sell (or sell on trigger). Opens or adds to a short position; closes a long when reduce_only.

For bracket orders, side is the entry side; TP/SL legs go the opposite direction automatically.

Placement verification

A 200 from Strike's POST /v2/order only means the request was accepted for processing. The matching engine can still refuse the order — most commonly with insufficient_balance — and when it does, the ack looks exactly like the ack for an order that rested on the book. An order that was never placed therefore used to read as "submitted".

Every tool that places an order now guards both ends of that gap:

  • Before submitting, the account's available_balance is checked against the margin the order needs (notional ÷ leverage). An order the account plainly cannot fund is refused locally, with the shortfall and the notional that would fit, and never reaches the exchange. Strike's maxNotionalValue does not cover this — it is a market-level ceiling, not a balance-aware one. The check is read-only, so it runs on the dry run too: an unfundable order fails on the approval card rather than after you approve it.

  • After submitting, the order is read back by client_order_id (via GET /v2/order, falling back to GET /v2/history/order for orders already off the active index) and the response ends with a LIVE STATUS line:

    LineMeaning
    VERIFIED RESTINGLive on the book at the stated price
    VERIFIED FILLEDExecuted — there is a position, not a pending order
    REJECTED BY THE EXCHANGENothing was placed. Carries the exchange's reason and the available balance. Returned as a tool error
    CANCELED / EXPIREDNot on the book
    UNVERIFIEDThe read-back failed; the order's state is unknown and must be checked with strike_get_open_orders / strike_get_order_history

    For a bracket, verification covers the entry leg — the TP/SL legs are inactive until it fills.

TIP

LIVE STATUS, not the Submitted … summary above it, is what actually happened. Report that line.

strike_place_market_trade

Open or close a position at market.

NameTypeDefaultNotes
symbolstringInternal symbol (BTC-PERP, …)
sidelong / shortSee above
quantitynumber > 0Base asset units; must respect size precision
reduce_onlyboolfalseIf true, cannot open new exposure (routes to closeLong/closeShort)
confirmboolfalseMust be true to actually place

reduce_only orders bypass the $10 minimum notional (so closing dust always works).

Example prompt:

Open a market long on BTC-PERP with 1% of my balance. Confirm and execute.

strike_place_limit_trade

Place a resting limit order. Returns the order ID, which can be passed to strike_cancel_order.

NameTypeDefaultNotes
symbolstring
sidelong / short
quantitynumber > 0Respects size precision
pricenumber > 0Limit price in USD
reduce_onlyboolfalseUse for exit limits on existing positions
confirmboolfalseMust be true to actually place

Reduce-only limits and empty positions

Strike rejects reduce-only limits when no position exists yet — the order has nothing to reduce. For TPs/SLs that should rest until triggered, use strike_place_take_profit / strike_place_stop_loss instead. For TPs/SLs attached to a planned new entry, use strike_place_bracket_limit.

strike_place_take_profit

Reduce-only take-profit trigger order. Rests on the book until stop_price is hit, then fills at market (if no limit_price) or as a limit at limit_price.

NameTypeDefaultNotes
symbolstring
sidelong / shortlong = buy on trigger (closes a short); short = sell on trigger (closes a long)
quantitynumber > 0
stop_pricenumber > 0Trigger (mark) price
limit_pricenumber > 0?If set, places take_profit_limit instead of take_profit
confirmboolfalse

strike_place_stop_loss

Reduce-only stop-loss trigger order. Same shape as strike_place_take_profit. Use this to attach a stop to an existing position.

NameTypeDefaultNotes
symbolstring
sidelong / shortlong = buy on trigger (closes a short); short = sell on trigger (closes a long)
quantitynumber > 0
stop_pricenumber > 0Trigger (mark) price
limit_pricenumber > 0?If set, places stop_limit instead of stop
confirmboolfalse

strike_place_bracket_limit

Limit entry + take-profit + (optional) stop-loss as a single Strike strategy order. The TP/SL only activate after the entry fills, so they don't get rejected for "no position to reduce" the way standalone reduce-only orders do. Strike OCO-cancels the survivor when one fills.

NameTypeDefaultNotes
symbolstring
sidelong / shortEntry side. TP/SL go opposite automatically.
quantitynumber > 0Entry size
entry_pricenumber > 0Entry limit price
tp_stop_pricenumber > 0TP trigger (mark) price
tp_limit_pricenumber > 0?tp_stop_priceTP limit after trigger; defaults to the trigger
sl_stop_pricenumber > 0?Omit for TP-only bracket
sl_limit_pricenumber > 0?If omitted with sl_stop_price, SL is a market stop
confirmboolfalse

Example prompt:

Place a long bracket_limit on BTC. Use 1% of my account balanace. Entry at 66,800; TP at 68,500; SL at 66,000. Dry-run first, then confirm.

For multi-TP setups (e.g. 50/30/20 sizing), call this once per TP slice with the matching quantity and TP levels.

strike_cancel_order

Cancel a resting order by ID.

NameTypeDefaultNotes
orderIdstringNumeric order ID or client_order_id UUID, as returned by strike_get_open_orders
symbolstring
confirmboolfalse

Example prompt:

List my open orders, then cancel the BTC limit at 65,000.

Copyright © 2026 CrowdTrendz Ltd. All rights reserved.