Skip to main content
Glama

Cancel an open order

cancel_order
DestructiveIdempotent

Cancel one resting order (order_id), or every unfilled entry on a symbol (all_waiting_entries: true). An entry that never filled takes its own stop and take-profit with it. Use to withdraw unfilled orders or a take-profit. Not for closing positions (use close_position), nor a held position's stop-loss, which stays until the position is closed (tighten it with tighten_stop_loss). 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
symbolYesBase coin, e.g. BTC
order_idNoThe one order to cancel, from get_my_open_orders
all_waiting_entriesNoInstead of order_id: true cancels every unfilled entry on this symbol and venue (limit and trigger entries; stops and take-profits stay)

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.6/5.0
Behavior4/5

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

Beyond the annotations it discloses two non-obvious behaviors: an unfilled entry being cancelled takes its own stop and take-profit with it, and the tool works while trading is halted. It does not cover permission requirements or partial-failure behavior, so it falls short of fully exhaustive, but it materially exceeds what destructiveHint/idempotentHint alone convey.

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?

Tight, front-loaded prose: the primary action and both modes come first, then side effects, then exclusions and the next step. No filler sentences and no restatement of the title.

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

Completeness4/5

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

With an output schema, full parameter coverage and descriptive annotations, the description covers the remaining agent-facing gaps: destructive side effects on attached exits, availability during halts, and sibling routing. Only auth/scope expectations are unaddressed, a minor gap for a mutation tool.

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 100%, so the baseline is 3; the description adds the either/or relationship between order_id and all_waiting_entries and clarifies that the symbol-wide mode targets unfilled entries only. The remaining venue-default and length constraints are left to the schema, which is appropriate.

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 and resource plus both operating modes: cancel one resting order by order_id, or every unfilled entry on a symbol via all_waiting_entries: true. It also names what it is not (close_position, tighten_stop_loss), so an agent can separate it from siblings without opening a 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?

Explicit when-to-use (withdraw unfilled orders or a take-profit) and explicit when-not (not for closing positions; not for a held position's stop-loss, which stays until close and is instead tightened with tighten_stop_loss). It also names a concrete follow-up, get_my_open_orders.

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