Options quotes, IV rank and term structure, a catalyst calendar and a daily options brief.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Stored upcoming catalysts; excludes dividends. `searches` says, per symbol, whether the site's own search has run: unsearched, running, complete (an empty calendar is a real answer) or failed (still unknown).
Calendar days ahead; default and maximum 180.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http spicytrade https://spicy.trade/mcp
Stored upcoming catalysts; excludes dividends. `searches` says, per symbol, whether the site's own search has run: unsearched, running, complete (an empty calendar is a real answer) or failed (still unknown).
| Argument | Type | Description |
|---|---|---|
| symbols* | array | |
| horizonDays | integer | Calendar days ahead; default and maximum 180. |
{
"type": "object",
"required": [
"symbols"
],
"properties": {
"symbols": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\$?[A-Za-z0-9]{1,6}(?:/[A-Za-z0-9]{1,3})?$"
},
"maxItems": 20,
"minItems": 1
},
"horizonDays": {
"type": "integer",
"maximum": 180,
"minimum": 1,
"description": "Calendar days ahead; default and maximum 180."
}
},
"additionalProperties": false
}Read the daily options brief: each trade line, direction and thesis, and its links, as the site shows them. Pass before (YYYY-MM-DD) for the brief published before that market date. It is model-written prior analysis, not a current quote and not an instruction to trade.
| Argument | Type | Description |
|---|---|---|
| before | string | A market date, YYYY-MM-DD. |
{
"type": "object",
"properties": {
"before": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "A market date, YYYY-MM-DD."
}
},
"additionalProperties": false
}Price and daily move for tracked symbols, from the public snapshot refreshed about once a minute. Not a live quote and carries no bid/ask: sign in for those.
| Argument | Type | Description |
|---|---|---|
| symbols* | array |
{
"type": "object",
"required": [
"symbols"
],
"properties": {
"symbols": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\$?[A-Za-z0-9]{1,6}(?:/[A-Za-z0-9]{1,3})?$"
},
"maxItems": 10,
"minItems": 1
}
},
"additionalProperties": false
}Implied volatility rank, percentile and index for tracked symbols, from the public snapshot refreshed about once a minute. Sign in for the full broker metrics.
| Argument | Type | Description |
|---|---|---|
| symbols* | array | Ticker symbols; a leading $ cashtag is read as the bare symbol. |
{
"type": "object",
"required": [
"symbols"
],
"properties": {
"symbols": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\$?[A-Za-z0-9]{1,6}(?:/[A-Za-z0-9]{1,3})?$"
},
"maxItems": 20,
"minItems": 1,
"description": "Ticker symbols; a leading $ cashtag is read as the bare symbol."
}
},
"additionalProperties": false
}Dividend-adjusted Yahoo history with optional local SMA, EMA, RSI, MACD, or Bollinger studies; not a current quote. A study series carries only the values it has. Each series values[i] is the study value for the bar at prices.date[firstPriceIndex + i]; earlier bars are warm-up and have no value.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Most recent rows to return. Defaults to 120. |
| symbol* | string | |
| endDate | string | Inclusive end date in YYYY-MM-DD form. Defaults to today. |
| studies | array | Optional studies from adjusted closes; kind is SMA, EMA, RSI, BBANDS or MACD, uppercase. Defaults: period 14; MACD 12/26/9; Bollinger deviations 2. |
| interval | string | Daily by default. |
| startDate | string | Start date in YYYY-MM-DD form. Defaults to one year before endDate. The inclusive range spans at most 4000 calendar days, whatever the interval. |
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Most recent rows to return. Defaults to 120."
},
"symbol": {
"type": "string",
"pattern": "^[A-Z0-9]{1,6}(?:/[A-Z0-9]{1,3})?$"
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive end date in YYYY-MM-DD form. Defaults to today."
},
"studies": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"SMA",
"EMA",
"RSI"
],
"type": "string"
},
"period": {
"type": "integer",
"maximum": 250,
"minimum": 2
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"BBANDS"
],
"type": "string"
},
"period": {
"type": "integer",
"maximum": 250,
"minimum": 2
},
"standardDeviations": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"MACD"
],
"type": "string"
},
"fastPeriod": {
"type": "integer",
"maximum": 250,
"minimum": 2
},
"slowPeriod": {
"type": "integer",
"maximum": 250,
"minimum": 3
},
"signalPeriod": {
"type": "integer",
"maximum": 250,
"minimum": 2
}
},
"additionalProperties": false
}
]
},
"maxItems": 5,
"description": "Optional studies from adjusted closes; kind is SMA, EMA, RSI, BBANDS or MACD, uppercase. Defaults: period 14; MACD 12/26/9; Bollinger deviations 2."
},
"interval": {
"enum": [
"1d",
"1wk",
"1mo"
],
"type": "string",
"description": "Daily by default."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date in YYYY-MM-DD form. Defaults to one year before endDate. The inclusive range spans at most 4000 calendar days, whatever the interval."
}
},
"additionalProperties": false
}Every symbol spicytrade keeps loaded, alphabetized.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Resolve a ticker or company name. A name that resolves joins the tracked universe when the list has room, where it may later be displaced by stronger names; `watchlisted` in the result says whether it was kept.
| Argument | Type | Description |
|---|---|---|
| query* | string | Ticker or company-name fragment. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"pattern": "^(?!\\s*\\.{1,2}\\s*$)(?=.*[^\\s%_])[\\x20-\\x7E]+$",
"maxLength": 48,
"minLength": 1,
"description": "Ticker or company-name fragment."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.