Skip to main content
Glama

Place a limit order

place_limit_order

Place a limit order. Default timeInForce=GTT (long-term, durable, broadcast-commit so errors return synchronously). Use SHORT_TERM only for latency-sensitive orders (expire within ~20 blocks, broadcast async). NOTE: stateful (GTT) orders are rate-limited to 2/block and 20 per 100 blocks — pace placements. Returns confirmation with the REAL outcome verified via the indexer (filled / partially_filled / resting / unfilled / pending) — broadcast code: 0 only means the tx was accepted, NOT that it filled. Report from confirmation.outcome; if it is pending, the indexer is lagging — re-check shortly.

Input Schema

NameRequiredDescriptionDefault
sideYes
sizeYesSize in base units
priceYes
marketYesMarket ticker, e.g. BTC-USD
confirmNoVerify the real outcome via the indexer after broadcast (default true).
clientIdNo
postOnlyNoReject if it would cross (maker-only). Defaults to server config.
reduceOnlyNo
timeInForceNoGTT
goodTilBlockOffsetNoSHORT_TERM blocks ahead (default 10)
goodTilTimeSecondsNoGTT lifetime (default 3600)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / market / pattern
      Added value: +"^[A-Z0-9]{1,20}-[A-Z0-9]{1,20}$"
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare readOnly=false, idempotent=false, destructive=false — a very thin safety profile. The description adds genuinely decision-relevant behavior: rate limits on stateful GTT orders, the synchronous-vs-async broadcast difference between TIF modes, and critically that broadcast code:0 means the tx was accepted, not filled, so the agent must report from confirmation.outcome. That is far beyond what the annotations convey.

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

Conciseness4/5

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

Front-loaded with the core action before any caveats, and essentially every sentence carries operational information (defaults, rate limits, outcome semantics) rather than filler. It is a dense single block, though — the rate-limit and confirmation warnings would scan faster as distinct sentences or bullets.

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?

For an 11-parameter mutation tool with no output schema, the description covers the essentials: TIF behavior, rate limits, and the shape/meaning of the returned confirmation outcome including the pending case. Minor gaps remain (permissions/auth requirements, and the behavior of the undocumented reduceOnly/clientId parameters), but nothing that would cause a wrong invocation.

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 55% on 11 parameters, so the description must compensate, and it does: it explains timeInForce's default and the trade-off between its two enum values, plus the post-broadcast meaning of the confirm/confirmation path. It stays silent on reduceOnly and clientId, which are undocumented in both schema and description, so it doesn't fully close the gap.

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 ('Place') plus resource ('a limit order'), which inherently distinguishes it from place_market_order, place_stop_loss and place_take_profit in the sibling list. The description goes on to pin down the order's default semantics (GTT, durable, synchronous broadcast-error reporting), so an agent knows exactly what kind of order this creates.

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

Usage Guidelines4/5

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

Gives explicit when-to-use guidance at the parameter level: default GTT for durable orders, SHORT_TERM only for latency-sensitive orders. It also warns to pace placements due to rate limits (2/block, 20 per 100 blocks). It does not, however, say when to pick this tool over place_market_order or the conditional-order siblings, so tool-level alternative routing is left to the agent.

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