canli-mcp / Volatility surface

How do I get an implied volatility surface into an AI chat?

Ask for it through canli-mcp. volatility_surface reads every listed expiration of a US option chain and returns the smile at each one and the at-the-money term structure, drawn as a heatmap and curves in hosts that show MCP Apps.

Free and MIT-licensed. No account and no API key. Or run claude mcp add canli -- npx -y canli-mcp in Claude Code.

Ask it

Show me SPY's implied volatility surface.

The agent finds the tool through canli-mcp's find_tool and runs it through run_tool. This is the call:

{
  "name": "volatility_surface",
  "arguments": {
    "symbol": "SPY"
  }
}

What came back

Recorded from canli-mcp 0.11.1 on 2026-10-25, with no API key set. The model read 2,183 characters.

What volatility_surface returned: term structure, every row
expirationdaysatm ivput 25 delta ivcall 25 delta ivrisk reversalbutterfly
2026-10-2610.10950.12040.09990.02050.0007
2026-10-2720.12630.14120.11320.0280.0009
2026-10-2830.14810.16470.13250.03220.0005
2026-10-2940.15770.17540.14090.03450.0005
2026-10-3050.16240.1840.14220.04180.0007
2026-11-0280.14870.16990.12870.04120.0006
2026-11-0390.15030.17320.130.04320.0013
2026-11-04100.15560.18030.13440.04590.0017
The result volatility_surface sent back, in full form
{
  "ref": "r6",
  "underlying": {
    "symbol": "SPY",
    "price": 759.97,
    "iv30": 0.14862,
    "as_of": "2026-10-25 03:25:43"
  },
  "term_structure": {
    "columns": [
      "expiration",
      "days",
      "atm_iv",
      "put_25_delta_iv",
      "call_25_delta_iv",
      "risk_reversal",
      "…"
    ],
    "rows": [
      [
        "2026-10-26",
        1,
        0.1095,
        0.1204,
        0.0999,
        0.0205,
        "…"
      ],
      [
        "2026-10-27",
        2,
        0.1263,
        0.1412,
        0.1132,
        0.028,
        "…"
      ],
      [
        "2026-10-28",
        3,
        0.1481,
        0.1647,
        0.1325,
        0.0322,
        "…"
      ],
      [
        "2026-10-29",
        4,
        0.1577,
        0.1754,
        0.1409,
        0.0345,
        "…"
      ],
      [
        "2026-10-30",
        5,
        0.1624,
        0.184,
        0.1422,
        0.0418,
        "…"
      ],
      [
        "2026-11-02",
        8,
        0.1487,
        0.1699,
        0.1287,
        0.0412,
        "…"
      ],
      "…"
    ]
  },
  "smile": {
    "columns": [
      "expiration",
      "iv_at_0.8",
      "iv_at_0.9",
      "iv_at_0.95",
      "iv_at_1",
      "iv_at_1.05",
      "…"
    ],
    "rows": [
      [
        "2026-10-26",
        0.7442,
        0.4075,
        0.2366,
        0.1095,
        0.1775,
        "…"
      ],
      [
        "2026-10-27",
        0.6452,
        0.3918,
        0.2364,
        0.1263,
        0.1532,
        "…"
      ],
      [
        "2026-10-28",
        0.6436,
        0.3833,
        0.2355,
        0.1481,
        0.1515,
        "…"
      ],
      [
        "2026-10-29",
        0.6226,
        0.3701,
        0.2355,
        0.1577,
        0.1384,
        "…"
      ],
      [
        "2026-10-30",
        0.6044,
        0.3584,
        0.2398,
        0.1624,
        0.1341,
        "…"
      ],
      [
        "2026-11-02",
        0.5356,
        0.3184,
        0.2183,
        0.1487,
        0.1178,
        "…"
      ],
      "…"
    ],
    "note": "iv_at_0.9 is the implied volatility at a strike of 90 percent of the underlying price, interpolated from out-of-the-money options (puts belo…"
  },
  "source": "https://www.cboe.com/delayed_quotes/spy/quote_table",
  "limits": [
    "Cboe's public delayed quotes (at least 15 minutes old) and its implied volatilities and greeks, as Cboe computes them; for personal use unde…",
    "Not investment advice.",
    "risk_reversal is the 25-delta put's IV minus the 25-delta call's (positive: downside protection costs more); butterfly is their average minu…"
  ]
}

Prices, filings and statistics are as the sources published them on that day; run the call again for today's. Nothing here is investment advice.

The same answer as a view

In a host that draws MCP Apps, view: true shows the person the whole result and gives the model a summary. Watch it, then try it: below the clip is canli-mcp's real view, playing a recording.

Volatility surface

The view loads here.

The tools behind the answer

From canli-mcp's tool index
ToolPackWhat it does
volatility_surfacemarketsThe implied volatility surface from Cboe's delayed option data: at-the-money IV by expiration (term structure), 25-delta put and call IV with the risk reversal and butterfly (skew), and IV at fixed moneyness from 80 to 120 percent of the price (smile).

Add canli-mcp

Claude Code
claude mcp add canli -- npx -y canli-mcp
Cursor, Claude Desktop or any MCP client
{ "mcpServers": { "canli": { "command": "npx", "args": ["-y", "canli-mcp"] } } }
claude.ai, ChatGPT or any client that takes a URL
https://canlicapital.com/mcp/canli

Everything canli-mcp does · How it compares with other finance MCP servers

Related questions