API and MCP server
Get probability of profit, the option finder, delayed quotes and option chains from your own code, or from AI assistants through MCP. It uses the same calculations as the calculator.
Getting a key
Sign up for a free API key. You add a card with Stripe (the free tier is not charged) and confirm your email; the key works once both are done. Already have an account? Create a key on your account page. Send the key with every request:
Authorization: Bearer opc_live_...
Optionally, lock a key to your servers on the account page: allowed IP addresses or ranges (IPv4 or IPv6,
e.g. 203.0.113.0/24) and allowed user agents (the request's User-Agent must contain one of them).
A request that doesn't match gets HTTP 403 with error.code ip_not_allowed or user_agent_not_allowed.
Plans and limits
| Plan | Price | Requests / month | Per second / minute | Over the quota |
|---|---|---|---|---|
| Free | Free | 3,000 (100/day) | 1 / 10 | Refused |
| Starter | $5/mo | 10,000 | 2 / 30 | $1 per 1,000 |
| Basic | $20/mo | 50,000 | 5 / 100 | $0.80 per 1,000 |
| Pro | $75/mo | 250,000 | 10 / 300 | $0.60 per 1,000 |
| Business | $250/mo | 1,000,000 | 25 / 1,000 | $0.40 per 1,000 |
| Scale | $1,000/mo | 5,000,000 | 50 / 2,500 | $0.30 per 1,000 |
| Enterprise | $2,500/mo | 15,000,000 | 100 / 5,000 | $0.25 per 1,000 |
| Enterprise Plus | $3,500/mo | 25,000,000 | 150 / 7,500 | $0.20 per 1,000 |
| Ultra | $10,000/mo | 100,000,000 | 300 / 15,000 | $0.15 per 1,000 |
| No key | 20/day per IP | – / 5 | quote and expirations only |
An option finder search counts as 5 requests, and a calculation with graph data as 2. Requests count across all your keys. Daily limits reset at midnight New York time, and the Free plan's monthly quota on the 1st of each month, also New York time. See pricing for details.
Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (per minute),
X-Quota-Limit, X-Quota-Remaining and X-Quota-Reset (this billing period), and X-Overage-Requests.
Identical /finder and /calculate requests within 2 minutes return the same result (X-Cache: HIT) and
still count towards your quota.
When a request is refused you get HTTP 429 with error.code rate_limited, quota_exceeded (Free plan) or
overage_cap_reached, and a Retry-After header. Prices are delayed by at least 15 minutes.
Endpoints
Base URL: https://www.optionsprofitcalculator.com/api/v1. Every response is
{"success": true, "data": {...}} or {"success": false, "error": {"code": "...", "message": "..."}}.
The OpenAPI spec is at /openapi.json.
| Endpoint | What it does |
|---|---|
GET /quote?symbol=AAPL | Stock price, bid/ask and 30-day implied volatility (IV30) |
GET /expirations?symbol=AAPL | Option expiry dates |
GET /chain?symbol=AAPL&expiry=2026-12-18 | Calls and puts for one expiry, with implied volatility |
POST /pop | Probability of profit, breakevens, max profit and loss for any position |
POST /calculate | Everything /pop returns, plus the P/L graph data: profit by stock price and date |
GET /finder | The best options or spreads for a price target |
Probability of profit
Send up to 8 option legs and 1 stock leg. Leave out price or iv to use the current market.
curl -X POST https://www.optionsprofitcalculator.com/api/v1/pop \
-H "Authorization: Bearer $OPC_API_KEY" -H "Content-Type: application/json" \
-d '{
"symbol": "AAPL",
"legs": [
{"type": "call", "action": "buy", "strike": 230, "expiry": "2026-12-18", "quantity": 1},
{"type": "call", "action": "sell", "strike": 240, "expiry": "2026-12-18", "quantity": 1}
]
}'
The response includes probabilityOfProfit (0 to 1), breakevens, maxProfit,
maxLoss, netCost (negative for a credit), collateral for naked short options,
and the prices and IVs used. Money values are dollars for the whole position. calculatorUrl opens the
same position in the calculator, at the same prices. It is null when the calculator can't open the position from a link:
no symbol given, 7 or more than 8 option legs, more than 500 contracts or 50,000 shares, or a stock price above $10,000.
A leg priced by you at a strike or expiry that isn't listed opens with an error message in the calculator.
Probability of profit is the chance of making at least $0.01 at the earliest expiry. It uses a lognormal model of the stock price, with the 30-day implied volatility.
Calculation with graph data
POST /calculate takes the same body as /pop and returns the same results, plus a graph
object with the profit/loss grid the calculator shows:
"graph": {
"today": "2026-11-04",
"prices": [330, 332, ..., 390],
"dates": [{"date": "2026-11-05", "daysFromToday": 1, "atExpiry": false}, ..., {"date": "2026-12-18", "daysFromToday": 44, "atExpiry": true}],
"profitLoss": [[-367, -362, ...], ...],
"expiry": {"date": "2026-12-18", "profitLoss": [...]},
"entryCost": 367
}
profitLoss[d][p] is the profit or loss in dollars, for the whole position, if closed at prices[p] on
dates[d]. Dates are New York market dates, and daysFromToday counts calendar days from today, the date in
New York. The first column is not necessarily today. The last date is the earliest expiry. Optional: priceMin and priceMax to set the price range,
and ivChange to shift implied volatility by a percentage (e.g. -10).
Option finder
curl "https://www.optionsprofitcalculator.com/api/v1/finder?symbol=AAPL&target=eq&price=250&date=2026-12-18&budget=1000&strategies=option-purchase,debit-spread" \
-H "Authorization: Bearer $OPC_API_KEY"
| Parameter | |
|---|---|
symbol | Ticker |
target | eq (at the price), gt (above it) or lt (below it) |
price | Target stock price |
date | When you expect it, YYYY-MM-DD |
exactExpiry | true to search only the expiry on (or next after) the date. Otherwise, every expiry from the date on. |
budget | Most to risk, in dollars. Positions are sized to fit. |
strategies | Comma list of option-purchase, short-option, credit-spread, debit-spread |
Returns up to 5 results, ranked by return on max risk at the target price and date
(return on estimated margin for naked short options). Each has a calculatorUrl that opens it in the calculator.
MCP server
AI assistants that support MCP (Claude Code, Claude Desktop, Cursor, VS Code and others) can use the same
calculations as tools: get_quote, get_expirations, get_option_chain,
probability_of_profit, calculate_position and find_options.
Then you can ask things like "What's the probability of profit on an AAPL 350/360 call spread for December?"
Set up in 3 steps
- Get a free API key (add a card, not charged on the free plan, and verify your email).
- Add the server to your app with the snippet below, replacing
opc_live_...with your key. - Restart the app or start a new chat, and ask about an options trade.
Server URL: https://www.optionsprofitcalculator.com/mcp (Streamable HTTP). Send your key in the
Authorization: Bearer opc_live_... or X-API-Key: opc_live_... header.
Claude Code
claude mcp add --transport http optionsprofitcalculator https://www.optionsprofitcalculator.com/mcp \
--header "Authorization: Bearer opc_live_..."
Claude Desktop
Settings → Developer → Edit Config, add this to claude_desktop_config.json, then restart Claude Desktop
(needs Node.js):
{
"mcpServers": {
"optionsprofitcalculator": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://www.optionsprofitcalculator.com/mcp",
"--header", "X-API-Key:opc_live_..."]
}
}
}
Cursor
Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"optionsprofitcalculator": {
"url": "https://www.optionsprofitcalculator.com/mcp",
"headers": { "X-API-Key": "opc_live_..." }
}
}
}
VS Code (GitHub Copilot)
Add to .vscode/mcp.json:
{
"servers": {
"optionsprofitcalculator": {
"type": "http",
"url": "https://www.optionsprofitcalculator.com/mcp",
"headers": { "X-API-Key": "opc_live_..." }
}
}
}
Claude.ai in the browser
Claude.ai's custom connectors sign in with OAuth and can't send an API key, so they aren't supported yet. Use Claude Code or Claude Desktop for now.
Limits
MCP calls share your API key's plan: the Free plan includes 100 requests a day and 3,000 a month
(a find_options search counts as 5, calculate_position as 2).
Paid plans raise the limits. Without a key, only
get_quote and get_expirations work, a few times a day.
Every tool result includes an attribution line, and the server asks assistants to credit
Options Profit Calculator as the source of the data and calculations.
Attribution
When you show results from the API or MCP server, please credit Options Profit Calculator and link to
optionsprofitcalculator.com. For example:
Data and calculations: Options Profit Calculator (optionsprofitcalculator.com). Where a result has a
calculatorUrl, linking to it lets your users see the full calculation.
Disclaimer
Estimates are for information only and are not financial advice. See the terms and conditions.