greeks-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_max_painA | Max Pain per expiration — the strike that minimizes total option value (where most options expire worthless), a magnet the price tends to converge toward at expiration. Plan: Free (1 symbol, 15-min delay) and up. Args: symbol: Underlying ticker, e.g. "AAPL", "SPY", "NDAQ". expiration: Unix expiration timestamp for a single expiry, or "all" for every expiration (slower, complete). Omit for the nearest expiry. Returns the raw MaxPainResponse JSON: symbol, spotPrice, timestamp, and results[] with maxPainStrike, totalPainAtMax, spotDistance, spotDistancePct. |
| get_greeksA | Black-Scholes Greeks (Delta, Gamma, Theta, Vega, Rho) plus theoretical price and mispricing for every contract in the chain. Plan: Trader and up. Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all". Omit for the nearest expiry. range: Pass "atm" to restrict the chain to at-the-money contracts. moneyness: A "low,high" pair (e.g. "0.9,1.1") to filter contracts by strike/spot ratio. limit: Cap the number of contracts returned (per side). Returns GreeksResponse JSON: symbol, spotPrice, timestamp, and contracts[] each with delta/gamma/theta/vega/rho, iv, theoreticalPrice, mispricing, inTheMoney. |
| get_gexA | Gamma & Delta Exposure (GEX/DEX) per strike, plus total Net GEX and the Gamma Flip level (strike where Net GEX crosses zero — a regime transition). Positive Net GEX = dealers long gamma (price pins); negative = moves amplified. Plan: Trader and up. Args:
symbol: Underlying ticker.
expiration: Unix timestamp of a specific expiry, or "all". Omit for the
nearest expiry.
symbols: Optional comma-separated list for a multi-symbol GEX request
(e.g. "SPY,QQQ,IWM"); when set it takes precedence over Returns GEXResponse JSON: symbol, spotPrice, timestamp, totalNetGEX, gammaFlip, and strikes[] with callGEX/putGEX/netGEX and callDEX/putDEX/netDEX. |
| get_flowA | Unusual options activity detection — contracts with abnormally high volume relative to open interest, typically signalling institutional/"smart money" positioning. Signals: unusual_volume (high: Vol/OI ≥ 3.0, medium: ≥ 1.5) and opening_position (Vol ≥ 50 with OI = 0). Contracts with volume < 10 are noise. Plan: Trader and up. Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all". Omit for the nearest expiry. Returns FlowResponse JSON: symbol, spotPrice, timestamp, and signals[] each with contractSymbol, type, strike, expiration, dte, volumeOIRatio, iv, signal, severity. |
| get_overviewA | Full analytics dashboard for a symbol in one call: sentiment, GEX summary, max pain, expected moves, IV surface, term structure and top unusual flow. The cheapest way to get everything for a symbol at once. Plan: Pro and up. Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all" (recommended for the full dashboard). Omit for the nearest expiry. Returns OverviewResponse JSON: symbol, spotPrice, timestamp, riskFreeRate, dividendYield, sentiment, gexSummary, maxPain[], expectedMoves[], termStructure[], ivSurface[], topFlow[]. |
| get_snapshotA | Compact analytics snapshot for a symbol — a lighter-weight summary than the full overview, suitable for quick checks and cards. Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all". Omit for the nearest expiry. Returns the SnapshotResponse JSON as computed by the analytics engine. |
| get_levelsA | Key options-derived price levels for a symbol (support/resistance style levels from gamma and open-interest structure). Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all". Omit for the nearest expiry. Returns the LevelsResponse JSON as computed by the analytics engine. |
| list_plansA | List the available commercial plans with prices, limits and included routes (Free / Trader / Pro / Institutional). Public — no key needed. Use this to explain to the user which analytics their plan unlocks, or why a call returned 402/403. |
| healthA | Service health check: returns {status, supabase, stripe}. Public — no key needed. Use to verify GREEKS_BASE_URL is reachable before other calls. |
| screenerA | Public options screener across the curated watchlist (~26 liquid names: SPY, QQQ, AAPL, NVDA, TSLA, …). Returns a per-symbol row with spot price, sentiment and headline analytics — the fastest way to DISCOVER which symbols are interesting before drilling in with the authenticated analytics tools. Public — no key needed (IP rate-limited). Takes no arguments; the watchlist is fixed server-side. Returns the screener JSON (rows[] of symbol/spotPrice/sentiment/…). |
| gex_heatmapA | Public GEX-by-strike heatmap for a watchlist symbol (no key needed, IP rate-limited, cached ~5 min). A lightweight, unauthenticated way to see gamma exposure per strike without a plan. Args:
symbol: A watchlist ticker (SPY, QQQ, AAPL, NVDA, TSLA, …). Defaults to
SPY. Symbols outside the public watchlist return an error — use the
authenticated Returns the heatmap JSON: symbol plus GEX by strike. |
| track_recordA | Public track record — aggregated accuracy of the published analytics over roughly the last 35 days (per-symbol daily snapshots vs realized high/low/ close). Use it to gauge how the signals have performed historically. Public — no key needed. Takes no arguments. Returns the track-record JSON as computed server-side (updatedAt + records). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Most tools have clearly distinct purposes (greeks, GEX, flow, max pain, levels), but get_overview and get_snapshot both provide aggregated summaries and could be confused. Also get_gex and gex_heatmap overlap in concept, though one is authenticated and more comprehensive.
Most tools follow a verb_noun pattern (get_greeks, get_flow, list_plans), but a few use bare nouns or noun_noun (health, screener, gex_heatmap, track_record). This mixed convention is noticeable but not chaotic, so it remains readable.
With 12 tools, the server is well-scoped for an options analytics service. Each tool serves a clear purpose, from core analytics to public discovery and meta operations, without excessive overlap or unnecessary bloat.
The tool surface covers a comprehensive set of options analytics: greeks, GEX, flow, max pain, and levels, plus an aggregated overview. Minor gaps exist (e.g., no standalone expected-moves tool), but these are embedded in overview and snapshot, so agents can work around them.