Skip to main content
Glama

Confirm a proposed stock order

confirm_stock_order
Destructive

Place a stock order that propose_stock_order checked (requires the api:stock_trade scope). REAL MONEY: this places an order at the user's brokerage. You MUST show the full preview from propose_stock_order to the human user and obtain their explicit approval of that exact order BEFORE you call this tool. NEVER call it autonomously, and NEVER call it automatically after propose_stock_order. Send the preview's confirm_echo fields exactly: check_id, account_id, symbol, action, units, order_type and limit_price. A mismatch answers 409 and does not place this order; if the 409 says the check may already have been placed, check get_stock_order or the brokerage before you do anything else. An expired or unknown check answers 410 check_expired and places nothing. If you did not call confirm_stock_order for that check before, propose the order again and get a new approval. If you did, the first call may have placed the order: tell the user to check the brokerage before you propose again. The server places a check at most once; if this call fails with OUTCOME UNKNOWN or times out, call it again with the SAME check_id — it returns the first result and never places a second order. Do not propose a new order to retry. The response is the order: order_id, status (pending | accepted | partially_filled | filled | cancelled | unknown), filled_units and avg_fill_price. pending, accepted and unknown are not fills: use get_stock_order to follow the order. A broker refusal is an error, never a placed order.

Input Schema

NameRequiredDescriptionDefault
unitsYesconfirm_echo.units
actionYesconfirm_echo.action
symbolYesconfirm_echo.symbol
check_idYesconfirm_echo.check_id
account_idYesconfirm_echo.account_id
order_typeYesconfirm_echo.order_type
limit_priceNoconfirm_echo.limit_price; null or omitted for a Market order

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark this destructive/open-world, and the description still adds the details that matter: real money at the user's brokerage, the auth scope required, the at-most-once placement guarantee with same-check_id retry semantics, the 409/410 error meanings, and the fact that a broker refusal is an error rather than a placed order. The retry guidance is in mild tension with idempotentHint=false, but the annotation is the conservative default for a write and the description explains the actual dedup behavior by check_id.

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?

The critical rule (human approval required, never autonomous) is front-loaded in the first three sentences, which is exactly right for a destructive tool. It is long and repeats the 'never call it automatically' idea in two forms, but almost every sentence carries distinct operational information.

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?

There is no output schema, and the description fully compensates: it enumerates the response fields (order_id, status, filled_units, avg_fill_price), interprets the status enum, and warns that pending/accepted/unknown are not fills and must be followed via get_stock_order. Nothing needed to invoke or interpret the result is missing.

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, but the description adds real value: the six confirm_echo fields must be echoed exactly, and limit_price is null/omitted for a Market order. It stops short of explaining any field beyond that echo contract.

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+resource ('Place a stock order that propose_stock_order checked'), names the sibling that must precede it, and makes the real-money stakes explicit. An agent can distinguish it from propose_stock_order and confirm_trade without opening any 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 when-to-use rules (only after showing the full preview and obtaining human approval of that exact order), explicit prohibitions (never autonomously, never immediately after propose_stock_order), and routes the agent to alternatives (get_stock_order, re-propose with a new approval) for the ambiguity cases.

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