Skip to main content
Glama

Set a position's take-profits

set_take_profits
Idempotent

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_position). Inputs: symbol, levels [{price, close_fraction}], venue. New orders are placed before the old ones go. Works while trading is halted. Next: get_my_open_orders.

Input Schema

NameRequiredDescriptionDefault
venueNoVenue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid if connected, else your only connected exchange, else the sandboxhyperliquid
levelsYesUp to 4 levels, percentages adding up to at most 100; [] removes every take-profit
symbolYesBase coin, e.g. BTC

Output Schema

NameRequiredDescriptionDefault
okYesFalse when rejected or failed
feeNoOnce executed: the trading fee, estimated at once and replaced by the amount the exchange charged once its fill records show it
legsNoA ladder entry: per leg {price, size_base, order_id, sl_oid, status}; status resting, or after a refused leg withdrawn, filled or partly_filled
errorNoWhy it was rejected or failed
venueNoVenue name
checksNoChecks run at execution
sl_oidNoVenue order id of the protective stop
statusYespending_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_status)
receiptNoSigned receipt (compact JWS, EdDSA) once executed: request, checks, preview price, fill, slippage, order ids, delegation. Verify with /.well-known/tradehub-receipts.jwks
order_idNoVenue order id of the fill
cancelledNocancel_order with all_waiting_entries: the order ids withdrawn (venue ids and req_… trigger entries); [] when nothing was waiting
fill_priceNoAverage fill, USD per coin
request_idYesOrder request id; get_order_status(request_id) follows it
deprecationNoPresent only while this tool is deprecated: replacement, removal_date, changelog
filled_sizeNoFilled size, in the base coin (e.g. BTC), not USD
take_profitsNoset_take_profits: the take-profits now on the exchange
trigger_priceNostatus armed: opens at market when the mark reaches this, USD per coin
trigger_expires_atNostatus armed: when it lapses unless reached, ISO 8601 UTC
approval_expires_atNoWhile pending: when the approval request lapses, ISO 8601 UTC

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavior beyond the annotations: levels become reduce-only exchange triggers so they can only shrink the position, new orders are placed before the old ones are removed (no unprotected gap), and it works while trading is halted. The only gap is what happens on partial failure of the replace sequence, but the ordering note already signals intent to keep the position protected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and resource, then usage, exclusions, inputs, execution semantics, and a suggested next call, all in a dense block with no filler sentence. The parenthetical examples carry genuine information rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation with hidden exchange-side ordering effects, the definition covers replacement semantics, reduce-only behavior, removal, halt behavior, and the follow-up to verify. An output schema exists, so return-value description is correctly omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3, but the description adds meaning the schema lacks: a worked allocation example ('50% at 98000, the rest at 101000') and the empty-array removal semantics. It does not add trigger-price directionality (long vs short) because the schema already covers that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Replace) and resource (a held position's take-profits), including the shape of the payload ('one level or several'), and distinguishes it from the stop-loss and close_position siblings by name. An agent can pick it out of the 35-tool sibling list without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing ('Use after entry'), the mutation cases ('to move or remove them'), and a concrete removal form ('[] removes all'). It also names two exclusions with their correct alternatives: tighten_stop_loss for stops and close_position for immediate exit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources