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.
| expiration | days | atm iv | put 25 delta iv | call 25 delta iv | risk reversal | butterfly |
|---|---|---|---|---|---|---|
| 2026-10-26 | 1 | 0.1095 | 0.1204 | 0.0999 | 0.0205 | 0.0007 |
| 2026-10-27 | 2 | 0.1263 | 0.1412 | 0.1132 | 0.028 | 0.0009 |
| 2026-10-28 | 3 | 0.1481 | 0.1647 | 0.1325 | 0.0322 | 0.0005 |
| 2026-10-29 | 4 | 0.1577 | 0.1754 | 0.1409 | 0.0345 | 0.0005 |
| 2026-10-30 | 5 | 0.1624 | 0.184 | 0.1422 | 0.0418 | 0.0007 |
| 2026-11-02 | 8 | 0.1487 | 0.1699 | 0.1287 | 0.0412 | 0.0006 |
| 2026-11-03 | 9 | 0.1503 | 0.1732 | 0.13 | 0.0432 | 0.0013 |
| 2026-11-04 | 10 | 0.1556 | 0.1803 | 0.1344 | 0.0459 | 0.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.
The view loads here.
The tools behind the answer
| Tool | Pack | What it does |
|---|---|---|
volatility_surface | markets | The 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 mcp add canli -- npx -y canli-mcp{ "mcpServers": { "canli": { "command": "npx", "args": ["-y", "canli-mcp"] } } }https://canlicapital.com/mcp/canliEverything canli-mcp does · How it compares with other finance MCP servers
