Skip to main content
Glama

Propose a stock order (preview only)

propose_stock_order

Check a stock order at YOUR own linked brokerage and return a preview (requires the api:stock_trade scope). This does NOT place an order. Get account_id from get_holdings (accounts[].accountId; get_holdings needs the api:portfolio scope). Rules the server enforces: US-listed stocks, ETFs and ADRs only; whole shares (units is an integer of 1 or more); order_type Market or Limit (limit_price is required for Limit and not allowed for Market); Day orders only; action BUY or SELL — a SELL cannot be more than the shares you hold, so it cannot open a short; a per-order dollar cap. The response has quote (bid, ask, last), preview (check_id, expires_at, account with a masked number, action, symbol, units, order_type, limit_price, estimated_cost, commission, buying_power_after) and confirm_echo. The check expires about 5 minutes after it is made. You MUST show the full preview to the human user. Call confirm_stock_order only after the human explicitly approves this exact order. A 403 trading_disabled means brokerage trading is not enabled for this account; a 429 means the per-minute order limit is spent (wait Retry-After seconds).

Input Schema

NameRequiredDescriptionDefault
unitsYeswhole shares
actionYes
symbolYesUS ticker, e.g. AAPL or BRK.B
account_idYesa brokerage account id from get_holdings accounts[].accountId
order_typeYes
limit_priceNorequired for order_type Limit; not allowed for Market

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?

Adds substantial behavior beyond the annotations: server-enforced trading rules (US-listed only, whole shares, order_type/limit_price coupling, Day-only, no short SELL, dollar cap), the check expiry (~5 min), required scopes, and failure semantics (403 trading_disabled, 429 with Retry-After). This is rich, action-relevant disclosure that the annotations do not carry.

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 purpose and the 'does NOT place an order' disclaimer, and nearly every sentence carries operational weight. It is dense and long for a single paragraph, but the structure (purpose → rules → response → error semantics) stays navigable, so the length is mostly justified.

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, yet the description enumerates the response shape (quote, preview fields including check_id/expires_at/estimated_cost/buying_power_after, confirm_echo) and the expiry window. Combined with the scope, rules, and error guidance, an agent has everything needed to invoke and interpret the call correctly.

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 67%, and the description supplements it with meaningful constraints — whole-share integers, limit_price required for Limit and forbidden for Market, SELL capped by holdings, and the account_id/symbol sources. Much of this is already in the schema descriptions, so it adds value but not a great deal beyond the structured fields.

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 ('Check a stock order at YOUR own linked brokerage and return a preview'), and immediately clarifies the scope with 'This does NOT place an order.' It explicitly distinguishes itself from confirm_stock_order, so an agent can separate the two without opening either 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 the precondition for account_id (from get_holdings accounts[].accountId), names the alternative explicitly ('Call confirm_stock_order only after the human explicitly approves this exact order'), and states required scopes. When to use, when not to use, and the dependency chain are all spelled out.

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