TRADEHUBTESTNET

All tools

set_take_profit_levels

Set a position's take-profits · idempotent · scopes: positions:close

Replace a held position's take-profits: one level or several (e.g. 50% at 98000, the rest at 101000), each a reduce-only trigger on the exchange, so it can only shrink the position. Use after entry, or to move or remove them ([] removes all). Not for the stop-loss (use tighten_stop_loss) or for closing now (use close_perp_position_reduce_only). Inputs: symbol, levels [{price, close_pct}], venue. New orders are placed before the old ones go. Works while trading is halted. Next: get_my_open_orders.

Call it

MCP tools/call

{"name": "set_take_profit_levels", "arguments": {"symbol": "BTC", "levels": [{"price": 86000, "close_pct": 50}, {"price": 90000, "close_pct": 50}]}}

REST

PUT /v1/positions/{symbol}/take-profits
{"symbol": "BTC", "levels": [{"price": 86000, "close_pct": 50}, {"price": 90000, "close_pct": 50}]}

Inputs

NameMeaning (* required)
symbol *Base coin, e.g. BTC
levels *Up to 4 levels, percentages adding up to at most 100; [] removes every take-profit
venueVenue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid, else your only connected venue, else sandbox

Returns

FieldMeaning and unit
okFalse when rejected or failed
request_idOrder request id; get_order_request_status(request_id) follows it
statuspending_approval, armed (a trigger entry waiting for its price), executed, rejected, failed, expired, declined, cancelled, or executing (TradeHub has not confirmed the outcome yet: check get_order_request_status)
venueVenue name
order_idVenue order id of the fill
sl_oidVenue order id of the protective stop
fill_priceAverage fill, USD per coin
filled_sizeFilled size, in the base coin (e.g. BTC), not USD
approval_expires_atWhile pending: when the approval request lapses, ISO 8601 UTC
errorWhy it was rejected or failed
checksChecks run at execution
receiptSigned receipt (compact JWS, EdDSA) once executed: request, checks, preview price, fill, slippage, order ids, delegation. Verify with /.well-known/tradehub-receipts.jwks
take_profitsset_take_profit_levels: the take-profits now on the exchange
trigger_pricestatus armed: opens at market when the mark reaches this, USD per coin
trigger_expires_atstatus armed: when it lapses unless reached, ISO 8601 UTC
feeOnce executed: the trading fee, estimated at once and replaced by the amount the exchange charged once its fill records show it

Rejections: error codes, each with what to do.

TradeHub never asks for withdrawal permissions.