Skip to main content
Glama
PatrickSUDO

firstrade-mcp-server

by PatrickSUDO

place_option_spread

Execute a confirmed two-leg option spread order using a token from preview_option_spread, ensuring the live trade matches the approved preview exactly.

Instructions

Place a real two-leg option spread (dry_run=False). Requires FT_ALLOW_LIVE_ORDERS=true in .env AND a confirm_token from preview_option_spread called with these exact same arguments — the server rejects the order otherwise, it does not just rely on the caller having "meant to" preview first.

Same arguments as preview_option_spread, plus confirm_token. DAY order only; 7AM–4PM ET window. Returns JSON with order confirmation. This sends a real order to Firstrade.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
symbol1Yes
symbol2Yes
net_priceYes
contracts1No
contracts2No
limit_typeYes
transaction1Yes
transaction2Yes
confirm_tokenYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly warns this sends a real order to Firstrade, requires a live-order environment flag, and that the server enforces the preview-token requirement rather than trusting caller intent. It also discloses the order window and return type, giving strong transparency for a mutating action.

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 description is dense and front-loaded with the most important fact: this places a real order. It avoids fluff and covers prerequisites, constraints, and return behavior. The only slight redundancy is stating the real-order nature twice, but the repetition serves as a safety emphasis and does not meaningfully hurt clarity.

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 a high-complexity live-order tool, the description covers the critical context: live environment requirement, preview-token precondition, server-side enforcement, tradeable hours, order type, and confirmation return. It does not enumerate parameter values or error cases, but the pointer to preview_option_spread and the existence of an output schema fill in some of the remaining gaps.

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

Parameters3/5

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

The schema has 0% coverage across 9 parameters, and the description does not directly explain symbol1, transaction1, transaction2, limit_type, net_price, or contracts1/contracts2. It does add meaningful context by saying the arguments are the same as preview_option_spread plus confirm_token, and it explains that confirm_token comes from a prior preview call. This helps but delegates most parameter interpretation to a sibling tool rather than standing alone.

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?

The description clearly states the tool places a real two-leg option spread and explicitly distinguishes it from a dry run with 'dry_run=False' and 'This sends a real order to Firstrade.' It names the resource (option spread), the action (place), and the live nature of the operation, making it unmistakable versus preview_option_spread.

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?

The description gives explicit preconditions: FT_ALLOW_LIVE_ORDERS=true in .env and a confirm_token from preview_option_spread called with the exact same arguments. It also specifies the DAY-only restriction, the 7AM–4PM ET window, and notes the server will reject the order if the preview requirement is not met. This is clear when-to-use and when-not-to-use guidance.

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