{"components":{"securitySchemes":{"bearerAuth":{"description":"ApexVol API token (avmcp_\u2026) from apexvol.com/account \u2192 API Access.","scheme":"bearer","type":"http"}}},"info":{"description":"Options-analytics API (token surface). Auth: `Authorization: Bearer avmcp_<token>` on every request; active Pro subscription required. Rate limits: 60/min and 1,000/hr per token, plus a monthly request budget \u2014 remaining quota is returned in X-RateLimit-* and X-Monthly-Budget-Remaining response headers. IV values are percentage points unless a payload says otherwise (`iv_units`). The same endpoints power the ApexVol MCP server for AI assistants \u2014 `pipx install apexvol-mcp` (PyPI), setup at https://apexvol.com/mcp.","title":"ApexVol API","version":"1.10"},"openapi":"3.1.0","paths":{"/api/mcp/data/analyze-strategy":{"post":{"description":"Analyzes custom legs: net premium and Greeks, max profit/loss, breakevens, probability of profit, and the P&L curve. Fetches live spot when stock_price is omitted.\n\n**Request body:** JSON: ticker, legs [{type CALL|PUT, action BUY|SELL, strike, expiration, premium, quantity?, delta?, theta?, vega?, iv?}] \u2014 required; stock_price?, name?\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"breakevens\": [\n      287.65,\n      312.35\n    ],\n    \"legs_summary\": [\n      {\n        \"action\": \"SELL\",\n        \"expiration\": \"2026-07-17\",\n        \"iv\": 0.2235,\n        \"premium\": 3.55,\n        \"quantity\": 1,\n        \"strike\": 290.0,\n        \"type\": \"PUT\"\n      },\n      {\n        \"action\": \"BUY\",\n        \"expiration\": \"2026-07-17\",\n        \"iv\": 0.2298,\n        \"premium\": 2.4000000000000004,\n        \"quantity\": 1,\n        \"strike\": 285.0,\n        \"type\": \"PUT\"\n      },\n      \"...(+2 more items)\"\n    ],\n    \"max_loss\": -265.0000000000009,\n    \"max_profit\": 235.00000000000003,\n    \"net_delta\": -0.010599999999999998,\n    \"net_premium\": -235.00000000000003,\n    \"net_theta\": 0.0237,\n    \"net_vega\": -0.09319999999999995,\n    \"pnl_curve\": [\n      [\n        228.0,\n        -265.0\n      ],\n      [\n        229.5151515151515,\n        -265.0\n      ],\n      \"...(+98 more items)\"\n    ],\n    \"probability_of_profit\": 41.4,\n    \"risk_reward_ratio\": 0.8867924528301857,\n    \"stock_price\": 299.27,\n    \"strategy_name\": \"Custom Strategy\",\n    \"ticker\": \"AAPL\"\n  },\n  \"success\": true\n}\n```","operationId":"post_analyze_strategy","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Analyzes custom legs: net premium and Greeks, max profit/loss, breakevens, probability of profit, and the P&L curve"}},"/api/mcp/data/borrow-rate/{ticker}":{"get":{"description":"Borrow-rate time series and hard-to-borrow signal.\n\n**Query parameters:** days (default 252)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"current\": {\n      \"avg_opt_volume\": 1167698.0,\n      \"best_etf\": \"XLK\",\n      \"borrow2yr\": 3.24,\n      \"borrow30\": 2.58,\n      \"borrow_class\": \"MODERATE\",\n      \"borrow_pctile\": 10.7,\n      \"chg_1m\": 0.48,\n      \"chg_1w\": 3.0,\n      \"iv_percentile\": 19.0,\n      \"market_cap\": 4393624768000.0,\n      \"open_interest\": 5225094.0,\n      \"options_volume\": 873079,\n      \"price\": 299.27,\n      \"put_call_ratio\": null,\n      \"residualRate\": null,\n      \"sector\": \"Technology\",\n      \"stock_loan_revenue\": 772.12,\n      \"stock_volume\": 1105460.0,\n      \"synthetic_short_cost\": 6.77,\n      \"term_spread\": -0.66,\n      \"vrp\": -3.09\n    },\n    \"earnings_dates\": [\n      \"2025-07-31\",\n      \"2025-10-30\",\n      \"...(+2 more items)\"\n    ],\n    \"next_earnings\": null,\n    \"sector_comparison\": {\n      \"sector_avg\": -0.7955,\n      \"sector_count\": 492,\n      \"sector_rank\": 195,\n      \"vs_sector_ratio\": null\n    },\n    \"spike_detected\": false,\n    \"spike_ratio\": 0.8674,\n    \"spike_severity\": \"NORMAL\",\n    \"spike_z_score\": -0.42,\n    \"squeeze_score\": 8,\n    \"ticker\": \"AAPL\",\n    \"timeseries\": [\n      {\n        \"borrow2yr\": 3.4659,\n        \"borrow30\": 3.4991,\n        \"borrow30_ma20\": null,\n        \"date\": \"2025-06-16\",\n        \"is_spike\": false,\n        \"residualRate\": null,\n        \"term_spread\": 0.0332\n      },\n      {\n        \"borrow2yr\": 3.502,\n        \"borrow30\": 3.4856,\n        \"borrow30_ma20\": null,\n        \"date\": \"2025-06-17\",\n        \"is_spike\": false,\n        \"residualRate\": null,\n        \"term_spread\": -0.0164\n      },\n      \"...(+250 more items)\"\n    ],\n    \"velocity\": {\n      \"borrow_chg_1m\": -0.49,\n      \"borrow_chg_1w\": 0.45\n    }\n  },\n  \"success\": true\n}\n```","operationId":"get_borrow_rate_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Borrow-rate time series and hard-to-borrow signal"}},"/api/mcp/data/build-strategy":{"post":{"description":"Builds a strategy from live chain data. Returns the legs (strike, premium, Greeks) plus full analysis (net premium/Greeks, max profit/loss, breakevens, POP, P&L curve).\n\n**Request body:** JSON: ticker, strategy_type (required); expiration, dte (default 30), width (default 5), target_delta (default 0.30)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"analysis\": {\n      \"breakevens\": [\n        287.65,\n        \"...(+1 more items)\"\n      ],\n      \"legs_summary\": [\n        {\n          \"action\": \"SELL\",\n          \"expiration\": \"2026-07-17\",\n          \"iv\": 0.2235,\n          \"premium\": 3.55,\n          \"quantity\": 1,\n          \"strike\": 290.0,\n          \"type\": \"PUT\"\n        },\n        \"...(+3 more items)\"\n      ],\n      \"max_loss\": -265.0000000000009,\n      \"max_profit\": 235.00000000000003,\n      \"net_delta\": -0.010599999999999998,\n      \"net_premium\": -235.00000000000003,\n      \"net_theta\": 0.0237,\n      \"net_vega\": -0.09319999999999995,\n      \"pnl_curve\": [\n        [\n          228.0,\n          \"...(+1 more items)\"\n        ],\n        \"...(+99 more items)\"\n      ],\n      \"probability_of_profit\": 41.4,\n      \"risk_reward_ratio\": 0.8867924528301857,\n      \"stock_price\": 299.27,\n      \"strategy_name\": \"Iron Condor\",\n      \"ticker\": \"AAPL\"\n    },\n    \"created_at\": \"2026-06-17T08:30:33.629914\",\n    \"legs\": [\n      {\n        \"action\": \"SELL\",\n        \"delta\": -0.2695,\n        \"expiration\": \"2026-07-17\",\n        \"iv\": 0.2235,\n        \"premium\": 3.55,\n        \"quantity\": 1,\n        \"strike\": 290.0,\n        \"theta\": -0.126,\n        \"type\": \"PUT\",\n        \"vega\": 0.2834\n      },\n      \"...(+3 more items)\"\n    ],\n    \"name\": \"Iron Condor\",\n    \"stock_price\": 299.27,\n    \"ticker\": \"AAPL\"\n  },\n  \"success\": true\n}\n```","operationId":"post_build_strategy","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Builds a strategy from live chain data"}},"/api/mcp/data/chain-at-time/{ticker}":{"get":{"description":"Historical EOD chain snapshot for a past trade date \u2014 how the chain was priced on that day.\n\n**Query parameters:** expiration (required, YYYY-MM-DD) \u00b7 trade_date (required, YYYY-MM-DD)\n\n**Response shape:**\n```json\n{ \"data\": { \"ticker\", \"trade_date\", \"expiration\", \"chain\": [\"\u2026rows\u2026\"] }, \"success\": true }\n```","operationId":"get_chain_at_time_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Historical EOD chain snapshot for a past trade date \u2014 how the chain was priced on that day"}},"/api/mcp/data/chain/{ticker}":{"get":{"description":"Formatted options chain(s). {ticker, stock_price, expirations, chains, strike_window}. Defaults to the nearest expiration and a near-the-money strike window; strike_window.truncated tells you when rows were trimmed.\n\n**Query parameters:** expiration (optional, YYYY-MM-DD; overrides num_expirations) \u00b7 num_expirations (optional, default 1, max 10) \u00b7 strikes_around (optional, default 20 strikes per side of the money; 0 = full chain)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"chains\": {\n      \"2026-06-17\": [\n        {\n          \"Call Ask\": 70.95,\n          \"Call Bid\": 67.5,\n          \"Delta Call\": 1.0,\n          \"Delta Put\": 0.0,\n          \"Epsilon Call\": -0.0082,\n          \"Epsilon Put\": -0.0082,\n          \"Extrinsic Call\": 0.0,\n          \"Extrinsic Put\": 0.32,\n          \"\u2026\": \"(+19 more keys)\"\n        },\n        \"...(+47 more items)\"\n      ],\n      \"2026-06-18\": [\n        {\n          \"Call Ask\": 295.05,\n          \"Call Bid\": 293.0,\n          \"Delta Call\": 1.0,\n          \"Delta Put\": -0.0,\n          \"Epsilon Call\": -0.0164,\n          \"Epsilon Put\": -0.0164,\n          \"Extrinsic Call\": 0.0,\n          \"Extrinsic Put\": 0.0,\n          \"\u2026\": \"(+19 more keys)\"\n        },\n        \"...(+115 more items)\"\n      ],\n      \"2026-06-22\": [\n        {\n          \"Call Ask\": 76.3,\n          \"Call Bid\": 72.5,\n          \"Delta Call\": 1.0,\n          \"Delta Put\": -0.0,\n          \"Epsilon Call\": -0.0492,\n          \"Epsilon Put\": -0.0492,\n          \"Extrinsic Call\": 0.13,\n          \"Extrinsic Put\": 0.02,\n          \"\u2026\": \"(+19 more keys)\"\n        },\n        \"...(+48 more items)\"\n      ]\n    },\n    \"data_type\": \"LIVE\",\n    \"expirations\": [\n      \"2026-06-17\",\n      \"...(+2 more items)\"\n    ],\n    \"stock_price\": 299.27,\n    \"ticker\": \"AAPL\"\n  },\n  \"success\": true\n}\n```","operationId":"get_chain_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Formatted options chain(s)"}},"/api/mcp/data/charm/{ticker}":{"get":{"description":"Charm (delta-decay) exposure.\n\n**Query parameters:** expiration (optional)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"call_charm\": -67097320.53412261,\n    \"charm_by_strike\": [\n      {\n        \"charm_exposure\": 1346804.8306834595,\n        \"oi\": 2326,\n        \"strike\": 500\n      },\n      {\n        \"charm_exposure\": 1344449.6930396506,\n        \"oi\": 2298,\n        \"strike\": 505\n      },\n      \"...(+189 more items)\"\n    ],\n    \"data_status\": \"LIVE\",\n    \"detailed\": [\n      {\n        \"charm\": 0.0,\n        \"charm_exposure\": 0.0,\n        \"iv\": 0.010075718364580544,\n        \"oi\": 48,\n        \"strike\": 712,\n        \"type\": \"C\"\n      },\n      {\n        \"charm\": -2.1545520734642936,\n        \"charm_exposure\": -11634.581196707186,\n        \"iv\": 4.6672102926083,\n        \"oi\": 54,\n        \"strike\": 715,\n        \"type\": \"C\"\n      },\n      \"...(+305 more items)\"\n    ],\n    \"dte\": 0,\n    \"expiration\": \"2026-06-17\",\n    \"put_charm\": 106661859.57215637,\n    \"stock_price\": 750.19,\n    \"ticker\": \"SPY\",\n    \"total_charm\": 39564539.03803376\n  },\n  \"success\": true\n}\n```","operationId":"get_charm_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Charm (delta-decay) exposure"}},"/api/mcp/data/cores/{ticker}":{"get":{"description":"Raw our institutional data feed cores analytics \u2014 340+ pre-computed fields per ticker (IV summary metrics, IV/HV stats, slope/contango, earnings-move components, borrow rates, betas, percentiles). Defaults to the curated ~45-field subset the platform screens on. Note: the row contains a NUMERIC field literally named \"error\" (an smooth volatility model-fit statistic) \u2014 it is not a failure signal.\n\n**Query parameters:** fields (optional: comma-separated field names, \"all\" for the entire row, empty = curated subset)\n\n**Response shape:**\n```json\n{ \"data\": { \"ticker\": \"AAPL\", \"iv30d\": 29.15, \"ivPctile1y\": 62.0, \"contango\": 0.021, \"\u2026\": \"(selected fields)\", \"available_field_count\": 347 }, \"success\": true }\n```","operationId":"get_cores_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Raw our institutional data feed cores analytics \u2014 340+ pre-computed fields per ticker (IV summary metrics, IV/HV stat\u2026"}},"/api/mcp/data/correlation/{ticker}":{"get":{"description":"Rolling correlation and beta vs SPY and the sector ETF.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"best_etf\": \"XLK\",\n    \"beta\": {\n      \"beta_1m\": 0.5,\n      \"beta_1y\": 0.9\n    },\n    \"correlations\": {\n      \"etf_1m\": 0.61,\n      \"etf_1y\": 0.44,\n      \"spy_1m\": 0.7,\n      \"spy_1y\": 0.73\n    },\n    \"iv_spy_ratio\": 1.5936,\n    \"price\": 299.27,\n    \"sector\": \"Technology\",\n    \"ticker\": \"AAPL\"\n  },\n  \"success\": true\n}\n```","operationId":"get_correlation_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Rolling correlation and beta vs SPY and the sector ETF"}},"/api/mcp/data/correlation/{ticker}/compare/<ticker2>":{"get":{"description":"Pairwise correlation/beta between two tickers.\n\n**Query parameters:** days (optional, default 400)\n\n**Response shape:**\n```json\n{ \"data\": { \"correlation\", \"beta\", \"series\": [\"\u2026\"] }, \"success\": true }\n```","operationId":"get_correlation_by_ticker_compare_ticker2","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Pairwise correlation/beta between two tickers"}},"/api/mcp/data/cross-index-gex":{"get":{"description":"GEX comparison across indices.\n\n**Query parameters:** tickers (CSV, default SPY,QQQ,IWM,DIA)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"comparison\": {\n      \"DIA\": {\n        \"flip_level\": 215.9191176470588,\n        \"normalized_gex\": 777086.0513299183,\n        \"stock_price\": 521.19,\n        \"total_gex\": 405009479.09264016\n      },\n      \"IWM\": {\n        \"flip_level\": 107.10067864286938,\n        \"normalized_gex\": -860993.0536491616,\n        \"stock_price\": 291.67,\n        \"total_gex\": -251125843.95785096\n      },\n      \"QQQ\": {\n        \"flip_level\": 519.7800028751548,\n        \"normalized_gex\": 1049086.1086381897,\n        \"stock_price\": 730.04,\n        \"total_gex\": 765874822.750224\n      },\n      \"SPY\": {\n        \"flip_level\": 679.537001468298,\n        \"normalized_gex\": 2450474.62078782,\n        \"stock_price\": 750.19,\n        \"total_gex\": 1838321555.7688148\n      }\n    },\n    \"indices\": {\n      \"DIA\": {\n        \"by_expiration\": [\n          {\n            \"call_gex\": 349046879.37617135,\n            \"detailed\": [\n              {\n                \"gamma\": 6.262454627288816e-14,\n                \"gex\": 2.381577818658677e-07,\n                \"oi\": 14,\n                \"strike\": 210,\n                \"type\": \"C\"\n              },\n              \"...(+274 more items)\"\n            ],\n            \"expiration\": \"2026-06-18\",\n            \"flip_level\": 215.9191176470588,\n            \"gex_by_strike\": [\n              {\n                \"cumulative_gex\": -1.3098678002622726e-06,\n                \"gex\": -1.3098678002622726e-06,\n                \"oi\": 105,\n                \"strike\": 210\n              },\n              \"...(+140 more items)\"\n            ],\n            \"max_gamma_strike\": 518,\n            \"min_gamma_strike\": 517,\n            \"put_gex\": -70305167.1853804,\n            \"\u2026\": \"(+2 more keys)\"\n          },\n          \"...(+7 more items)\"\n        ],\n        \"call_gex\": 563913332.6133265,\n        \"expirations_included\": 8,\n        \"flip_level\": 215.9191176470588,\n        \"gamma_flip\": 215.9191176470588,\n        \"gex_by_strike\": [\n          {\n            \"gex\": -1.3098678002622726e-06,\n            \"oi\": 105,\n            \"strike\": 210\n          },\n          \"...(+205 more items)\"\n        ],\n        \"gex_profile\": [\n          {\n            \"call_gex\": 2.381577818658677e-07,\n            \"net_gex\": -1.3098678002622726e-06,\n            \"put_gex\": -1.5480255821281403e-06,\n            \"strike\": 210\n          },\n          \"...(+205 more items)\"\n        ],\n        \"gex_ratio\": 3.5487706567161093,\n        \"\u2026\": \"(+8 more keys)\"\n      },\n      \"IWM\": {\n        \"by_expiration\": [\n          {\n            \"call_gex\": 52533674.45304053,\n            \"detailed\": [\n              {\n                \"gamma\": 3.909077800142768e-08,\n                \"gex\": 0.0033255067777630187,\n                \"oi\": 1,\n                \"strike\": 265.0,\n                \"type\": \"C\"\n              },\n              \"...(+101 more items)\"\n            ],\n            \"expiration\": \"2026-06-17\",\n            \"flip_level\": 255.21763851045324,\n            \"gex_by_strike\": [\n              {\n                \"cumulative_gex\": 4.426653800867632e-09,\n                \"gex\": 4.426653800867632e-09,\n                \"oi\": 1,\n                \"strike\": 210.0\n              },\n              \"...(+68 more items)\"\n            ],\n            \"max_gamma_strike\": 298.0,\n            \"min_gamma_strike\": 290.0,\n            \"put_gex\": -86022425.13799104,\n            \"\u2026\": \"(+2 more keys)\"\n          },\n          \"...(+7 more items)\"\n        ],\n        \"call_gex\": 1325663389.405563,\n        \"expirations_included\": 8,\n        \"flip_level\": 107.10067864286938,\n        \"gamma_flip\": 107.10067864286938,\n        \"gex_by_strike\": [\n          {\n            \"gex\": -2.9116451818985356e-06,\n            \"oi\": 9742,\n            \"strike\": 85\n          },\n          \"...(+168 more items)\"\n        ],\n        \"gex_profile\": [\n          {\n            \"call_gex\": 2.989368769916361e-10,\n            \"net_gex\": -2.9116451818985356e-06,\n            \"put_gex\": -2.9119441187755275e-06,\n            \"strike\": 85\n          },\n          \"...(+168 more items)\"\n        ],\n        \"gex_ratio\": 0.8407359470471649,\n        \"\u2026\": \"(+8 more keys)\"\n      },\n      \"QQQ\": {\n        \"by_expiration\": [\n          {\n            \"call_gex\": 806504130.4537767,\n            \"detailed\": [\n              {\n                \"gamma\": -1.7871047850310777e-15,\n                \"gex\": -1.9049050194437495e-09,\n                \"oi\": 2,\n                \"strike\": 495,\n                \"type\": \"C\"\n              },\n              \"...(+313 more items)\"\n            ],\n            \"expiration\": \"2026-06-17\",\n            \"flip_level\": 593.4242787537302,\n            \"gex_by_strike\": [\n              {\n                \"cumulative_gex\": 4.783216503823255e-06,\n                \"gex\": 4.783216503823255e-06,\n                \"oi\": 5026,\n                \"strike\": 495\n              },\n              \"...(+193 more items)\"\n            ],\n            \"max_gamma_strike\": 740,\n            \"min_gamma_strike\": 730,\n            \"put_gex\": -460628580.55855554,\n            \"\u2026\": \"(+2 more keys)\"\n          },\n          \"...(+7 more items)\"\n        ],\n        \"call_gex\": 5187580892.767035,\n        \"expirations_included\": 8,\n        \"flip_level\": 519.7800028751548,\n        \"gamma_flip\": 519.7800028751548,\n        \"gex_by_strike\": [\n          {\n            \"gex\": 1.366446429310151e-05,\n            \"oi\": 7885,\n            \"strike\": 174.78\n          },\n          \"...(+337 more items)\"\n        ],\n        \"gex_profile\": [\n          {\n            \"call_gex\": -2.403883701293951e-07,\n            \"net_gex\": 1.366446429310151e-05,\n            \"put_gex\": 1.3904852663230906e-05,\n            \"strike\": 174.78\n          },\n          \"...(+337 more items)\"\n        ],\n        \"gex_ratio\": 1.1732079904504624,\n        \"\u2026\": \"(+8 more keys)\"\n      },\n      \"SPY\": {\n        \"by_expiration\": [\n          {\n            \"call_gex\": 1758865492.2032595,\n            \"detailed\": [\n              {\n                \"gamma\": 9.975277302903177e-15,\n                \"gex\": 5.613936797021876e-09,\n                \"oi\": 1,\n                \"strike\": 500,\n                \"type\": \"C\"\n              },\n              \"...(+272 more items)\"\n            ],\n            \"expiration\": \"2026-06-17\",\n            \"flip_level\": 748.015500928944,\n            \"gex_by_strike\": [\n              {\n                \"cumulative_gex\": -1.3052403053075857e-05,\n                \"gex\": -1.3052403053075857e-05,\n                \"oi\": 2327,\n                \"strike\": 500\n              },\n              \"...(+174 more items)\"\n            ],\n            \"max_gamma_strike\": 751,\n            \"min_gamma_strike\": 735,\n            \"put_gex\": -1055547460.7845404,\n            \"\u2026\": \"(+2 more keys)\"\n          },\n          \"...(+7 more items)\"\n        ],\n        \"call_gex\": 9323718396.61381,\n        \"expirations_included\": 8,\n        \"flip_level\": 679.537001468298,\n        \"gamma_flip\": 679.537001468298,\n        \"gex_by_strike\": [\n          {\n            \"gex\": 0.0002993528742302929,\n            \"oi\": 42814,\n            \"strike\": 245\n          },\n          \"...(+263 more items)\"\n        ],\n        \"gex_profile\": [\n          {\n            \"call_gex\": -1.820114758427486e-07,\n            \"net_gex\": 0.0002993528742302929,\n            \"put_gex\": 0.0002995348857061356,\n            \"strike\": 245\n          },\n          \"...(+263 more items)\"\n        ],\n        \"gex_ratio\": 1.2455877216472726,\n        \"\u2026\": \"(+8 more keys)\"\n      }\n    }\n  },\n  \"success\": true\n}\n```","operationId":"get_cross_index_gex","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"GEX comparison across indices"}},"/api/mcp/data/dividend/{ticker}":{"get":{"description":"Dividend history, implied vs actual, and ex-date behavior.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"cagr\": null,\n    \"current\": {\n      \"annual_actual\": 1.08,\n      \"annual_implied\": -0.9268,\n      \"div_amount\": 0.27,\n      \"div_freq\": \"Quarterly\",\n      \"div_growth\": 0.0,\n      \"div_yield\": 0.4,\n      \"implied_vs_actual\": -2.0068,\n      \"next_div_date\": \"2026-08-11\",\n      \"next_div_implied\": 0,\n      \"price\": 299.27\n    },\n    \"history\": [],\n    \"pays_dividends\": true,\n    \"sector\": \"Technology\",\n    \"ticker\": \"AAPL\"\n  },\n  \"success\": true\n}\n```","operationId":"get_dividend_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Dividend history, implied vs actual, and ex-date behavior"}},"/api/mcp/data/earnings-calendar":{"get":{"description":"Upcoming earnings announcements, each annotated with the implied earnings move vs the average absolute move over the last 12 earnings (implied_move, hist_avg_move, move_ratio).\n\n**Query parameters:** days_ahead (default 7)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"calendar\": [\n      {\n        \"amc\": [],\n        \"bmo\": [\n          {\n            \"company_name\": \"CarMax Inc.\",\n            \"date\": \"2026-06-17\",\n            \"datetime\": \"Wed, 17 Jun 2026 00:00:00 GMT\",\n            \"days_until\": 0,\n            \"eps_actual\": null,\n            \"eps_estimate\": 0.94,\n            \"fiscal_quarter\": null,\n            \"revenue_actual\": null,\n            \"\u2026\": \"(+5 more keys)\"\n          }\n        ],\n        \"date\": \"2026-06-17\",\n        \"day_num\": 17,\n        \"month_short\": \"Jun\",\n        \"tbd\": [\n          {\n            \"company_name\": \"\",\n            \"date\": \"2026-06-17\",\n            \"datetime\": \"Wed, 17 Jun 2026 00:00:00 GMT\",\n            \"days_until\": 0,\n            \"eps_actual\": null,\n            \"eps_estimate\": 3.12,\n            \"fiscal_quarter\": null,\n            \"revenue_actual\": null,\n            \"\u2026\": \"(+5 more keys)\"\n          }\n        ],\n        \"weekday\": 2,\n        \"weekday_name\": \"Wednesday\"\n      },\n      \"...(+3 more items)\"\n    ],\n    \"earnings\": [\n      {\n        \"company_name\": \"Kroger Co.\",\n        \"date\": \"2026-06-18\",\n        \"datetime\": \"Thu, 18 Jun 2026 00:00:00 GMT\",\n        \"days_until\": 1,\n        \"eps_actual\": null,\n        \"eps_estimate\": 1.59,\n        \"fiscal_quarter\": null,\n        \"revenue_actual\": null,\n        \"\u2026\": \"(+5 more keys)\"\n      },\n      \"...(+12 more items)\"\n    ],\n    \"from_date\": \"2026-06-17\",\n    \"success\": true,\n    \"timestamp\": \"2026-06-17T08:30:37.026392\",\n    \"to_date\": \"2026-06-24\",\n    \"total_count\": 13,\n    \"week_grid\": [\n      [\n        {\n          \"amc\": [],\n          \"bmo\": [],\n          \"date\": \"2026-06-15\",\n          \"day_num\": 15,\n          \"empty\": true,\n          \"month_short\": \"Jun\",\n          \"tbd\": [],\n          \"weekday\": 0,\n          \"\u2026\": \"(+1 more keys)\"\n        },\n        \"...(+4 more items)\"\n      ],\n      \"...(+1 more items)\"\n    ]\n  },\n  \"success\": true\n}\n```","operationId":"get_earnings_calendar","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Upcoming earnings announcements, each annotated with the implied earnings move vs the average absolute move over the \u2026"}},"/api/mcp/data/earnings-history/{ticker}":{"get":{"description":"Historical earnings move analysis.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"earnings_moves\": [\n      {\n        \"direction\": \"up\",\n        \"earnings_date\": \"2026-04-30\",\n        \"eps_actual\": 2.01,\n        \"eps_estimate\": 1.95,\n        \"gap_move_dollar\": 7.5,\n        \"gap_move_pct\": 2.7665068240501656,\n        \"iv_after\": null,\n        \"iv_before\": null,\n        \"iv_crush\": null,\n        \"iv_crush_pct\": null,\n        \"next_open\": 278.6,\n        \"prev_close\": 271.1,\n        \"surprise_direction\": \"beat\",\n        \"surprise_pct\": 3.076923076923068,\n        \"timing\": \"AMC\"\n      },\n      {\n        \"direction\": \"down\",\n        \"earnings_date\": \"2026-01-29\",\n        \"eps_actual\": 2.85,\n        \"eps_estimate\": 2.67,\n        \"gap_move_dollar\": -3.1100000000000136,\n        \"gap_move_pct\": -1.2063615205585778,\n        \"iv_after\": null,\n        \"iv_before\": null,\n        \"iv_crush\": null,\n        \"iv_crush_pct\": null,\n        \"next_open\": 254.69,\n        \"prev_close\": 257.8,\n        \"surprise_direction\": \"beat\",\n        \"surprise_pct\": 6.741573033707872,\n        \"timing\": \"AMC\"\n      },\n      \"...(+6 more items)\"\n    ],\n    \"statistics\": {\n      \"avg_abs_move_pct\": 2.201247439044784,\n      \"avg_beat_move_pct\": 0.505149851645259,\n      \"avg_down_move_pct\": -2.2614634498660333,\n      \"avg_iv_crush_pct\": null,\n      \"avg_miss_move_pct\": null,\n      \"avg_move_pct\": 0.505149851645259,\n      \"avg_up_move_pct\": 2.165117832552034,\n      \"beat_count\": 8,\n      \"down_count\": 3,\n      \"max_down_pct\": -3.3883129123468416,\n      \"max_up_pct\": 4.041003049813619,\n      \"median_iv_crush_pct\": null,\n      \"miss_count\": 0,\n      \"total_earnings\": 8,\n      \"up_count\": 5\n    },\n    \"success\": true,\n    \"ticker\": \"AAPL\",\n    \"timestamp\": \"2026-06-17T08:30:38.581795\"\n  },\n  \"success\": true\n}\n```","operationId":"get_earnings_history_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Historical earnings move analysis"}},"/api/mcp/data/earnings-verdict/{ticker}":{"get":{"description":"Combined buy/sell-the-straddle verdict for the next earnings: expected-move pricing vs realized history, IV crush, and drift rolled into one call.\n\n**Response shape:**\n```json\n{ \"data\": { \"verdict\", \"confidence\", \"reasons\": [\"\u2026\"], \"\u2026\": \"components\" }, \"success\": true }\n```","operationId":"get_earnings_verdict_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Combined buy/sell-the-straddle verdict for the next earnings: expected-move pricing vs realized history, IV crush, an\u2026"}},"/api/mcp/data/economic-calendar":{"get":{"description":"Macro economic-event calendar (CPI, FOMC, jobs reports...).\n\n**Query parameters:** from_date (optional, YYYY-MM-DD) \u00b7 to_date (optional) \u00b7 country (default US)\n\n**Response shape:**\n```json\n{ \"data\": { \"events\": [ {\"date\", \"event\", \"importance\"}, \"\u2026\" ] }, \"success\": true }\n```","operationId":"get_economic_calendar","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Macro economic-event calendar (CPI, FOMC, jobs reports...)"}},"/api/mcp/data/expected-move/{ticker}":{"get":{"description":"Expected move from straddle pricing: $ and %, upper/lower bounds, DTE.\n\n**Query parameters:** expiration (optional; skips same-day expiry)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"dte\": 1,\n    \"expected_move_dollars\": 4.46,\n    \"expected_move_percent\": 0.0149,\n    \"expiration\": \"2026-06-18\",\n    \"lower_bound\": 294.81,\n    \"stock_price\": 299.27,\n    \"ticker\": \"AAPL\",\n    \"upper_bound\": 303.73\n  },\n  \"success\": true\n}\n```","operationId":"get_expected_move_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Expected move from straddle pricing: $ and %, upper/lower bounds, DTE"}},"/api/mcp/data/expected-vs-actual/{ticker}":{"get":{"description":"Options-implied expected move vs historical actual moves.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"error\": \"Could not retrieve historical data\"\n  },\n  \"success\": true\n}\n```","operationId":"get_expected_vs_actual_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Options-implied expected move vs historical actual moves"}},"/api/mcp/data/expirations/{ticker}":{"get":{"description":"Available expiration dates.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"expirations\": [\n      \"2026-06-17\",\n      \"2026-06-18\",\n      \"...(+23 more items)\"\n    ]\n  },\n  \"success\": true\n}\n```","operationId":"get_expirations_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Available expiration dates"}},"/api/mcp/data/flow/{ticker}":{"get":{"description":"Options flow and unusual activity.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"all_flow\": [\n      {\n        \"ask\": 9.8,\n        \"bid\": 9.35,\n        \"delta\": 0.9423,\n        \"dte\": 1,\n        \"expiration\": \"2026-06-18\",\n        \"is_unusual\": false,\n        \"mid\": 9.575,\n        \"moneyness\": \"ITM\",\n        \"\u2026\": \"(+8 more keys)\"\n      },\n      \"...(+99 more items)\"\n    ],\n    \"data_freshness\": \"EOD\",\n    \"is_market_hours\": false,\n    \"largest_flows\": [\n      {\n        \"ask\": 9.8,\n        \"bid\": 9.35,\n        \"delta\": 0.9423,\n        \"dte\": 1,\n        \"expiration\": \"2026-06-18\",\n        \"is_unusual\": false,\n        \"mid\": 9.575,\n        \"moneyness\": \"ITM\",\n        \"\u2026\": \"(+8 more keys)\"\n      },\n      \"...(+19 more items)\"\n    ],\n    \"message\": \"Market is closed. Showing end-of-day data from the most recent trading session.\",\n    \"stock_price\": 299.27,\n    \"success\": true,\n    \"summary\": {\n      \"call_put_ratio\": 2.023598308293142,\n      \"net_premium\": 93850447.0,\n      \"put_call_ratio\": 0.49416922118475026,\n      \"sentiment\": \"BULLISH\",\n      \"total_call_premium\": 133798605.0,\n      \"total_call_volume\": 524887.0,\n      \"total_flow_count\": 191,\n      \"total_put_premium\": 39948158.0,\n      \"\u2026\": \"(+1 more keys)\"\n    },\n    \"\u2026\": \"(+5 more keys)\"\n  },\n  \"success\": true\n}\n```","operationId":"get_flow_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Options flow and unusual activity"}},"/api/mcp/data/gex/{ticker}":{"get":{"description":"Gamma exposure data.\n\n**Query parameters:** expiration (optional), aggregate (default true)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"by_expiration\": [\n      {\n        \"call_gex\": 1758866770.3745956,\n        \"detailed\": [\n          {\n            \"gamma\": 9.975277302903177e-15,\n            \"gex\": 5.613936797021876e-09,\n            \"oi\": 1,\n            \"strike\": 500,\n            \"type\": \"C\"\n          },\n          \"...(+272 more items)\"\n        ],\n        \"expiration\": \"2026-06-17\",\n        \"flip_level\": 748.015500928944,\n        \"gex_by_strike\": [\n          {\n            \"cumulative_gex\": -1.3052403053075857e-05,\n            \"gex\": -1.3052403053075857e-05,\n            \"oi\": 2327,\n            \"strike\": 500\n          },\n          \"...(+174 more items)\"\n        ],\n        \"max_gamma_strike\": 751,\n        \"min_gamma_strike\": 735,\n        \"put_gex\": -1055547460.7845404,\n        \"\u2026\": \"(+2 more keys)\"\n      },\n      \"...(+7 more items)\"\n    ],\n    \"call_gex\": 9323719674.785145,\n    \"expirations_included\": 8,\n    \"flip_level\": 679.537001468298,\n    \"gamma_flip\": 679.537001468298,\n    \"gex_by_strike\": [\n      {\n        \"gex\": 0.0002993528742302929,\n        \"oi\": 42814,\n        \"strike\": 245\n      },\n      \"...(+263 more items)\"\n    ],\n    \"gex_profile\": [\n      {\n        \"call_gex\": -1.820114758427486e-07,\n        \"net_gex\": 0.0002993528742302929,\n        \"put_gex\": 0.0002995348857061356,\n        \"strike\": 245\n      },\n      \"...(+263 more items)\"\n    ],\n    \"gex_ratio\": 1.245587892402593,\n    \"\u2026\": \"(+7 more keys)\"\n  },\n  \"success\": true\n}\n```","operationId":"get_gex_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Gamma exposure data"}},"/api/mcp/data/greeks-exposure/{ticker}":{"get":{"description":"Unified dealer Greek exposure \u2014 DEX, gamma, vega, theta, vanna, charm \u2014 by strike or aggregated.\n\n**Query parameters:** expiration (optional), aggregate (default true)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"expirations\": [\n      \"2026-06-17\",\n      \"...(+7 more items)\"\n    ],\n    \"expirations_included\": 8,\n    \"exposures\": {\n      \"charm\": {\n        \"call_total\": 39115642.69470947,\n        \"profile\": [\n          {\n            \"call\": 0.0,\n            \"net\": 0.0,\n            \"put\": 0.0,\n            \"strike\": 245.0\n          },\n          \"...(+263 more items)\"\n        ],\n        \"put_total\": -1065297109.269453,\n        \"total\": -1026181466.5747436\n      },\n      \"color\": {\n        \"call_total\": 9057686.022964306,\n        \"profile\": [\n          {\n            \"call\": 0.0,\n            \"net\": 0.0,\n            \"put\": 0.0,\n            \"strike\": 245.0\n          },\n          \"...(+263 more items)\"\n        ],\n        \"put_total\": -26864455.364830274,\n        \"total\": -17806769.341865968\n      },\n      \"delta\": {\n        \"call_total\": 67996821.58185212,\n        \"profile\": [\n          {\n            \"call\": 2600.0,\n            \"net\": 2600.0,\n            \"put\": 0.0,\n            \"strike\": 245.0\n          },\n          \"...(+263 more items)\"\n        ],\n        \"put_total\": 14782928.195324313,\n        \"total\": 82779749.77717644\n      },\n      \"gamma\": {\n        \"call_total\": 9311467271.250305,\n        \"delta_adj_call_total\": 4011780284.162427,\n        \"delta_adj_flip_level\": 684.0710981925972,\n        \"delta_adj_profile\": [\n          {\n            \"call\": -1.820114758427486e-07,\n            \"net\": -1.820114758427486e-07,\n            \"put\": 0.0,\n            \"strike\": 245.0\n          },\n          \"...(+263 more items)\"\n        ],\n        \"delta_adj_put_total\": -2688470129.459985,\n        \"delta_adj_total\": 1323310154.7024422,\n        \"flip_level\": 679.537001468298,\n        \"gex_billions\": 1.826074386421358,\n        \"\u2026\": \"(+6 more keys)\"\n      },\n      \"speed\": {\n        \"call_total\": 43026.30677453732,\n        \"profile\": [\n          {\n            \"call\": 0.0,\n            \"net\": 0.0,\n            \"put\": 0.0,\n            \"strike\": 245.0\n          },\n          \"...(+263 more items)\"\n        ],\n        \"put_total\": 68867.37933926749,\n        \"total\": 111893.68611380481\n      },\n      \"theta\": {\n        \"call_total\": -23740137.392367635,\n        \"profile\": [\n          {\n            \"call\": 0.0,\n            \"net\": 0.0,\n            \"put\": 0.0,\n            \"strike\": 245.0\n          },\n          \"...(+263 more items)\"\n        ],\n        \"put_total\": 18644069.59992911,\n        \"total\": -5096067.792438526\n      },\n      \"ultima\": {\n        \"call_total\": -153156716.04614145,\n        \"profile\": [\n          {\n            \"call\": 0.0,\n            \"net\": 0.0,\n            \"put\": 0.0,\n            \"strike\": 245.0\n          },\n          \"...(+263 more items)\"\n        ],\n        \"put_total\": 180816806.91597304,\n        \"total\": 27660090.86983159\n      },\n      \"vanna\": {\n        \"call_total\": 19679208.245740566,\n        \"profile\": [\n          {\n            \"call\": 0.0,\n            \"net\": 0.0,\n            \"put\": 0.0,\n            \"strike\": 245.0\n          },\n          \"...(+263 more items)\"\n        ],\n        \"put_total\": 45252164.47388406,\n        \"total\": 64931372.71962462\n      },\n      \"\u2026\": \"(+3 more keys)\"\n    },\n    \"greek_levels\": {\n      \"charm\": {\n        \"key_strike\": {\n          \"distance_pct\": -2.691318199389495,\n          \"exposure\": 96149775.46226907,\n          \"strike\": 730.0\n        },\n        \"max_call\": {\n          \"distance_pct\": 0.6411709033711387,\n          \"exposure\": 119048981.61268967,\n          \"strike\": 755.0\n        },\n        \"max_put\": {\n          \"distance_pct\": -2.691318199389495,\n          \"exposure\": 175066549.35435,\n          \"strike\": 730.0\n        },\n        \"ratio\": 0.036718059548226635\n      },\n      \"color\": {\n        \"key_strike\": {\n          \"distance_pct\": -2.691318199389495,\n          \"exposure\": 21909177.698069394,\n          \"strike\": 730.0\n        },\n        \"max_call\": {\n          \"distance_pct\": 1.7075674162545413,\n          \"exposure\": 14282354.644565877,\n          \"strike\": 763.0\n        },\n        \"max_put\": {\n          \"distance_pct\": -2.691318199389495,\n          \"exposure\": 26967763.47783144,\n          \"strike\": 730.0\n        },\n        \"ratio\": 0.33716246616420215\n      },\n      \"delta\": {\n        \"key_strike\": {\n          \"distance_pct\": -0.6918247377331149,\n          \"exposure\": 3935492.645779802,\n          \"strike\": 745.0\n        },\n        \"max_call\": {\n          \"distance_pct\": 0.6411709033711387,\n          \"exposure\": 1108914.8917098197,\n          \"strike\": 755.0\n        },\n        \"max_put\": {\n          \"distance_pct\": -0.6918247377331149,\n          \"exposure\": 1726495.1880129338,\n          \"strike\": 745.0\n        },\n        \"ratio\": 4.599685575375981\n      },\n      \"speed\": {\n        \"key_strike\": {\n          \"distance_pct\": 1.3076687239232654,\n          \"exposure\": 13808.87824061112,\n          \"strike\": 760.0\n        },\n        \"max_call\": {\n          \"distance_pct\": 0.6411709033711387,\n          \"exposure\": 16154.182606759678,\n          \"strike\": 755.0\n        },\n        \"max_put\": {\n          \"distance_pct\": -0.6918247377331149,\n          \"exposure\": 18366.89920665287,\n          \"strike\": 745.0\n        },\n        \"ratio\": 0.6247704963851318\n      },\n      \"theta\": {\n        \"flip_level\": {\n          \"distance_pct\": -19.91160586386116,\n          \"strike\": 600.8151239699\n        },\n        \"key_strike\": {\n          \"distance_pct\": 0.6411709033711387,\n          \"exposure\": 1323456.8577001996,\n          \"strike\": 755.0\n        },\n        \"max_call\": {\n          \"distance_pct\": 0.6411709033711387,\n          \"exposure\": 2443563.2836108427,\n          \"strike\": 755.0\n        },\n        \"max_put\": {\n          \"distance_pct\": -0.6918247377331149,\n          \"exposure\": 3165740.62698207,\n          \"strike\": 745.0\n        },\n        \"ratio\": 1.2733345187929304\n      },\n      \"ultima\": {\n        \"flip_level\": {\n          \"distance_pct\": -2.053778110177294,\n          \"strike\": 734.782761995261\n        },\n        \"key_strike\": {\n          \"distance_pct\": 1.3076687239232654,\n          \"exposure\": 45963249.761216864,\n          \"strike\": 760.0\n        },\n        \"max_call\": {\n          \"distance_pct\": 1.3076687239232654,\n          \"exposure\": 51252381.94960803,\n          \"strike\": 760.0\n        },\n        \"max_put\": {\n          \"distance_pct\": -2.2914195070582193,\n          \"exposure\": 35146068.42045294,\n          \"strike\": 733.0\n        },\n        \"ratio\": 0.8470269918952531\n      },\n      \"vanna\": {\n        \"key_strike\": {\n          \"distance_pct\": 1.3076687239232654,\n          \"exposure\": 5455935.242080478,\n          \"strike\": 760.0\n        },\n        \"max_call\": {\n          \"distance_pct\": 1.3076687239232654,\n          \"exposure\": 6102422.442606365,\n          \"strike\": 760.0\n        },\n        \"max_put\": {\n          \"distance_pct\": -0.6918247377331149,\n          \"exposure\": 5920936.839590971,\n          \"strike\": 745.0\n        },\n        \"ratio\": 0.43487882788673754\n      },\n      \"vega\": {\n        \"flip_level\": {\n          \"distance_pct\": 1.5933811827951703,\n          \"strike\": 762.1433862952111\n        },\n        \"key_strike\": {\n          \"distance_pct\": 1.3076687239232654,\n          \"exposure\": 684973.732406838,\n          \"strike\": 760.0\n        },\n        \"max_call\": {\n          \"distance_pct\": 0.6411709033711387,\n          \"exposure\": 970808.3530005451,\n          \"strike\": 755.0\n        },\n        \"max_put\": {\n          \"distance_pct\": -0.6918247377331149,\n          \"exposure\": 1151466.4979329612,\n          \"strike\": 745.0\n        },\n        \"ratio\": 1.136830755281228\n      },\n      \"\u2026\": \"(+2 more keys)\"\n    },\n    \"key_levels\": {\n      \"call_wall\": {\n        \"distance_pct\": 0.6411709033711387,\n        \"gex\": 926673057.5448072,\n        \"strike\": 755.0\n      },\n      \"charm_pressure\": {\n        \"exposure\": 96149775.46226907,\n        \"strike\": 730.0\n      },\n      \"key_gamma_strike\": {\n        \"gex\": 503497934.8444122,\n        \"strike\": 760.0\n      },\n      \"put_wall\": {\n        \"distance_pct\": -0.6918247377331149,\n        \"gex\": 1051823713.2986056,\n        \"strike\": 745.0\n      },\n      \"vanna_resistance\": {\n        \"exposure\": -119805.84297888738,\n        \"strike\": 734.0\n      },\n      \"vanna_support\": {\n        \"exposure\": 5455935.242080478,\n        \"strike\": 760.0\n      },\n      \"vol_trigger\": {\n        \"distance_pct\": -9.418013907370414,\n        \"strike\": 679.537001468298\n      }\n    },\n    \"stock_price\": 750.19,\n    \"strikes\": [\n      245.0,\n      \"...(+263 more items)\"\n    ],\n    \"ticker\": \"SPY\"\n  },\n  \"success\": true\n}\n```","operationId":"get_greeks_exposure_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Unified dealer Greek exposure \u2014 DEX, gamma, vega, theta, vanna, charm \u2014 by strike or aggregated"}},"/api/mcp/data/greeks-heatmap/{ticker}":{"get":{"description":"Greeks heatmap across strikes and expirations (all Greeks; pick the one you need from the result).\n\n**Query parameters:** option_type (default calls)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"aggregates\": {\n      \"charm\": {\n        \"by_expiration\": [\n          508623.9265549422,\n          \"...(+7 more items)\"\n        ],\n        \"by_strike\": [\n          15487.623701106455,\n          \"...(+41 more items)\"\n        ]\n      },\n      \"delta\": {\n        \"by_expiration\": [\n          21006637.68,\n          \"...(+7 more items)\"\n        ],\n        \"by_strike\": [\n          716139.99,\n          \"...(+41 more items)\"\n        ]\n      },\n      \"gamma\": {\n        \"by_expiration\": [\n          675604.4700000001,\n          \"...(+7 more items)\"\n        ],\n        \"by_strike\": [\n          160.94,\n          \"...(+41 more items)\"\n        ]\n      },\n      \"rho\": {\n        \"by_expiration\": [\n          318004.2699999999,\n          \"...(+7 more items)\"\n        ],\n        \"by_strike\": [\n          36500.21,\n          \"...(+41 more items)\"\n        ]\n      },\n      \"theta\": {\n        \"by_expiration\": [\n          -5542234.55,\n          \"...(+7 more items)\"\n        ],\n        \"by_strike\": [\n          -6880.089999999999,\n          \"...(+41 more items)\"\n        ]\n      },\n      \"vanna\": {\n        \"by_expiration\": [\n          -651355.857069288,\n          \"...(+7 more items)\"\n        ],\n        \"by_strike\": [\n          -63692.15232212721,\n          \"...(+41 more items)\"\n        ]\n      },\n      \"vega\": {\n        \"by_expiration\": [\n          840313.4799999999,\n          \"...(+7 more items)\"\n        ],\n        \"by_strike\": [\n          4667.72,\n          \"...(+41 more items)\"\n        ]\n      }\n    },\n    \"as_of\": \"2026-06-17T07:30:22.510485+00:00\",\n    \"data_points\": 281,\n    \"earnings_date\": null,\n    \"expirations\": [\n      \"Jun 18 (1 DTE)\",\n      \"...(+7 more items)\"\n    ],\n    \"expirations_raw\": [\n      \"2026-06-18\",\n      \"...(+7 more items)\"\n    ],\n    \"greek_matrices\": {\n      \"charm\": [\n        [\n          0.02699154270813025,\n          \"...(+41 more items)\"\n        ],\n        \"...(+7 more items)\"\n      ],\n      \"delta\": [\n        [\n          1.0,\n          \"...(+41 more items)\"\n        ],\n        \"...(+7 more items)\"\n      ],\n      \"gamma\": [\n        [\n          -0.0,\n          \"...(+41 more items)\"\n        ],\n        \"...(+7 more items)\"\n      ],\n      \"iv\": [\n        [\n          1.8114,\n          \"...(+41 more items)\"\n        ],\n        \"...(+7 more items)\"\n      ],\n      \"rho\": [\n        [\n          0.0131,\n          \"...(+41 more items)\"\n        ],\n        \"...(+7 more items)\"\n      ],\n      \"theta\": [\n        [\n          0.0,\n          \"...(+41 more items)\"\n        ],\n        \"...(+7 more items)\"\n      ],\n      \"vanna\": [\n        [\n          -0.029835864249503297,\n          \"...(+41 more items)\"\n        ],\n        \"...(+7 more items)\"\n      ],\n      \"vega\": [\n        [\n          0.0,\n          \"...(+41 more items)\"\n        ],\n        \"...(+7 more items)\"\n      ]\n    },\n    \"greek_matrix\": [\n      [\n        1.0,\n        \"...(+41 more items)\"\n      ],\n      \"...(+7 more items)\"\n    ],\n    \"\u2026\": \"(+6 more keys)\"\n  },\n  \"success\": true\n}\n```","operationId":"get_greeks_heatmap_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Greeks heatmap across strikes and expirations (all Greeks; pick the one you need from the result)"}},"/api/mcp/data/hedge-recommendations":{"post":{"description":"Delta-hedge recommendations. Computes net portfolio delta and returns a stock hedge plus an option-based alternative on the hedge ticker to reach the target delta. Share-equivalent (not beta-weighted).\n\n**Request body:** JSON body: positions (required, same schema as /portfolio-greeks), hedge_ticker (optional, default SPY), target_delta (optional, default 0)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"current_delta\": 5000.0,\n    \"target_delta\": 0.0,\n    \"delta_gap\": -5000.0,\n    \"hedge_ticker\": \"SPY\",\n    \"note\": \"Hedges close a -5000 share-equivalent delta gap using SPY. Deltas are NOT beta-weighted: hedging single names with an index proxy needs your own beta scaling.\",\n    \"hedges\": [\n      {\n        \"type\": \"stock\",\n        \"action\": \"SELL SHORT\",\n        \"ticker\": \"SPY\",\n        \"quantity\": 5000,\n        \"description\": \"SELL SHORT 5,000 shares of SPY\",\n        \"details\": \"Adds -5,000 delta at 1 delta per share, bringing net delta to ~0.\"\n      },\n      {\n        \"type\": \"option\",\n        \"action\": \"BUY\",\n        \"ticker\": \"SPY\",\n        \"option_type\": \"put\",\n        \"strike\": 610.0,\n        \"expiration\": \"2026-08-21\",\n        \"contracts\": 100,\n        \"delta_per_contract\": -50.0,\n        \"est_cost\": 85000.0,\n        \"description\": \"BUY 100 SPY 2026-08-21 610 puts\",\n        \"details\": \"~-50 delta per contract at 8.50 mid (est. cost $85,000).\"\n      }\n    ],\n    \"portfolio_greeks\": { \"total_delta\": 5000.0, \"\u2026\": \"(portfolio summary)\" },\n    \"projected_greeks\": { \"\u2026\": \"(current vs projected comparison)\" }\n  },\n  \"success\": true\n}\n```","operationId":"post_hedge_recommendations","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Delta-hedge recommendations"}},"/api/mcp/data/historical-moves/{ticker}":{"get":{"description":"Historical price-move distribution.\n\n**Query parameters:** periods (CSV, default 7,14,21,30)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"current_price\": 299.24,\n    \"move_analysis\": {\n      \"14d\": {\n        \"avg_move_pct\": 5.460654166142421,\n        \"max_down_move_pct\": -5.706615146384165,\n        \"max_up_move_pct\": 11.738149279574095,\n        \"median_move_pct\": 6.34700353327966,\n        \"p10\": -2.746558192259416,\n        \"p25\": 4.136666987122128,\n        \"p75\": 8.462997002936723,\n        \"p90\": 9.959272583173219,\n        \"\u2026\": \"(+2 more keys)\"\n      },\n      \"21d\": {\n        \"avg_move_pct\": 8.983453570532497,\n        \"max_down_move_pct\": -2.4073167167206533,\n        \"max_up_move_pct\": 15.239542157843655,\n        \"median_move_pct\": 9.45067944285608,\n        \"p10\": -0.0954494391009697,\n        \"p25\": 7.316391478568541,\n        \"p75\": 12.389979949232178,\n        \"p90\": 13.438183431307893,\n        \"\u2026\": \"(+2 more keys)\"\n      },\n      \"30d\": {\n        \"avg_move_pct\": 13.784484713867984,\n        \"max_down_move_pct\": 6.055697641050339,\n        \"max_up_move_pct\": 18.74015402251373,\n        \"median_move_pct\": 14.615760531262456,\n        \"p10\": 8.23281228894737,\n        \"p25\": 11.872727117323267,\n        \"p75\": 16.500919729454303,\n        \"p90\": 17.435065192241144,\n        \"\u2026\": \"(+2 more keys)\"\n      },\n      \"7d\": {\n        \"avg_move_pct\": 2.171606636064761,\n        \"max_down_move_pct\": -6.976588285700114,\n        \"max_up_move_pct\": 8.34310130186261,\n        \"median_move_pct\": 2.589399640543666,\n        \"p10\": -3.1024009791845537,\n        \"p25\": 1.0989520767016592,\n        \"p75\": 4.41157793600958,\n        \"p90\": 5.611353172267599,\n        \"\u2026\": \"(+2 more keys)\"\n      }\n    },\n    \"success\": true,\n    \"ticker\": \"AAPL\",\n    \"timestamp\": \"2026-06-17T08:30:59.016317\"\n  },\n  \"success\": true\n}\n```","operationId":"get_historical_moves_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Historical price-move distribution"}},"/api/mcp/data/hv-regimes/{ticker}":{"get":{"description":"Historical-volatility windows, HV term structure, and regime crossovers.\n\n**Query parameters:** view (optional: 'dashboard' default, 'signals', 'decomposition', 'ex_earnings') \u00b7 days (default 252)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"days\": 252,\n    \"forecast\": {\n      \"orFcst20d\": null,\n      \"orFcstInf\": null\n    },\n    \"term_structure\": [\n      {\n        \"cls_hv\": 18.5,\n        \"or_hv\": 25.91,\n        \"window\": \"5d\"\n      },\n      {\n        \"cls_hv\": 26.08,\n        \"or_hv\": 33.08,\n        \"window\": \"10d\"\n      },\n      \"...(+8 more items)\"\n    ],\n    \"ticker\": \"AAPL\",\n    \"timeseries\": [\n      {\n        \"clsHv10d\": 17.91,\n        \"clsHv120d\": 41.04,\n        \"clsHv20d\": 20.94,\n        \"clsHv252d\": 32.13,\n        \"clsHv30d\": 27.41,\n        \"clsHv5d\": 18.2,\n        \"clsHv60d\": 50.93,\n        \"clsHv90d\": 44.48,\n        \"date\": \"2025-06-16\"\n      },\n      {\n        \"clsHv10d\": 18.05,\n        \"clsHv120d\": 40.98,\n        \"clsHv20d\": 21.07,\n        \"clsHv252d\": 32.16,\n        \"clsHv30d\": 26.2,\n        \"clsHv5d\": 17.64,\n        \"clsHv60d\": 50.83,\n        \"clsHv90d\": 44.53,\n        \"date\": \"2025-06-17\"\n      },\n      \"...(+250 more items)\"\n    ]\n  },\n  \"success\": true\n}\n```","operationId":"get_hv_regimes_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Historical-volatility windows, HV term structure, and regime crossovers"}},"/api/mcp/data/iv-crush/{ticker}":{"get":{"description":"IV build-up into earnings and crush after, averaged over past events. Values in percentage points.\n\n**Query parameters:** days_before (optional, default 30) \u00b7 days_after (optional, default 30)\n\n**Response shape:**\n```json\n{ \"data\": { \"pattern\": [\"\u2026\"], \"avg_crush_pct\": \"\u2026\", \"iv_units\": \"percentage_points\" }, \"success\": true }\n```","operationId":"get_iv_crush_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"IV build-up into earnings and crush after, averaged over past events"}},"/api/mcp/data/iv-opportunities/{ticker}":{"get":{"description":"IV mean-reversion opportunities.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"error\": \"name 'z_score_threshold' is not defined\"\n  },\n  \"success\": true\n}\n```","operationId":"get_iv_opportunities_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"IV mean-reversion opportunities"}},"/api/mcp/data/iv-rank/{ticker}":{"get":{"description":"IV rank and percentile.\n\n**Query parameters:** lookback_days (default 252)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"current_iv\": 22.01,\n    \"data_source\": \"orats_ivrank\",\n    \"historical_data_points\": 252,\n    \"iv_max_52w\": 30.72,\n    \"iv_mean\": 23.5,\n    \"iv_median\": 23.38,\n    \"iv_min_52w\": 18.11,\n    \"iv_percentile\": 20.63,\n    \"iv_percentile_1m\": 14.29,\n    \"iv_percentile_1y\": 19,\n    \"iv_rank\": 30.93,\n    \"iv_rank_1m\": 11.2,\n    \"iv_rank_1y\": 30.93,\n    \"iv_state\": \"LOW\",\n    \"iv_std\": 2.19,\n    \"iv_stdv_from_mean\": -0.59,\n    \"lookback_days\": 252,\n    \"ticker\": \"AAPL\",\n    \"timestamp\": \"2026-06-17T08:30:12.408276\"\n  },\n  \"success\": true\n}\n```","operationId":"get_iv_rank_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"IV rank and percentile"}},"/api/mcp/data/market-overview":{"get":{"description":"Market-wide volatility overview.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"earnings_this_week\": [\n      {\n        \"capGroup\": \"large\",\n        \"days_to_earnings\": 0,\n        \"hv20d\": 46.5,\n        \"iv30d\": 65.1,\n        \"iv_percentile\": 82.0,\n        \"market_cap\": \"$39.6B\",\n        \"next_earnings\": \"2026-06-17\",\n        \"price\": 375.76,\n        \"\u2026\": \"(+3 more keys)\"\n      },\n      \"...(+10 more items)\"\n    ],\n    \"etf_heatmap\": [\n      {\n        \"chg1m\": -8.87,\n        \"chg1w\": -3.8,\n        \"constituents\": [\n          {\n            \"capGroup\": \"mega\",\n            \"chg1m\": -11.22,\n            \"chg1w\": -4.31,\n            \"iv30d\": 27.2,\n            \"ivRank\": 67.0,\n            \"mktCap\": 590430381.0,\n            \"optVol\": 55282.0,\n            \"price\": 141.7,\n            \"\u2026\": \"(+2 more keys)\"\n          },\n          \"...(+16 more items)\"\n        ],\n        \"iv30d\": 23.5,\n        \"ivRank\": 62.0,\n        \"mktCap\": 37580213.0,\n        \"name\": \"Energy\",\n        \"optVol\": 169861.0,\n        \"\u2026\": \"(+3 more keys)\"\n      },\n      \"...(+10 more items)\"\n    ],\n    \"index_prices\": {\n      \"DJX\": {\n        \"chg1m\": 4.56,\n        \"chg1w\": 2.12,\n        \"chg_today\": 0,\n        \"iv30d\": 13.3,\n        \"name\": \"Dow Jones\",\n        \"price\": 51671.0\n      },\n      \"NDX\": {\n        \"chg1m\": 3.47,\n        \"chg1w\": 3.15,\n        \"chg_today\": 0,\n        \"iv30d\": 23.1,\n        \"name\": \"Nasdaq 100\",\n        \"price\": 30543.92\n      },\n      \"SPX\": {\n        \"chg1m\": 1.58,\n        \"chg1w\": 1.81,\n        \"chg_today\": 0,\n        \"iv30d\": 12.9,\n        \"name\": \"S&P 500\",\n        \"price\": 7554.29\n      },\n      \"VIX\": {\n        \"chg1m\": -8.98,\n        \"chg1w\": -18.37,\n        \"chg_today\": 0,\n        \"iv30d\": 79.5,\n        \"name\": \"VIX\",\n        \"price\": 16.2\n      }\n    },\n    \"iv_hv_overpriced\": [\n      {\n        \"capGroup\": \"small\",\n        \"contango\": -30.3,\n        \"hv20d\": 61.1,\n        \"iv30d\": 310.0,\n        \"iv_percentile\": 99.0,\n        \"market_cap\": \"$583M\",\n        \"price\": 7.97,\n        \"sector\": \"Healthcare\",\n        \"\u2026\": \"(+3 more keys)\"\n      },\n      \"...(+29 more items)\"\n    ],\n    \"iv_hv_underpriced\": [\n      {\n        \"capGroup\": \"mega\",\n        \"contango\": -0.13,\n        \"hv20d\": 3072.2,\n        \"iv30d\": 32.5,\n        \"iv_percentile\": 37.0,\n        \"market_cap\": \"$1.0T\",\n        \"price\": 1122.27,\n        \"sector\": \"Healthcare\",\n        \"\u2026\": \"(+3 more keys)\"\n      },\n      \"...(+29 more items)\"\n    ],\n    \"market_stats\": {\n      \"avg_contango\": -0.15,\n      \"avg_iv30d\": 52.0,\n      \"avg_iv_percentile\": 56.0,\n      \"avg_put_call_ratio\": 0.75,\n      \"avg_vrp\": 3.6,\n      \"market_regime\": \"Elevated\",\n      \"median_iv_percentile\": 60.0,\n      \"pct_high_iv\": 36.9,\n      \"\u2026\": \"(+4 more keys)\"\n    },\n    \"put_skew\": {\n      \"avg_skew_pctile\": 41.4,\n      \"avg_slope\": 1.04,\n      \"avg_slope_1y\": 1.36,\n      \"sectors\": [\n        {\n          \"avg_skew_pctile\": 55.4,\n          \"avg_slope\": 1.58,\n          \"sector\": \"Volatility\",\n          \"ticker_count\": 3\n        },\n        \"...(+12 more items)\"\n      ]\n    },\n    \"scan_time\": \"2026-06-17T08:30:57\",\n    \"\u2026\": \"(+6 more keys)\"\n  },\n  \"success\": true\n}\n```","operationId":"get_market_overview","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Market-wide volatility overview"}},"/api/mcp/data/max-pain/{ticker}":{"get":{"description":"Max-pain strike and the pain distribution across strikes.\n\n**Query parameters:** expiration (optional)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"all_strikes\": [\n      {\n        \"strike\": 230.0,\n        \"total_pain\": 128121000.0\n      },\n      {\n        \"strike\": 235.0,\n        \"total_pain\": 116903000.0\n      },\n      \"...(+46 more items)\"\n    ],\n    \"distance_from_spot\": -4.269999999999982,\n    \"distance_pct\": -1.426805226050049,\n    \"expiration\": \"2026-06-17\",\n    \"likely_direction\": \"NEUTRAL\",\n    \"magnet_strength\": \"WEAK\",\n    \"max_pain_strike\": 295.0,\n    \"max_pain_value\": 4242750.0,\n    \"stock_price\": 299.27,\n    \"success\": true,\n    \"ticker\": \"AAPL\",\n    \"timestamp\": \"2026-06-17T08:31:31.146254\"\n  },\n  \"success\": true\n}\n```","operationId":"get_max_pain_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Max-pain strike and the pain distribution across strikes"}},"/api/mcp/data/mispricing-assessment/{ticker}":{"get":{"description":"Composite assessment combining IV rank, VRP, and expected-vs-actual: returns a BUY_PREMIUM / SELL_PREMIUM / NEUTRAL signal with a \u2212100\u2026+100 score, confidence, and all components.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"components\": {\n      \"current_iv\": 22.01,\n      \"expected_move_pct\": 0,\n      \"historical_avg_move_pct\": 0,\n      \"iv_percentile\": 20.6,\n      \"iv_rank\": 30.9,\n      \"options_assessment\": \"UNKNOWN\",\n      \"realized_vol\": 0,\n      \"vrp\": 0\n    },\n    \"confidence\": 100.0,\n    \"historical_moves\": {\n      \"14d\": {\n        \"avg_move_pct\": 5.460654166142421,\n        \"max_down_move_pct\": -5.706615146384165,\n        \"max_up_move_pct\": 11.738149279574095,\n        \"median_move_pct\": 6.34700353327966,\n        \"p10\": -2.746558192259416,\n        \"p25\": 4.136666987122128,\n        \"p75\": 8.462997002936723,\n        \"p90\": 9.959272583173219,\n        \"\u2026\": \"(+2 more keys)\"\n      },\n      \"21d\": {\n        \"avg_move_pct\": 8.983453570532497,\n        \"max_down_move_pct\": -2.4073167167206533,\n        \"max_up_move_pct\": 15.239542157843655,\n        \"median_move_pct\": 9.45067944285608,\n        \"p10\": -0.0954494391009697,\n        \"p25\": 7.316391478568541,\n        \"p75\": 12.389979949232178,\n        \"p90\": 13.438183431307893,\n        \"\u2026\": \"(+2 more keys)\"\n      },\n      \"30d\": {\n        \"avg_move_pct\": 13.784484713867984,\n        \"max_down_move_pct\": 6.055697641050339,\n        \"max_up_move_pct\": 18.74015402251373,\n        \"median_move_pct\": 14.615760531262456,\n        \"p10\": 8.23281228894737,\n        \"p25\": 11.872727117323267,\n        \"p75\": 16.500919729454303,\n        \"p90\": 17.435065192241144,\n        \"\u2026\": \"(+2 more keys)\"\n      },\n      \"7d\": {\n        \"avg_move_pct\": 2.171606636064761,\n        \"max_down_move_pct\": -6.976588285700114,\n        \"max_up_move_pct\": 8.34310130186261,\n        \"median_move_pct\": 2.589399640543666,\n        \"p10\": -3.1024009791845537,\n        \"p25\": 1.0989520767016592,\n        \"p75\": 4.41157793600958,\n        \"p90\": 5.611353172267599,\n        \"\u2026\": \"(+2 more keys)\"\n      }\n    },\n    \"mispricing_score\": 0,\n    \"signal\": \"NEUTRAL\",\n    \"ticker\": \"AAPL\",\n    \"timestamp\": \"2026-06-17T07:31:00.201147+00:00\"\n  },\n  \"success\": true\n}\n```","operationId":"get_mispricing_assessment_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Composite assessment combining IV rank, VRP, and expected-vs-actual: returns a BUY_PREMIUM / SELL_PREMIUM / NEUTRAL s\u2026"}},"/api/mcp/data/monies/{ticker}":{"get":{"description":"our institutional data feed monies vol surface: the market's smoothed implied surface, the provider's forecast surface, or the comparison of the two (model-vs-market rich/cheap spots).\n\n**Query parameters:** surface (optional: 'implied' default, 'forecast', 'comparison')\n\n**Response shape:**\n```json\n{ \"data\": { \"monies\": [ {\"expirDate\", \"\u2026delta-smile columns\u2026\"}, \"\u2026\" ] }, \"success\": true }\n```","operationId":"get_monies_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"our institutional data feed monies vol surface: the market's smoothed implied surface, the provider's forecast surfac\u2026"}},"/api/mcp/data/optimize-strategy":{"post":{"description":"Grid-searches strikes (iron_condor and credit_spread) and returns the winning strategy with its analysis.\n\n**Request body:** JSON: ticker, strategy_type (required); target \u2208 max_profit | min_loss | risk_reward | probability (default max_profit; other values optimize net credit)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"analysis\": {\n      \"breakevens\": [\n        285.88,\n        \"...(+1 more items)\"\n      ],\n      \"legs_summary\": [\n        {\n          \"action\": \"SELL\",\n          \"expiration\": \"2026-07-17\",\n          \"iv\": 0.2235,\n          \"premium\": 3.55,\n          \"quantity\": 1,\n          \"strike\": 290.0,\n          \"type\": \"PUT\"\n        },\n        \"...(+3 more items)\"\n      ],\n      \"max_loss\": -1588.0000000000007,\n      \"max_profit\": 412.0,\n      \"net_delta\": 0.057800000000000046,\n      \"net_premium\": -412.0,\n      \"net_theta\": 0.06500000000000002,\n      \"net_vega\": -0.223,\n      \"pnl_curve\": [\n        [\n          216.0,\n          \"...(+1 more items)\"\n        ],\n        \"...(+99 more items)\"\n      ],\n      \"probability_of_profit\": 47.7,\n      \"risk_reward_ratio\": 0.2594458438287153,\n      \"stock_price\": 299.27,\n      \"strategy_name\": \"Iron Condor\",\n      \"ticker\": \"AAPL\"\n    },\n    \"created_at\": \"2026-06-17T08:30:35.027613\",\n    \"legs\": [\n      {\n        \"action\": \"SELL\",\n        \"delta\": -0.2695,\n        \"expiration\": \"2026-07-17\",\n        \"iv\": 0.2235,\n        \"premium\": 3.55,\n        \"quantity\": 1,\n        \"strike\": 290.0,\n        \"theta\": -0.126,\n        \"type\": \"PUT\",\n        \"vega\": 0.2834\n      },\n      \"...(+3 more items)\"\n    ],\n    \"name\": \"Iron Condor\",\n    \"optimization_target\": \"max_profit\",\n    \"stock_price\": 299.27,\n    \"ticker\": \"AAPL\"\n  },\n  \"success\": true\n}\n```","operationId":"post_optimize_strategy","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Grid-searches strikes (iron_condor and credit_spread) and returns the winning strategy with its analysis"}},"/api/mcp/data/options-by-delta/{ticker}":{"get":{"description":"The contract closest to a target delta: strike, actual delta, IV, bid/ask/mid.\n\n**Query parameters:** delta (default 0.30), option_type \u2208 call | put (default call), expiration (optional)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"actual_delta\": 0.191,\n    \"ask\": 0.4,\n    \"bid\": 0.37,\n    \"expiration\": \"2026-06-17\",\n    \"iv\": 0.2318,\n    \"mid\": 0.385,\n    \"option_type\": \"call\",\n    \"stock_price\": 299.27,\n    \"strike\": 302.5,\n    \"target_delta\": 0.3,\n    \"ticker\": \"AAPL\"\n  },\n  \"success\": true\n}\n```","operationId":"get_options_by_delta_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"The contract closest to a target delta: strike, actual delta, IV, bid/ask/mid"}},"/api/mcp/data/pop":{"post":{"description":"Probability of profit for a set of option legs (N(d2)-based).\n\n**Request body:** JSON body: legs (required: option_type, action, strike, iv, premium, quantity) \u00b7 stock_price (required) \u00b7 days_to_exp (required)\n\n**Response shape:**\n```json\n{ \"data\": { \"probability_of_profit\": 68.2, \"legs_count\": 2 }, \"success\": true }\n```","operationId":"post_pop","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Probability of profit for a set of option legs (N(d2)-based)"}},"/api/mcp/data/portfolio-greeks":{"post":{"description":"Aggregate portfolio Greeks with summary risk level and per-ticker breakdown.\n\n**Request body:** JSON: positions [{ticker, position_type STOCK|CALL|PUT, quantity, strike?, expiration?, entry_price?, current_price?, delta?\u2026}] \u2014 required\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"portfolio_summary\": {\n      \"daily_decay_pct\": 0.008064516129032258,\n      \"delta_exposure_pct\": 887.0967741935484,\n      \"risk_level\": \"MEDIUM\",\n      \"total_cost_basis\": 500.0,\n      \"total_delta\": 55.00000000000001,\n      \"total_pnl\": 120.0,\n      \"total_pnl_pct\": 24.0,\n      \"total_positions\": 1,\n      \"total_theta\": -0.05,\n      \"total_value\": 620.0,\n      \"total_vega\": 0.12,\n      \"vega_risk_pct\": 0.01935483870967742\n    },\n    \"positions_by_ticker\": {\n      \"AAPL\": {\n        \"delta\": 55.00000000000001,\n        \"positions\": [\n          {\n            \"charm\": 0,\n            \"current_price\": 6.2,\n            \"delta\": 0.55,\n            \"entry_price\": 5.0,\n            \"expiration\": \"2026-01-16\",\n            \"gamma\": 0.02,\n            \"iv\": 0.28,\n            \"position_type\": \"CALL\",\n            \"quantity\": 1,\n            \"rho\": 0,\n            \"stock_price\": 195,\n            \"strike\": 190,\n            \"theta\": -0.05,\n            \"ticker\": \"AAPL\",\n            \"vanna\": 0,\n            \"vega\": 0.12,\n            \"vomma\": 0\n          }\n        ],\n        \"theta\": -0.05,\n        \"value\": 620.0,\n        \"vega\": 0.12\n      }\n    },\n    \"success\": true,\n    \"timestamp\": \"2026-06-17T08:30:35.400105\"\n  },\n  \"success\": true\n}\n```","operationId":"post_portfolio_greeks","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Aggregate portfolio Greeks with summary risk level and per-ticker breakdown"}},"/api/mcp/data/post-earnings-drift/{ticker}":{"get":{"description":"Post-earnings drift statistics over recent quarters (does the move continue or fade).\n\n**Query parameters:** quarters (optional, default 12)\n\n**Response shape:**\n```json\n{ \"data\": { \"quarters\": [\"\u2026\"], \"avg_drift\": \"\u2026\" }, \"success\": true }\n```","operationId":"get_post_earnings_drift_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Post-earnings drift statistics over recent quarters (does the move continue or fade)"}},"/api/mcp/data/price-context/{ticker}":{"get":{"description":"Multi-timeframe performance and momentum-vs-IV context.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"avg_opt_volume_20d\": 1167697,\n    \"best_etf\": \"XLK\",\n    \"beta_1m\": 0.5,\n    \"beta_1y\": 0.9,\n    \"borrow_30d\": 2.58,\n    \"call_oi\": 3040705,\n    \"call_volume\": 579608,\n    \"contango\": 0.34,\n    \"correl_etf_1y\": 0.44,\n    \"correl_spy_1y\": 0.73,\n    \"daily_change\": 0.03,\n    \"daily_change_pct\": 0.01,\n    \"days_since_hi_52w\": 9,\n    \"days_since_lo_52w\": 364,\n    \"days_to_earnings\": 43,\n    \"\u2026\": \"(+43 more keys)\"\n  },\n  \"success\": true\n}\n```","operationId":"get_price_context_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Multi-timeframe performance and momentum-vs-IV context"}},"/api/mcp/data/relative-value-scan":{"get":{"description":"Market-wide relative-value scans: IV/SPY mean-reversion stretches or rich-vs-cheap pairs.\n\n**Query parameters:** view (optional: 'mean_reversion' default, 'pairs') \u00b7 limit (default 20, max 50) \u00b7 threshold (mean_reversion z-score, default 1.5)\n\n**Response shape:**\n```json\n{ \"data\": { \"results\": [\"\u2026\"] }, \"success\": true }\n```","operationId":"get_relative_value_scan","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Market-wide relative-value scans: IV/SPY mean-reversion stretches or rich-vs-cheap pairs"}},"/api/mcp/data/relative-value/{ticker}":{"get":{"description":"IV percentile vs SPY and sector, plus ratio mean-reversion signal.\n\n**Query parameters:** days (default 252)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"avg_opt_volume\": 1167698.0,\n    \"best_etf\": \"XLK\",\n    \"correlation\": {\n      \"beta\": 0.9,\n      \"etf_1m\": 0.61,\n      \"etf_1y\": 0.44,\n      \"spy_1m\": 0.7,\n      \"spy_1y\": 0.73\n    },\n    \"earnings\": {\n      \"days_to_next\": null,\n      \"implied_move\": 4.77\n    },\n    \"hv20d\": 24.02,\n    \"iv30d\": 20.93,\n    \"market_cap\": 4393624768000.0,\n    \"momentum\": {\n      \"chg_1m\": 0.48,\n      \"chg_1w\": 3.0\n    },\n    \"percentiles\": {\n      \"own\": 19.0,\n      \"vs_etf\": 1.0,\n      \"vs_spy\": 45.0\n    },\n    \"price\": 296.42,\n    \"ratios\": {\n      \"iv_etf_ratio\": 1.5936,\n      \"iv_etf_ratio_avg_1m\": 0.95,\n      \"iv_etf_ratio_avg_1y\": 0.95,\n      \"iv_hv_ratio\": 0.8,\n      \"iv_hv_ratio_1m\": 1.02,\n      \"iv_hv_ratio_1y\": 0.94,\n      \"iv_spy_ratio\": 1.5936,\n      \"iv_spy_ratio_avg_1m\": 1.5,\n      \"iv_spy_ratio_avg_1y\": 1.57\n    },\n    \"sector\": \"Technology\",\n    \"sigma_bands\": {\n      \"mean\": 1.6245,\n      \"sigma_1_lower\": 1.4511,\n      \"sigma_1_upper\": 1.7979,\n      \"sigma_2_lower\": 1.2777,\n      \"sigma_2_upper\": 1.9714\n    },\n    \"signal\": \"CHEAP\",\n    \"skew\": {\n      \"slope_pctile\": null\n    },\n    \"ticker\": \"AAPL\",\n    \"timeseries\": [\n      {\n        \"date\": \"2025-06-16\",\n        \"iv_etf_ratio\": 1.28,\n        \"iv_hv_ratio\": 1.12,\n        \"iv_spy_ratio\": 1.77\n      },\n      {\n        \"date\": \"2025-06-17\",\n        \"iv_etf_ratio\": 1.25,\n        \"iv_hv_ratio\": 1.15,\n        \"iv_spy_ratio\": 1.66\n      },\n      \"...(+250 more items)\"\n    ],\n    \"vrp\": -6.54,\n    \"z_scores\": {\n      \"etf_ratio_z\": 3.6905,\n      \"spy_ratio_z\": -0.1783\n    }\n  },\n  \"success\": true\n}\n```","operationId":"get_relative_value_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"IV percentile vs SPY and sector, plus ratio mean-reversion signal"}},"/api/mcp/data/scenario-analysis":{"post":{"description":"What-if scenario analysis across supplied price/vol scenarios.\n\n**Request body:** JSON: positions (required), scenarios []\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"current_value\": 620.0,\n    \"scenarios\": [],\n    \"success\": true,\n    \"timestamp\": \"2026-06-17T08:30:35.777443\"\n  },\n  \"success\": true\n}\n```","operationId":"post_scenario_analysis","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"What-if scenario analysis across supplied price/vol scenarios"}},"/api/mcp/data/screen":{"get":{"description":"Market screener over the full universe via bulk data (1-2 upstream calls). Preset catalog: high_iv_rank, low_iv_rank, high_vrp, earnings_this_week, high_skew, steep_contango, mean_reversion, vol_pairs, decorrelation, unusual_volume, pin_risk. screen_type=list returns the catalog with descriptions.\n\n**Query parameters:** screen_type (default high_iv_rank; \"list\" for catalog) \u00b7 limit (default 20) \u00b7 min_market_cap (dollars, default 1e9) \u00b7 exclude_earnings_days (default 0)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"errors\": [\n      {\n        \"error\": \"No expirations found\",\n        \"ticker\": \"BRK.B\"\n      }\n    ],\n    \"filters\": {\n      \"max_iv\": null,\n      \"min_iv\": null\n    },\n    \"results\": [\n      {\n        \"current_iv\": 83.57,\n        \"data_status\": \"LIVE\",\n        \"expiration_used\": \"2026-07-17\",\n        \"iv_percentile\": null,\n        \"iv_rank\": null,\n        \"note\": \"IV Rank requires historical IV data caching\",\n        \"stock_price\": 117.1,\n        \"ticker\": \"INTC\"\n      },\n      {\n        \"current_iv\": 77.37,\n        \"data_status\": \"LIVE\",\n        \"expiration_used\": \"2026-07-17\",\n        \"iv_percentile\": null,\n        \"iv_rank\": null,\n        \"note\": \"IV Rank requires historical IV data caching\",\n        \"stock_price\": 214.13,\n        \"ticker\": \"QCOM\"\n      },\n      \"...(+18 more items)\"\n    ],\n    \"results_count\": 49,\n    \"scan_time\": \"2026-06-17T08:30:47\",\n    \"tickers_scanned\": 50\n  },\n  \"success\": true\n}\n```","operationId":"get_screen","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Market screener over the full universe via bulk data (1-2 upstream calls)"}},"/api/mcp/data/search":{"get":{"description":"Ticker search / validation over the platform's coverage universe \u2014 resolve company names to symbols and check support before deeper calls.\n\n**Query parameters:** q (required) \u00b7 limit (default 8, max 20)\n\n**Response shape:**\n```json\n{ \"data\": { \"query\", \"results\": [{\"symbol\", \"name\", \"sector\", \"market_cap_tier\"}], \"count\", \"exact_match\", \"supported\" }, \"success\": true }\n```","operationId":"get_search","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Ticker search / validation over the platform's coverage universe \u2014 resolve company names to symbols and check support\u2026"}},"/api/mcp/data/seasonality/{ticker}":{"get":{"description":"Monthly/quarterly seasonality of returns and volatility.\n\n**Query parameters:** years (optional, default 3)\n\n**Response shape:**\n```json\n{ \"data\": { \"monthly\": [\"\u2026\"], \"quarterly\": [\"\u2026\"] }, \"success\": true }\n```","operationId":"get_seasonality_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Monthly/quarterly seasonality of returns and volatility"}},"/api/mcp/data/simulate-chain":{"post":{"description":"Black-Scholes what-if: re-price a chain at a hypothetical stock price, DTE, and IV shift. Pass chain rows from GET /chain, or just ticker (+ optional expiration) and the server fetches the chain.\n\n**Request body:** JSON body: sim_price (required) \u00b7 sim_dte (required) \u00b7 iv_adjustment (percent, default 0) \u00b7 chain (rows, optional) \u00b7 ticker/expiration (used when chain omitted) \u00b7 strikes_around (default 20)\n\n**Response shape:**\n```json\n{ \"data\": { \"sim_price\", \"sim_dte\", \"iv_adjustment\", \"expiration\", \"chain\": [\"\u2026re-priced rows with Greeks\u2026\"] }, \"success\": true }\n```","operationId":"post_simulate_chain","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Black-Scholes what-if: re-price a chain at a hypothetical stock price, DTE, and IV shift"}},"/api/mcp/data/skew/{ticker}":{"get":{"description":"Volatility skew decomposition: put/call skew, curvature, and regime bands.\n\n**Query parameters:** view (optional: 'analysis' default, 'history', 'curvature') \u00b7 days (history view, default 252)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"current\": {\n      \"slope\": 1.5441,\n      \"slope_forecast\": 1.8744,\n      \"slope_forecast_inf\": 2.1555,\n      \"slope_inf\": 2.2334\n    },\n    \"curvature\": {\n      \"deriv\": 0.0904,\n      \"deriv_forecast\": 0.0914,\n      \"deriv_forecast_inf\": 0.0868,\n      \"deriv_inf\": 0.1027,\n      \"interpretation\": \"smile\",\n      \"mispricing\": 0.0128\n    },\n    \"market_width\": {\n      \"vol\": 1.09,\n      \"vol_inf\": 0.68\n    },\n    \"percentile\": {\n      \"avg_1m\": 1.6204,\n      \"avg_1y\": 2.7352,\n      \"current\": 8.33,\n      \"stdv_1y\": 1.19\n    },\n    \"price\": 299.27,\n    \"sector\": \"Technology\",\n    \"sector_relative\": {\n      \"etf_slope_ratio\": 0.4\n    },\n    \"ticker\": \"AAPL\"\n  },\n  \"success\": true\n}\n```","operationId":"get_skew_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Volatility skew decomposition: put/call skew, curvature, and regime bands"}},"/api/mcp/data/smart-money/{ticker}":{"get":{"description":"Smart-money / institutional flow.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"smart_money_trades\": [\n      {\n        \"ask\": 1.53,\n        \"bid\": 1.46,\n        \"criteria\": [\n          \"Large Premium\",\n          \"Opening Position\",\n          \"...(+2 more items)\"\n        ],\n        \"delta\": 0.1703,\n        \"dte\": 30,\n        \"expiration\": \"2026-07-17\",\n        \"is_unusual\": false,\n        \"mid\": 1.495,\n        \"moneyness\": \"OTM\",\n        \"oi\": 30466,\n        \"premium\": 457021.5,\n        \"smart_money_score\": 7,\n        \"strike\": 320.0,\n        \"ticker\": \"AAPL\",\n        \"timestamp\": \"2026-06-17T08:30:27.326359\",\n        \"type\": \"CALL\",\n        \"volume\": 3057,\n        \"volume_oi_ratio\": 0.10034136414363552\n      },\n      {\n        \"ask\": 2.45,\n        \"bid\": 2.35,\n        \"criteria\": [\n          \"Large Premium\",\n          \"Opening Position\",\n          \"...(+2 more items)\"\n        ],\n        \"delta\": -0.1982,\n        \"dte\": 30,\n        \"expiration\": \"2026-07-17\",\n        \"is_unusual\": false,\n        \"mid\": 2.4000000000000004,\n        \"moneyness\": \"OTM\",\n        \"oi\": 6668,\n        \"premium\": 289920.0,\n        \"smart_money_score\": 7,\n        \"strike\": 285.0,\n        \"ticker\": \"AAPL\",\n        \"timestamp\": \"2026-06-17T08:30:27.326237\",\n        \"type\": \"PUT\",\n        \"volume\": 1208,\n        \"volume_oi_ratio\": 0.1811637672465507\n      },\n      \"...(+18 more items)\"\n    ],\n    \"ticker\": \"AAPL\",\n    \"timestamp\": \"2026-06-17T08:30:27.331925\",\n    \"total_smart_trades\": 63\n  },\n  \"success\": true\n}\n```","operationId":"get_smart_money_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Smart-money / institutional flow"}},"/api/mcp/data/stock/{ticker}":{"get":{"description":"Current price (live quote mid) and company stats.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"beta\": \"0.90\",\n    \"earnings_date\": null,\n    \"industry\": \"Technology\",\n    \"market_cap\": \"$4.39T\",\n    \"price\": 299.27,\n    \"sector\": \"Technology\",\n    \"volume\": \"1,105,460\"\n  },\n  \"success\": true\n}\n```","operationId":"get_stock_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Current price (live quote mid) and company stats"}},"/api/mcp/data/stress-tests":{"post":{"description":"Standardized stress-test battery (crash, vol spike, \u2026) with estimated P&L per scenario.\n\n**Request body:** JSON: positions (required)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"current_value\": 620.0,\n    \"scenarios\": [\n      {\n        \"days_forward\": 1,\n        \"delta_contribution\": -1100.0000000000002,\n        \"estimated_pnl\": -1099.9300000000003,\n        \"estimated_pnl_pct\": -177.40806451612906,\n        \"iv_change_pct\": 100,\n        \"new_portfolio_value\": -479.9300000000003,\n        \"scenario_name\": \"Market Crash (-20%)\",\n        \"stock_move_pct\": -20,\n        \"theta_contribution\": -0.05,\n        \"vega_contribution\": 0.12\n      },\n      {\n        \"days_forward\": 1,\n        \"delta_contribution\": -550.0000000000001,\n        \"estimated_pnl\": -549.9900000000001,\n        \"estimated_pnl_pct\": -88.70806451612904,\n        \"iv_change_pct\": 50,\n        \"new_portfolio_value\": 70.00999999999988,\n        \"scenario_name\": \"Sharp Decline (-10%)\",\n        \"stock_move_pct\": -10,\n        \"theta_contribution\": -0.05,\n        \"vega_contribution\": 0.06\n      },\n      \"...(+6 more items)\"\n    ],\n    \"success\": true,\n    \"timestamp\": \"2026-06-17T08:30:36.141431\"\n  },\n  \"success\": true\n}\n```","operationId":"post_stress_tests","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Standardized stress-test battery (crash, vol spike, \u2026) with estimated P&L per scenario"}},"/api/mcp/data/term-structure/{ticker}":{"get":{"description":"IV term structure across expirations.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"as_of\": \"2026-06-17T08:30:15.760576\",\n    \"stock_price\": 299.27,\n    \"term_structure\": [\n      {\n        \"atm_iv\": 23.52,\n        \"atm_strike\": 300.0,\n        \"dte\": 0,\n        \"expected_move_dollar\": 3.0,\n        \"expected_move_pct\": 1.0,\n        \"expiration\": \"2026-06-17\",\n        \"iv_expected_move_dollar\": 0.0,\n        \"iv_expected_move_pct\": 0.0,\n        \"lower_1sigma\": 296.27,\n        \"lower_2sigma\": 293.27,\n        \"straddle_call\": 1.13,\n        \"straddle_price\": 3.0,\n        \"straddle_put\": 1.87,\n        \"upper_1sigma\": 302.27,\n        \"upper_2sigma\": 305.27\n      },\n      {\n        \"atm_iv\": 24.98,\n        \"atm_strike\": 300.0,\n        \"dte\": 1,\n        \"expected_move_dollar\": 4.46,\n        \"expected_move_pct\": 1.49,\n        \"expiration\": \"2026-06-18\",\n        \"iv_expected_move_dollar\": 3.91,\n        \"iv_expected_move_pct\": 1.31,\n        \"lower_1sigma\": 294.81,\n        \"lower_2sigma\": 290.35,\n        \"straddle_call\": 1.91,\n        \"straddle_price\": 4.46,\n        \"straddle_put\": 2.55,\n        \"upper_1sigma\": 303.73,\n        \"upper_2sigma\": 308.19\n      },\n      \"...(+6 more items)\"\n    ],\n    \"ticker\": \"AAPL\"\n  },\n  \"success\": true\n}\n```","operationId":"get_term_structure_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"IV term structure across expirations"}},"/api/mcp/data/third-order-greeks/{ticker}":{"get":{"description":"Speed, zomma, color, vomma, ultima.\n\n**Query parameters:** expiration (optional)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"data_status\": \"LIVE\",\n    \"definitions\": {\n      \"charm\": \"dDelta/dTime - Delta decay over time\",\n      \"color\": \"dGamma/dTime - How gamma changes as time passes\",\n      \"speed\": \"dGamma/dSpot - Rate of change of gamma with spot price\",\n      \"ultima\": \"dVomma/dVol - Third derivative wrt volatility\",\n      \"vanna\": \"dDelta/dVol - Delta sensitivity to volatility\",\n      \"vomma\": \"dVega/dVol - Convexity of vega (volga)\",\n      \"zomma\": \"dGamma/dVol - Sensitivity of gamma to volatility changes\"\n    },\n    \"detailed\": [\n      {\n        \"charm\": 11.210369051517821,\n        \"color\": -0.04269419309517194,\n        \"iv\": 3.4261471776395003,\n        \"speed\": -3.889892974357936e-05,\n        \"strike\": 230.0,\n        \"type\": \"C\",\n        \"ultima\": -0.009310650824818942,\n        \"vanna\": -0.05007257884385139,\n        \"vomma\": 0.013487812871515344,\n        \"zomma\": -0.00018829330347502524\n      },\n      \"...(+95 more items)\"\n    ],\n    \"dte\": 0,\n    \"expiration\": \"2026-06-17\",\n    \"greeks_by_strike\": [\n      {\n        \"charm\": 11.638536305306111,\n        \"color\": -0.01507149511831175,\n        \"speed\": -4.452702189025835e-05,\n        \"strike\": 230.0,\n        \"ultima\": -0.011367377011885022,\n        \"vanna\": -0.056982719526383285,\n        \"vomma\": 0.01651925408036399,\n        \"zomma\": -5.9549192603664614e-05\n      },\n      \"...(+47 more items)\"\n    ],\n    \"stock_price\": 299.27,\n    \"ticker\": \"AAPL\"\n  },\n  \"success\": true\n}\n```","operationId":"get_third_order_greeks_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Speed, zomma, color, vomma, ultima"}},"/api/mcp/data/vix":{"get":{"description":"VIX snapshot: level, change, and term-structure state.\n\n**Response shape:**\n```json\n{ \"data\": { \"vix_level\", \"change\", \"\u2026\" }, \"success\": true }\n```","operationId":"get_vix","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"VIX snapshot: level, change, and term-structure state"}},"/api/mcp/data/vol-arb-scan":{"get":{"description":"Volatility-arbitrage scan.\n\n**Query parameters:** ticker (default SPY)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"butterfly_mispricings\": [],\n    \"calendar_spreads\": [],\n    \"put_call_parity_violations\": [],\n    \"skew_trades\": [\n      {\n        \"atm_iv\": 0.17704999999999999,\n        \"atm_strike\": 750.0,\n        \"edge\": \"39.5 IV points of skew\",\n        \"expiration\": \"2026-06-17\",\n        \"otm_iv\": 0.5723,\n        \"otm_strike\": 690.0,\n        \"skew\": 0.39525000000000005,\n        \"skew_pct\": 223.24202202767586,\n        \"strategy\": \"Sell OTM put skew\",\n        \"ticker\": \"SPY\",\n        \"type\": \"PUT_SKEW_TRADE\"\n      },\n      {\n        \"atm_iv\": 0.17704999999999999,\n        \"atm_strike\": 750.0,\n        \"edge\": \"31.8 IV points of skew\",\n        \"expiration\": \"2026-06-17\",\n        \"otm_iv\": 0.4949,\n        \"otm_strike\": 810.0,\n        \"skew\": 0.31785,\n        \"skew_pct\": 179.5255577520475,\n        \"strategy\": \"Sell OTM call skew\",\n        \"ticker\": \"SPY\",\n        \"type\": \"CALL_SKEW_TRADE\"\n      },\n      \"...(+3 more items)\"\n    ],\n    \"success\": true,\n    \"ticker\": \"SPY\",\n    \"timestamp\": \"2026-06-17T08:30:32.618614\",\n    \"total_opportunities\": 6\n  },\n  \"success\": true\n}\n```","operationId":"get_vol_arb_scan","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Volatility-arbitrage scan"}},"/api/mcp/data/volatility-cone/{ticker}":{"get":{"description":"Volatility cone data.\n\n**Query parameters:** periods (CSV, default 10,20,30,60,90)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"current_iv\": 21.22,\n    \"realized_vol_30d\": 22.844156568754475,\n    \"ticker\": \"AAPL\",\n    \"timestamp\": \"2026-06-17T08:30:13.963716\",\n    \"volatility_cone\": {\n      \"10d\": {\n        \"current_rv\": 27.491816710000943,\n        \"difference\": -5.5368167100009416,\n        \"iv\": 21.955000000000002,\n        \"iv_to_rv_ratio\": 0.798601279485951,\n        \"max\": 39.57324481931114,\n        \"mean_rv\": 20.59427715277066,\n        \"median_rv\": 19.810445821827678,\n        \"min\": 6.341325284008219,\n        \"\u2026\": \"(+6 more keys)\"\n      },\n      \"20d\": {\n        \"current_rv\": 24.721498568018507,\n        \"difference\": -3.5064985680185075,\n        \"iv\": 21.215,\n        \"iv_to_rv_ratio\": 0.858159951009007,\n        \"max\": 34.340105272908225,\n        \"mean_rv\": 20.7517403335957,\n        \"median_rv\": 20.058686634782877,\n        \"min\": 9.58596967685563,\n        \"\u2026\": \"(+6 more keys)\"\n      },\n      \"30d\": {\n        \"current_rv\": 22.844156568754475,\n        \"difference\": -1.6241565687544757,\n        \"iv\": 21.22,\n        \"iv_to_rv_ratio\": 0.9289027562096144,\n        \"max\": 31.18350332487711,\n        \"mean_rv\": 21.190821223204015,\n        \"median_rv\": 21.81788847176728,\n        \"min\": 10.230167947056456,\n        \"\u2026\": \"(+6 more keys)\"\n      },\n      \"60d\": {\n        \"current_rv\": 23.383141343299794,\n        \"difference\": 1.0868586567002048,\n        \"iv\": 24.47,\n        \"iv_to_rv_ratio\": 1.0464804382244233,\n        \"max\": 26.40190092929704,\n        \"mean_rv\": 22.135769953589158,\n        \"median_rv\": 23.12276533946738,\n        \"min\": 14.086595809280517,\n        \"\u2026\": \"(+6 more keys)\"\n      },\n      \"90d\": {\n        \"current_rv\": 24.59687136465853,\n        \"difference\": -0.006871364658529444,\n        \"iv\": 24.59,\n        \"iv_to_rv_ratio\": 0.9997206407043945,\n        \"max\": 25.391473930985658,\n        \"mean_rv\": 22.97466309207559,\n        \"median_rv\": 22.77063267092776,\n        \"min\": 20.71425157701495,\n        \"\u2026\": \"(+6 more keys)\"\n      }\n    }\n  },\n  \"success\": true\n}\n```","operationId":"get_volatility_cone_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Volatility cone data"}},"/api/mcp/data/volume-profile/{ticker}":{"get":{"description":"Option volume profile by strike (call vs put volume).\n\n**Query parameters:** expiration (optional)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"expiration\": \"2026-06-17\",\n    \"put_call_ratio\": 0.5379030730704751,\n    \"stock_price\": 299.27,\n    \"success\": true,\n    \"ticker\": \"AAPL\",\n    \"timestamp\": \"2026-06-17T08:31:30.720433\",\n    \"top_oi_strikes\": [\n      {\n        \"call_oi\": 7045.0,\n        \"call_volume\": 114145.0,\n        \"distance_from_spot_pct\": 0.2439268887626619,\n        \"moneyness\": \"ATM\",\n        \"pcr_oi\": 0.2887154009936125,\n        \"pcr_volume\": 0.15657278023566518,\n        \"put_oi\": 2034.0,\n        \"put_volume\": 17872.0,\n        \"strike\": 300.0,\n        \"total_oi\": 9079.0,\n        \"total_volume\": 132017.0\n      },\n      \"...(+4 more items)\"\n    ],\n    \"top_volume_strikes\": [\n      {\n        \"call_oi\": 7045.0,\n        \"call_volume\": 114145.0,\n        \"distance_from_spot_pct\": 0.2439268887626619,\n        \"moneyness\": \"ATM\",\n        \"pcr_oi\": 0.2887154009936125,\n        \"pcr_volume\": 0.15657278023566518,\n        \"put_oi\": 2034.0,\n        \"put_volume\": 17872.0,\n        \"strike\": 300.0,\n        \"total_oi\": 9079.0,\n        \"total_volume\": 132017.0\n      },\n      \"...(+4 more items)\"\n    ],\n    \"total_call_volume\": 285122.0,\n    \"total_put_volume\": 153368.0,\n    \"volume_profile\": [\n      {\n        \"call_oi\": 0,\n        \"call_volume\": 1.0,\n        \"distance_from_spot_pct\": -23.14632271861529,\n        \"moneyness\": \"ITM\",\n        \"pcr_oi\": 52.0,\n        \"pcr_volume\": 0.0,\n        \"put_oi\": 52.0,\n        \"put_volume\": 0,\n        \"strike\": 230.0,\n        \"total_oi\": 52.0,\n        \"total_volume\": 1.0\n      },\n      \"...(+47 more items)\"\n    ]\n  },\n  \"success\": true\n}\n```","operationId":"get_volume_profile_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Option volume profile by strike (call vs put volume)"}},"/api/mcp/data/vrp/{ticker}":{"get":{"description":"Volatility risk premium (IV \u2212 RV).\n\n**Query parameters:** lookback_days (default 30)\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"assessment\": \"NORMAL_PREMIUM\",\n    \"implied_volatility\": 22.01,\n    \"lookback_days\": 30,\n    \"realized_volatility\": 23.983906213492155,\n    \"ticker\": \"AAPL\",\n    \"timestamp\": \"2026-06-17T08:30:14.586854\",\n    \"volatility_risk_premium\": -1.9739062134921532,\n    \"vrp_percentile\": 10.684613789111136,\n    \"vrp_ratio\": 0.917698718635677\n  },\n  \"success\": true\n}\n```","operationId":"get_vrp_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"Volatility risk premium (IV \u2212 RV)"}},"/api/mcp/data/vrp/{ticker}/expirations":{"get":{"description":"VRP broken down per expiration \u2014 where on the curve the premium sits.\n\n**Query parameters:** max_expirations (optional, default 10)\n\n**Response shape:**\n```json\n{ \"data\": { \"expirations\": [ {\"expiration\", \"dte\", \"iv\", \"hv\", \"vrp\"}, \"\u2026\" ], \"iv_units\": \"percentage_points\" }, \"success\": true }\n```","operationId":"get_vrp_by_ticker_expirations","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"VRP broken down per expiration \u2014 where on the curve the premium sits"}},"/api/mcp/data/vrp/{ticker}/timeseries":{"get":{"description":"IV vs HV time series \u2014 the volatility risk premium through time. Values in percentage points (iv_units).\n\n**Query parameters:** lookback_days (optional, default 60) \u00b7 hv_period (optional, default 30)\n\n**Response shape:**\n```json\n{ \"data\": { \"series\": [ {\"date\", \"iv\", \"hv\", \"vrp\"}, \"\u2026\" ], \"iv_units\": \"percentage_points\" }, \"success\": true }\n```","operationId":"get_vrp_by_ticker_timeseries","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"IV vs HV time series \u2014 the volatility risk premium through time"}},"/api/mcp/data/zero-dte/{ticker}":{"get":{"description":"0DTE analytics: gamma flip, max pain, by-strike gamma, and theta decay.\n\n**Query parameters:** \u2014\n\n**Response shape:**\n```json\n{\n  \"data\": {\n    \"by_strike\": [\n      {\n        \"call_delta\": 1.0,\n        \"call_gamma\": 0.002,\n        \"call_iv\": 0.0,\n        \"call_mid\": 250.25,\n        \"call_oi\": 1,\n        \"call_theta\": 0.0,\n        \"call_volume\": 0,\n        \"moneyness\": \"ITM\",\n        \"\u2026\": \"(+9 more keys)\"\n      },\n      \"...(+195 more items)\"\n    ],\n    \"chain_table\": [\n      {\n        \"call_ask\": 30.44,\n        \"call_bid\": 30.17,\n        \"call_delta\": 0.995,\n        \"call_gamma\": 0.001,\n        \"call_iv\": 0.0,\n        \"call_mid\": 30.3,\n        \"call_oi\": 328,\n        \"call_spread\": 0.27,\n        \"\u2026\": \"(+17 more keys)\"\n      },\n      \"...(+60 more items)\"\n    ],\n    \"data_status\": \"PRE-MARKET\",\n    \"edge_score\": {\n      \"components\": {\n        \"em_hit_rate\": {\n          \"score\": 8,\n          \"value\": 78.4,\n          \"weight\": 0.2\n        },\n        \"em_rv\": {\n          \"score\": 2,\n          \"value\": 0.59,\n          \"weight\": 0.25\n        },\n        \"gamma_regime\": {\n          \"score\": 7,\n          \"value\": \"positive\",\n          \"weight\": 0.1\n        },\n        \"iv_forecast\": {\n          \"score\": 1,\n          \"value\": -7.5,\n          \"weight\": 0.15\n        },\n        \"vrp\": {\n          \"score\": 2,\n          \"value\": -1.8,\n          \"weight\": 0.3\n        }\n      },\n      \"edge_label\": \"No Clear Edge\",\n      \"edge_type\": \"neutral\",\n      \"total\": 3.6\n    },\n    \"em_hit_rate\": {\n      \"assessment\": \"reliable\",\n      \"avg_actual_pct\": 0.7,\n      \"avg_em_pct\": 1.02,\n      \"current_em_pct\": 0.74,\n      \"em_vs_avg\": \"below\",\n      \"hit_rate\": 78.4,\n      \"hits\": 80,\n      \"total_days\": 102\n    },\n    \"error\": 0.0,\n    \"expiration\": \"2026-06-17\",\n    \"gamma_regime\": {\n      \"regime\": \"positive\",\n      \"total_net_gex\": 75.01\n    },\n    \"\u2026\": \"(+15 more keys)\"\n  },\n  \"success\": true\n}\n```","operationId":"get_zero_dte_by_ticker","parameters":[{"in":"path","name":"ticker","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"type":"object"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Success \u2014 payload under `data` with `success: true`."},"401":{"description":"Missing/invalid token."},"403":{"description":"Beta or Pro-tier gate."},"429":{"description":"Rate limit or monthly budget exceeded (see Retry-After / X-RateLimit-* headers)."}},"summary":"0DTE analytics: gamma flip, max pain, by-strike gamma, and theta decay"}}},"security":[{"bearerAuth":[]}],"servers":[{"url":"https://apexvol.com"}]}
