Skip to main content
Glama
PatrickSUDO

firstrade-mcp-server

by PatrickSUDO

get_option_greeks

Retrieve broker-computed option greeks (delta, gamma, theta, vega, rho, IV) for a symbol and expiration. Filter by strike range to size or compare option legs with accurate values.

Instructions

Get broker-computed greeks (delta/gamma/theta/vega/rho, IV) for an option chain.

Prefer this over locally derived greeks when sizing or comparing legs.

Args: symbol: Underlying ticker, e.g. 'TSLA'. exp_date: Expiration as 'YYYYMMDD' (or 'YYYY-MM-DD'). Get valid dates from get_option_chain with exp_date omitted. strike_min / strike_max: Optional inclusive strike filter (0 = no bound); full greeks on liquid names exceed the MCP result-size cap.

Returns JSON {"chains": [{strike, cp, side, symbol, iv, delta, gamma, rho, theta, vega}, ...]}. Illiquid strikes report "--" rather than a number.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
symbolYes
exp_dateYes
strike_maxNo
strike_minNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries safety/behavioral info: returns broker-computed data, applies a strike-cap workaround, and reports '--' for illiquid strikes. It doesn't mention data freshness or auth, but this is a read-only query and the main quirks are covered.

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 a clear verb and greeks list, then a short routing note scan and sample return schema. Every sentence contributes; slightly dense but efficient.

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?

Enough to invoke correctly: parameters, formats, optional filters, behavior for illiquid strikes, return shape, and a pointer to get_option_chain for valid expiration dates. Missing only rare edge-case/error behavior.

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

Parameters5/5

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

Adds substantial meaning beyond the bare schema: ticker format example, date format guidance, where to get valid dates, optional strike_min/max semantics with 0 meaning no bound, and why you'd filter (size cap).

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 opens with a specific action and resource: 'Get broker-computed greeks ... for an option chain', and enumerates exactly which Greeks and IV are returned. It is easy to distinguish from sibling tools such as get_option_chain or quote tools, and it even contrasts itself with locally derived greeks.

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?

Explicitly tells the agent to prefer this over locally derived greeks when sizing/comparing legs artists, and points to get_option_chain for valid expiration dates. It doesn't fully spell out when to choose alternative MCP tools, but the condition is clear enough.

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