StockMap MCP
StockMap MCP allows AI assistants to query US stock research, including model calls, reasons, and track records for over 4,200 stocks. It supports watchlist management, sector analysis, crypto insights, and market changes, providing a graded record of past predictions rather than financial advice.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://stockmap.io/mcpWhat you can do with it
- Ask about any of the more than 4,200 US stocks and get the model's call
- Show me the market and see last night's changes and graded calls
- Manage watchlists by adding or removing stocks with your StockMap account
- Analyze crypto trends and determine if it is altseason
Source and maintenance
Protocol and capabilities
- Server
- io.stockmap/stockmap 1.9.0
- MCP protocol
- 2025-06-18
- Tools
- 12 advertised
- Resources
- 8 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
12 advertised
stock_call — Stock call
StockMap's published call on one US stock, the same for every reader, by symbol or company name: the model's nightly 14-day call, the strongest reasons for and against, how its past calls on the stock did, the price and the day's change, and what changed last night. Use it when someone asks how a US stock looks, whether it reads strong or weak right now, or what the model's call on it is. Each answer carries the not-advice line and the run date.
{
"type": "object",
"title": "stock_callArguments",
"required": [
"stock"
],
"properties": {
"stock": {
"type": "string",
"title": "Stock",
"description": "A US stock's symbol (NVDA, BRK.B) or its company name (Nvidia)"
}
}
}{
"type": "object",
"$defs": {
"Run": {
"type": "object",
"title": "Run",
"properties": {
"not_landed": {
"type": "boolean",
"title": "Not Landed",
"default": false,
"description": "True: tonight's run has not landed yet, so this is the previous run"
},
"generated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At",
"default": null
},
"trading_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Trading Date",
"default": null
}
}
},
"Call": {
"type": "object",
"title": "Call",
"required": [
"band",
"label",
"signal",
"for_count",
"against_count"
],
"properties": {
"band": {
"type": "string",
"title": "Band"
},
"label": {
"type": "string",
"title": "Label",
"description": "The call as the stock page's pill names it"
},
"signal": {
"type": "number",
"title": "Signal",
"description": "−1 bearish to +1 bullish"
},
"agreement": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Agreement",
"default": null
},
"for_count": {
"type": "integer",
"title": "For Count",
"description": "Insights for the call"
},
"confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Confidence",
"default": null,
"description": "0 low to 1 high"
},
"against_count": {
"type": "integer",
"title": "Against Count",
"description": "Insights against it"
}
}
},
"Price": {
"type": "object",
"title": "Price",
"properties": {
"on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "On",
"default": null,
"description": "The trading day"
},
"close": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Close",
"default": null,
"description": "The close of the run's trading day; the run is nightly"
},
"change_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Change Pct",
"default": null,
"description": "That day's change, in %"
},
"vs_index_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Vs Index Pct",
"default": null,
"description": "That day's change less the index's, in points"
}
}
},
"Stock": {
"type": "object",
"title": "Stock",
"required": [
"symbol",
"name",
"price",
"call",
"reasons_for",
"reasons_against",
"record",
"changed",
"price_series",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url",
"description": "The stock's page on StockMap"
},
"call": {
"$ref": "#/$defs/Call"
},
"name": {
"type": "string",
"title": "Name"
},
"price": {
"$ref": "#/$defs/Price"
},
"record": {
"$ref": "#/$defs/Record"
},
"sector": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sector",
"default": null
},
"symbol": {
"type": "string",
"title": "Symbol",
"description": "As people write it (BRK.B)"
},
"changed": {
"$ref": "#/$defs/Changed"
},
"industry": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Industry",
"default": null
},
"reasons_for": {
"type": "array",
"items": {
"$ref": "#/$defs/Reason"
},
"title": "Reasons For"
},
"sector_lean": {
"anyOf": [
{
"$ref": "#/$defs/SectorLean"
},
{
"type": "null"
}
],
"default": null
},
"price_series": {
"$ref": "#/$defs/Sparkline",
"description": "The last three months' closes"
},
"reasons_against": {
"type": "array",
"items": {
"$ref": "#/$defs/Reason"
},
"title": "Reasons Against"
}
}
},
"Driver": {
"type": "object",
"title": "Driver",
"required": [
"label",
"short"
],
"properties": {
"label": {
"type": "string",
"title": "Label",
"description": "The factor as the insight names it"
},
"short": {
"type": "string",
"title": "Short",
"description": "The stock page's short label for it"
},
"favoured": {
"anyOf": [
{
"enum": [
"high",
"low"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Favoured",
"default": null,
"description": "The side of the factor the insight favours"
},
"stock_side": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Stock Side",
"default": null,
"description": "Where this stock sits on it: favoured, against or middle"
}
}
},
"Reason": {
"type": "object",
"title": "Reason",
"required": [
"line",
"sentence",
"right",
"drivers"
],
"properties": {
"line": {
"type": "string",
"title": "Line",
"description": "The reason in one short line: its strongest factors, as the page's chips read"
},
"right": {
"type": "string",
"title": "Right",
"description": "How often the insight has been right beside its base rate, as the page says it; empty when it has no accuracy"
},
"scope": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Scope",
"default": null,
"description": "stock, industry or sector: what the insight is graded against"
},
"drivers": {
"type": "array",
"items": {
"$ref": "#/$defs/Driver"
},
"title": "Drivers",
"description": "The factors the line names"
},
"hit_rate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Hit Rate",
"default": null
},
"sentence": {
"type": "string",
"title": "Sentence",
"description": "The insight's rule in full"
},
"base_rate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Base Rate",
"default": null,
"description": "How often the same calls would be right by chance; null before the rule's blocks carry the counts"
}
}
},
"Record": {
"type": "object",
"title": "Record",
"required": [
"text",
"hits",
"graded",
"too_few"
],
"properties": {
"hits": {
"type": "integer",
"title": "Hits"
},
"last": {
"anyOf": [
{
"$ref": "#/$defs/LastCall"
},
{
"type": "null"
}
],
"default": null,
"description": "The last graded call"
},
"line": {
"type": "string",
"title": "Line",
"default": "",
"description": "The record line alone: 'Right in h of k two-week windows on SYM since ... (as of ...).', or the too-few line"
},
"text": {
"type": "string",
"title": "Text",
"description": "The model's record on this stock, as the stock page says it: the counts of two-week windows and the chance line, or the too-few line"
},
"unit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Unit",
"default": null
},
"since": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Since",
"default": null
},
"chance": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Chance",
"default": null,
"description": "What a blind call on the same dates scored, a market number (never this stock's percentage); null without a base rate"
},
"graded": {
"type": "integer",
"title": "Graded",
"description": "Independent two-week windows graded"
},
"too_few": {
"type": "boolean",
"title": "Too Few",
"description": "True: too few two-week windows graded to judge yet, so no record is given"
},
"last_line": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Line",
"default": null,
"description": "The last graded call, as a sentence"
}
}
},
"Changed": {
"type": "object",
"title": "Changed",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"title": "Text"
},
"band_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band To",
"default": null
},
"flipped": {
"type": "integer",
"title": "Flipped",
"default": 0,
"description": "Insights that changed side"
},
"run_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Run Date",
"default": null
},
"band_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band From",
"default": null
}
}
},
"Listing": {
"type": "object",
"title": "Listing",
"required": [
"symbol",
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"name": {
"type": "string",
"title": "Name"
},
"symbol": {
"type": "string",
"title": "Symbol"
}
}
},
"LastCall": {
"type": "object",
"title": "LastCall",
"required": [
"date",
"called",
"verdict"
],
"properties": {
"date": {
"type": "string",
"title": "Date"
},
"called": {
"type": "string",
"title": "Called",
"description": "up or down"
},
"verdict": {
"type": "string",
"title": "Verdict",
"description": "right or wrong"
}
}
},
"Sparkline": {
"type": "object",
"title": "Sparkline",
"required": [
"dates",
"close"
],
"properties": {
"close": {
"type": "array",
"items": {
"type": "number"
},
"title": "Close"
},
"dates": {
"type": "array",
"items": {
"type": "string"
},
"title": "Dates"
}
}
},
"SectorLean": {
"type": "object",
"title": "SectorLean",
"required": [
"name",
"net",
"band",
"text"
],
"properties": {
"net": {
"type": "integer",
"title": "Net",
"description": "This stock against its sector: the mean read of the page's sector insights on it, −100 to +100 (the page's sector scale). Not the sector's own lean"
},
"band": {
"type": "string",
"title": "Band"
},
"lean": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Lean",
"default": null,
"description": "The sector's own 2-week lean, −100 to +100, the number market_map and sector give for the same run; None when that feed is on another run"
},
"name": {
"type": "string",
"title": "Name"
},
"text": {
"type": "string",
"title": "Text"
},
"lean_band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Lean Band",
"default": null
}
}
}
},
"title": "StockCallAnswer",
"required": [
"query",
"covers",
"run"
],
"properties": {
"run": {
"$ref": "#/$defs/Run"
},
"query": {
"type": "string",
"title": "Query"
},
"stock": {
"anyOf": [
{
"$ref": "#/$defs/Stock"
},
{
"type": "null"
}
],
"default": null,
"description": "None when no one stock matched"
},
"covers": {
"type": "integer",
"title": "Covers",
"description": "How many stocks StockMap calls"
},
"closest": {
"type": "array",
"items": {
"$ref": "#/$defs/Listing"
},
"title": "Closest",
"description": "The stocks the query may have meant"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "The model's track-recorded read, not financial advice."
}
}
}{
"title": "Stock call",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}compare_stocks — Compare stocks
StockMap's published calls on two to five US stocks side by side, the same for every reader, by symbol or company name: each stock's nightly 14-day call, whether it changed last night, the insights for and against it, and how the model's past calls on it did. Use it when someone asks how two to five US stocks stack up against each other, or which of them the model's calls read stronger. Each answer carries the not-advice line and the run date.
{
"type": "object",
"title": "compare_stocksArguments",
"required": [
"stocks"
],
"properties": {
"stocks": {
"type": "array",
"items": {
"type": "string"
},
"title": "Stocks",
"maxItems": 5,
"description": "Two to five US stocks, each by symbol (NVDA, BRK.B) or company name (Nvidia)"
}
}
}{
"type": "object",
"$defs": {
"Run": {
"type": "object",
"title": "Run",
"properties": {
"not_landed": {
"type": "boolean",
"title": "Not Landed",
"default": false,
"description": "True: tonight's run has not landed yet, so this is the previous run"
},
"generated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At",
"default": null
},
"trading_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Trading Date",
"default": null
}
}
},
"Call": {
"type": "object",
"title": "Call",
"required": [
"band",
"label",
"signal",
"for_count",
"against_count"
],
"properties": {
"band": {
"type": "string",
"title": "Band"
},
"label": {
"type": "string",
"title": "Label",
"description": "The call as the stock page's pill names it"
},
"signal": {
"type": "number",
"title": "Signal",
"description": "−1 bearish to +1 bullish"
},
"agreement": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Agreement",
"default": null
},
"for_count": {
"type": "integer",
"title": "For Count",
"description": "Insights for the call"
},
"confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Confidence",
"default": null,
"description": "0 low to 1 high"
},
"against_count": {
"type": "integer",
"title": "Against Count",
"description": "Insights against it"
}
}
},
"Price": {
"type": "object",
"title": "Price",
"properties": {
"on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "On",
"default": null,
"description": "The trading day"
},
"close": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Close",
"default": null,
"description": "The close of the run's trading day; the run is nightly"
},
"change_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Change Pct",
"default": null,
"description": "That day's change, in %"
},
"vs_index_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Vs Index Pct",
"default": null,
"description": "That day's change less the index's, in points"
}
}
},
"Missed": {
"type": "object",
"title": "Missed",
"required": [
"query",
"text"
],
"properties": {
"text": {
"type": "string",
"title": "Text",
"description": "Why it is not compared, as the answer says it"
},
"query": {
"type": "string",
"title": "Query"
},
"closest": {
"type": "array",
"items": {
"$ref": "#/$defs/Listing"
},
"title": "Closest",
"description": "The stocks it may have meant"
}
}
},
"Record": {
"type": "object",
"title": "Record",
"required": [
"text",
"hits",
"graded",
"too_few"
],
"properties": {
"hits": {
"type": "integer",
"title": "Hits"
},
"last": {
"anyOf": [
{
"$ref": "#/$defs/LastCall"
},
{
"type": "null"
}
],
"default": null,
"description": "The last graded call"
},
"line": {
"type": "string",
"title": "Line",
"default": "",
"description": "The record line alone: 'Right in h of k two-week windows on SYM since ... (as of ...).', or the too-few line"
},
"text": {
"type": "string",
"title": "Text",
"description": "The model's record on this stock, as the stock page says it: the counts of two-week windows and the chance line, or the too-few line"
},
"unit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Unit",
"default": null
},
"since": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Since",
"default": null
},
"chance": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Chance",
"default": null,
"description": "What a blind call on the same dates scored, a market number (never this stock's percentage); null without a base rate"
},
"graded": {
"type": "integer",
"title": "Graded",
"description": "Independent two-week windows graded"
},
"too_few": {
"type": "boolean",
"title": "Too Few",
"description": "True: too few two-week windows graded to judge yet, so no record is given"
},
"last_line": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Line",
"default": null,
"description": "The last graded call, as a sentence"
}
}
},
"Changed": {
"type": "object",
"title": "Changed",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"title": "Text"
},
"band_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band To",
"default": null
},
"flipped": {
"type": "integer",
"title": "Flipped",
"default": 0,
"description": "Insights that changed side"
},
"run_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Run Date",
"default": null
},
"band_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band From",
"default": null
}
}
},
"Listing": {
"type": "object",
"title": "Listing",
"required": [
"symbol",
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"name": {
"type": "string",
"title": "Name"
},
"symbol": {
"type": "string",
"title": "Symbol"
}
}
},
"LastCall": {
"type": "object",
"title": "LastCall",
"required": [
"date",
"called",
"verdict"
],
"properties": {
"date": {
"type": "string",
"title": "Date"
},
"called": {
"type": "string",
"title": "Called",
"description": "up or down"
},
"verdict": {
"type": "string",
"title": "Verdict",
"description": "right or wrong"
}
}
},
"CompareStock": {
"type": "object",
"title": "CompareStock",
"required": [
"symbol",
"name",
"price",
"call",
"last_night",
"changed",
"record",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url",
"description": "The stock's page on StockMap"
},
"call": {
"$ref": "#/$defs/Call"
},
"name": {
"type": "string",
"title": "Name"
},
"price": {
"$ref": "#/$defs/Price"
},
"record": {
"$ref": "#/$defs/Record"
},
"symbol": {
"type": "string",
"title": "Symbol",
"description": "As people write it (BRK.B)"
},
"changed": {
"$ref": "#/$defs/Changed"
},
"last_night": {
"type": "string",
"title": "Last Night",
"description": "The last-night column: Unchanged, or up or down from the band it left"
}
}
}
},
"title": "CompareAnswer",
"required": [
"queries",
"stocks",
"covers",
"run"
],
"properties": {
"run": {
"$ref": "#/$defs/Run"
},
"covers": {
"type": "integer",
"title": "Covers",
"description": "How many stocks StockMap calls"
},
"missed": {
"type": "array",
"items": {
"$ref": "#/$defs/Missed"
},
"title": "Missed"
},
"stocks": {
"type": "array",
"items": {
"$ref": "#/$defs/CompareStock"
},
"title": "Stocks",
"description": "In the order asked, each once"
},
"queries": {
"type": "array",
"items": {
"type": "string"
},
"title": "Queries"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "The model's track-recorded read, not financial advice."
}
}
}{
"title": "Compare stocks",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}last_night — Last night
What changed in StockMap's calls last night: how many stocks' calls changed band on the market map and the biggest of them, the calls graded last night (made 14 days earlier) with one line on why each was right or wrong, and when the next run starts. Each answer carries the not-advice line and the run date.
{
"type": "object",
"title": "last_nightArguments",
"properties": {}
}{
"type": "object",
"$defs": {
"Run": {
"type": "object",
"title": "Run",
"properties": {
"not_landed": {
"type": "boolean",
"title": "Not Landed",
"default": false,
"description": "True: tonight's run has not landed yet, so this is the previous run"
},
"generated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At",
"default": null
},
"trading_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Trading Date",
"default": null
}
}
},
"Grade": {
"type": "object",
"title": "Grade",
"required": [
"symbol",
"called",
"verdict",
"why"
],
"properties": {
"why": {
"type": "string",
"title": "Why",
"description": "One line on why the call was right or wrong"
},
"date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Date",
"default": null,
"description": "The day the call was made; it is graded 14 days later"
},
"called": {
"type": "string",
"title": "Called",
"description": "bullish or bearish"
},
"symbol": {
"type": "string",
"title": "Symbol"
},
"verdict": {
"enum": [
"hit",
"miss"
],
"type": "string",
"title": "Verdict"
}
}
},
"Graded": {
"type": "object",
"title": "Graded",
"required": [
"n",
"right",
"wrong"
],
"properties": {
"n": {
"type": "integer",
"title": "N"
},
"right": {
"type": "integer",
"title": "Right"
},
"wrong": {
"type": "integer",
"title": "Wrong"
},
"chance": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Chance",
"default": null,
"description": "The base rate as one sentence, or None when there is none"
},
"base_rate_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Base Rate Pct",
"default": null,
"description": "How often a blind call on the same dates was right, over all stocks (a market number, not a score of these calls)"
}
}
},
"BandChange": {
"type": "object",
"title": "BandChange",
"required": [
"symbol",
"to",
"url"
],
"properties": {
"to": {
"type": "string",
"title": "To",
"description": "The band the stock's call moved to, as the map paints it"
},
"url": {
"type": "string",
"title": "Url"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"default": null
},
"arrow": {
"anyOf": [
{
"enum": [
"▲",
"▼"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Arrow",
"default": null,
"description": "▲ the call moved up the band order, ▼ down; none when the band it left is not known"
},
"symbol": {
"type": "string",
"title": "Symbol"
},
"band_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band From",
"default": null,
"description": "The band the stock's call left, when the feed records it"
}
}
}
},
"title": "LastNightAnswer",
"required": [
"run",
"run_in_flight",
"changes",
"more_changes",
"grades"
],
"properties": {
"run": {
"$ref": "#/$defs/Run",
"description": "The run the night is from: the day it ran and the close it called from"
},
"graded": {
"anyOf": [
{
"$ref": "#/$defs/Graded"
},
{
"type": "null"
}
],
"default": null,
"description": "The calls graded last night"
},
"grades": {
"type": "array",
"items": {
"$ref": "#/$defs/Grade"
},
"title": "Grades"
},
"changes": {
"type": "array",
"items": {
"$ref": "#/$defs/BandChange"
},
"title": "Changes",
"description": "The biggest of them by market cap"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "The model's track-recorded read, not financial advice."
},
"record_url": {
"type": "string",
"title": "Record Url",
"default": "https://stockmap.io/track-record"
},
"calls_issued": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Calls Issued",
"default": null,
"description": "Calls the run made"
},
"more_changes": {
"type": "integer",
"title": "More Changes",
"description": "The changes not listed; all of them are on /what-changed"
},
"next_run_utc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Next Run Utc",
"default": null,
"description": "When the next run starts"
},
"run_in_flight": {
"type": "boolean",
"title": "Run In Flight",
"description": "True: tonight's run has not landed yet, so this is the previous night (B2's name for run.not_landed)"
},
"changed_on_map": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Changed On Map",
"default": null,
"description": "Stocks whose call changed band on the map"
},
"all_changes_url": {
"type": "string",
"title": "All Changes Url",
"default": "https://stockmap.io/what-changed"
}
}
}{
"title": "Last night",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}market_map — Market map
The US stock market on StockMap's map: the 11 sectors, each with its share of the market, its 2-week lean from the model's nightly calls on its stocks, its move on the day and its best and worst stock. A summary, not every stock. Use it when someone asks how the US market looks, or which sectors lead or lag. Each answer carries the not-advice line and the run date.
{
"type": "object",
"title": "market_mapArguments",
"properties": {}
}{
"type": "object",
"$defs": {
"Run": {
"type": "object",
"title": "Run",
"properties": {
"not_landed": {
"type": "boolean",
"title": "Not Landed",
"default": false,
"description": "True: tonight's run has not landed yet, so this is the previous run"
},
"generated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At",
"default": null
},
"trading_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Trading Date",
"default": null
}
}
},
"Mover": {
"type": "object",
"title": "Mover",
"required": [
"symbol",
"name",
"change_pct",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"name": {
"type": "string",
"title": "Name"
},
"symbol": {
"type": "string",
"title": "Symbol",
"description": "As people write it (BRK.B)"
},
"change_pct": {
"type": "number",
"title": "Change Pct",
"description": "Its move on the day, in %"
}
}
},
"MapSector": {
"type": "object",
"title": "MapSector",
"required": [
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band",
"default": null,
"description": "The lean's band on the map"
},
"best": {
"anyOf": [
{
"$ref": "#/$defs/Mover"
},
{
"type": "null"
}
],
"default": null,
"description": "Its stock that rose most on the day"
},
"lean": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Lean",
"default": null,
"description": "The 2-week lean, −100 to +100: the cap-weighted mean of its stocks' calls, the block's colour; None when none of them has a call"
},
"name": {
"type": "string",
"title": "Name"
},
"worst": {
"anyOf": [
{
"$ref": "#/$defs/Mover"
},
{
"type": "null"
}
],
"default": null,
"description": "Its stock that fell most on the day"
},
"stocks": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Stocks",
"default": null
},
"move_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Move Pct",
"default": null,
"description": "Its cap-weighted move on the day, in %"
},
"weight_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Weight Pct",
"default": null,
"description": "Its share of the market's cap, in %: the block's size"
}
}
}
},
"title": "MarketMapAnswer",
"required": [
"sectors",
"stocks",
"run"
],
"properties": {
"run": {
"$ref": "#/$defs/Run"
},
"stocks": {
"type": "integer",
"title": "Stocks",
"description": "The stocks on the map"
},
"map_url": {
"type": "string",
"title": "Map Url",
"default": "https://stockmap.io/heatmap"
},
"sectors": {
"type": "array",
"items": {
"$ref": "#/$defs/MapSector"
},
"title": "Sectors",
"description": "Biggest first"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "The model's track-recorded read, not financial advice."
},
"sectors_url": {
"type": "string",
"title": "Sectors Url",
"default": "https://stockmap.io/sectors"
}
}
}{
"title": "Market map",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}sector — Sector
StockMap's read of one US sector or industry, by name (Information Technology, semiconductors, banks): its 2-week lean from the model's nightly calls, how its stocks' calls split, its industries, and its largest stocks with each one's call and move on the day. Use it when someone asks how a US sector or industry looks, or which of its stocks look strong or weak. Each answer carries the not-advice line and the run date.
{
"type": "object",
"title": "sectorArguments",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "A US sector or industry by name: Information Technology, Health Care, semiconductors, banks, software"
}
}
}{
"type": "object",
"$defs": {
"Run": {
"type": "object",
"title": "Run",
"properties": {
"not_landed": {
"type": "boolean",
"title": "Not Landed",
"default": false,
"description": "True: tonight's run has not landed yet, so this is the previous run"
},
"generated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At",
"default": null
},
"trading_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Trading Date",
"default": null
}
}
},
"Listing": {
"type": "object",
"title": "Listing",
"required": [
"kind",
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"kind": {
"enum": [
"sector",
"industry"
],
"type": "string",
"title": "Kind"
},
"name": {
"type": "string",
"title": "Name"
}
}
},
"Industry": {
"type": "object",
"title": "Industry",
"required": [
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band",
"default": null
},
"lean": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Lean",
"default": null
},
"name": {
"type": "string",
"title": "Name"
},
"stocks": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Stocks",
"default": null
}
}
},
"ScopeRead": {
"type": "object",
"title": "ScopeRead",
"required": [
"kind",
"name",
"largest",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band",
"default": null,
"description": "The lean's band on the map"
},
"kind": {
"enum": [
"sector",
"industry"
],
"type": "string",
"title": "Kind"
},
"lean": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Lean",
"default": null,
"description": "The 2-week lean, −100 to +100: the cap-weighted mean of its stocks' calls; None when none of them has a call"
},
"name": {
"type": "string",
"title": "Name"
},
"split": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Split",
"default": null,
"description": "How its stocks' calls split, in the page's words"
},
"sector": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sector",
"default": null,
"description": "An industry's sector"
},
"stocks": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Stocks",
"default": null
},
"largest": {
"type": "array",
"items": {
"$ref": "#/$defs/SectorStock"
},
"title": "Largest",
"description": "Its largest stocks by market cap: 10 signed in, 3 otherwise"
},
"industries": {
"type": "array",
"items": {
"$ref": "#/$defs/Industry"
},
"title": "Industries",
"description": "A sector's industries, biggest first"
},
"market_cap": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Market Cap",
"default": null,
"description": "As the page writes it ($31.0T)"
},
"market_share_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Market Share Pct",
"default": null,
"description": "A sector's share of the market's cap, in %"
}
}
},
"SectorStock": {
"type": "object",
"title": "SectorStock",
"required": [
"symbol",
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band",
"default": null,
"description": "The call's band on the map"
},
"lean": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Lean",
"default": null,
"description": "The model's call as a lean, −100 to +100; None: no call"
},
"name": {
"type": "string",
"title": "Name"
},
"symbol": {
"type": "string",
"title": "Symbol",
"description": "As people write it (BRK.B)"
},
"move_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Move Pct",
"default": null,
"description": "Its move on the day, in %"
},
"band_changed": {
"type": "boolean",
"title": "Band Changed",
"default": false,
"description": "True: its band on the map changed last night"
}
}
}
},
"title": "SectorAnswer",
"required": [
"query",
"run"
],
"properties": {
"run": {
"$ref": "#/$defs/Run"
},
"query": {
"type": "string",
"title": "Query"
},
"scope": {
"anyOf": [
{
"$ref": "#/$defs/ScopeRead"
},
{
"type": "null"
}
],
"default": null,
"description": "None when no one sector or industry matched"
},
"closest": {
"type": "array",
"items": {
"$ref": "#/$defs/Listing"
},
"title": "Closest",
"description": "The sectors and industries it may have meant"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "The model's track-recorded read, not financial advice."
}
}
}{
"title": "Sector",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}crypto_today — Crypto today
Why crypto is up or down today, from StockMap's Crypto today page: Bitcoin's 24-hour move, how many coins beat it, funding, and the hour's paragraph, every number with its source. Market data with no call on any coin. Each answer carries the stamp, the sources and the not-advice line.
{
"type": "object",
"title": "crypto_todayArguments",
"properties": {}
}{
"type": "object",
"$defs": {
"CryptoNumber": {
"type": "object",
"title": "CryptoNumber",
"required": [
"label",
"value",
"source"
],
"properties": {
"sub": {
"type": "string",
"title": "Sub",
"default": ""
},
"label": {
"type": "string",
"title": "Label"
},
"value": {
"type": "string",
"title": "Value",
"description": "As the page prints it (\"−0.1 %\", \"28 of 83\")"
},
"source": {
"type": "string",
"title": "Source",
"description": "Where the number comes from (CoinGecko, OKX, alternative.me, StockMap model)"
}
}
}
},
"title": "CryptoAnswer",
"required": [
"question",
"answer_text",
"sentences",
"numbers",
"stamp",
"source_names",
"page_url",
"stale"
],
"properties": {
"card": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Card",
"default": null,
"description": "The page's share card data, with its image URLs (C-1b)"
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of",
"default": null,
"description": "The feed's time, ISO 8601 UTC"
},
"stale": {
"type": "boolean",
"title": "Stale",
"description": "True when the feed is behind: the page shows the same numbers under a banner"
},
"stamp": {
"type": "string",
"title": "Stamp",
"description": "When the numbers are from, as the page stamps them; two clocks give two stamps"
},
"numbers": {
"type": "array",
"items": {
"$ref": "#/$defs/CryptoNumber"
},
"title": "Numbers",
"description": "The page's tiles"
},
"page_url": {
"type": "string",
"title": "Page Url"
},
"question": {
"type": "string",
"title": "Question"
},
"sentences": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sentences"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "We don't tell you what to buy. Research and education, not investment advice."
},
"answer_text": {
"type": "string",
"title": "Answer Text",
"description": "The page's own sentences, joined"
},
"source_names": {
"type": "array",
"items": {
"type": "string"
},
"title": "Source Names"
},
"stale_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Stale Reason",
"default": null
}
}
}{
"title": "Crypto today",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}is_it_altseason — Is it altseason?
Is it altseason: how many of the top-100 coins (stablecoins out) beat Bitcoin over the last 7 days, beside how many lag it in a typical week, from StockMap's Altseason page. Market data with no call on any coin. Each answer carries the stamp, the sources and the not-advice line.
{
"type": "object",
"title": "is_it_altseasonArguments",
"properties": {}
}{
"type": "object",
"$defs": {
"CryptoNumber": {
"type": "object",
"title": "CryptoNumber",
"required": [
"label",
"value",
"source"
],
"properties": {
"sub": {
"type": "string",
"title": "Sub",
"default": ""
},
"label": {
"type": "string",
"title": "Label"
},
"value": {
"type": "string",
"title": "Value",
"description": "As the page prints it (\"−0.1 %\", \"28 of 83\")"
},
"source": {
"type": "string",
"title": "Source",
"description": "Where the number comes from (CoinGecko, OKX, alternative.me, StockMap model)"
}
}
}
},
"title": "CryptoAnswer",
"required": [
"question",
"answer_text",
"sentences",
"numbers",
"stamp",
"source_names",
"page_url",
"stale"
],
"properties": {
"card": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Card",
"default": null,
"description": "The page's share card data, with its image URLs (C-1b)"
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of",
"default": null,
"description": "The feed's time, ISO 8601 UTC"
},
"stale": {
"type": "boolean",
"title": "Stale",
"description": "True when the feed is behind: the page shows the same numbers under a banner"
},
"stamp": {
"type": "string",
"title": "Stamp",
"description": "When the numbers are from, as the page stamps them; two clocks give two stamps"
},
"numbers": {
"type": "array",
"items": {
"$ref": "#/$defs/CryptoNumber"
},
"title": "Numbers",
"description": "The page's tiles"
},
"page_url": {
"type": "string",
"title": "Page Url"
},
"question": {
"type": "string",
"title": "Question"
},
"sentences": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sentences"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "We don't tell you what to buy. Research and education, not investment advice."
},
"answer_text": {
"type": "string",
"title": "Answer Text",
"description": "The page's own sentences, joined"
},
"source_names": {
"type": "array",
"items": {
"type": "string"
},
"title": "Source Names"
},
"stale_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Stale Reason",
"default": null
}
}
}{
"title": "Is it altseason?",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}crypto_stocks — Crypto stocks
Which US crypto stocks StockMap's model leans on: how many it leans outperform, neutral or underperform, how many of its graded two-week windows on them were right, and Bitcoin's move since the last US close. The calls are the stock model's, on the stocks, never on coins. Each answer carries the stamp, the sources and the not-advice line.
{
"type": "object",
"title": "crypto_stocksArguments",
"properties": {}
}{
"type": "object",
"$defs": {
"CryptoNumber": {
"type": "object",
"title": "CryptoNumber",
"required": [
"label",
"value",
"source"
],
"properties": {
"sub": {
"type": "string",
"title": "Sub",
"default": ""
},
"label": {
"type": "string",
"title": "Label"
},
"value": {
"type": "string",
"title": "Value",
"description": "As the page prints it (\"−0.1 %\", \"28 of 83\")"
},
"source": {
"type": "string",
"title": "Source",
"description": "Where the number comes from (CoinGecko, OKX, alternative.me, StockMap model)"
}
}
}
},
"title": "CryptoAnswer",
"required": [
"question",
"answer_text",
"sentences",
"numbers",
"stamp",
"source_names",
"page_url",
"stale"
],
"properties": {
"card": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Card",
"default": null,
"description": "The page's share card data, with its image URLs (C-1b)"
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of",
"default": null,
"description": "The feed's time, ISO 8601 UTC"
},
"stale": {
"type": "boolean",
"title": "Stale",
"description": "True when the feed is behind: the page shows the same numbers under a banner"
},
"stamp": {
"type": "string",
"title": "Stamp",
"description": "When the numbers are from, as the page stamps them; two clocks give two stamps"
},
"numbers": {
"type": "array",
"items": {
"$ref": "#/$defs/CryptoNumber"
},
"title": "Numbers",
"description": "The page's tiles"
},
"page_url": {
"type": "string",
"title": "Page Url"
},
"question": {
"type": "string",
"title": "Question"
},
"sentences": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sentences"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "We don't tell you what to buy. Research and education, not investment advice."
},
"answer_text": {
"type": "string",
"title": "Answer Text",
"description": "The page's own sentences, joined"
},
"source_names": {
"type": "array",
"items": {
"type": "string"
},
"title": "Source Names"
},
"stale_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Stale Reason",
"default": null
}
}
}{
"title": "Crypto stocks",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}bitcoin_test — Did my coins beat Bitcoin?
Did the person's coins beat Bitcoin: their holdings as they would paste them on StockMap's Bitcoin test page ("ETH 2, SOL 40 since Jan 15"), priced then and now beside the same dollars held in Bitcoin, from CoinGecko's prices. Nothing is stored. Arithmetic on past prices: no call on any coin, and no advice on the holdings. Each answer carries the stamp, the sources and the not-advice line.
{
"type": "object",
"title": "bitcoin_testArguments",
"required": [
"holdings"
],
"properties": {
"since": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Since",
"default": null,
"description": "When they bought, for holdings the paste gives no date (the page's \"Held since\"), YYYY-MM-DD"
},
"holdings": {
"type": "string",
"title": "Holdings",
"maxLength": 4000,
"minLength": 1,
"description": "The coins and amounts as the person would paste them, with a date if they gave one: \"ETH 2, SOL 40, DOGE 10000 since Jan 15\""
}
}
}{
"type": "object",
"$defs": {
"CryptoNumber": {
"type": "object",
"title": "CryptoNumber",
"required": [
"label",
"value",
"source"
],
"properties": {
"sub": {
"type": "string",
"title": "Sub",
"default": ""
},
"label": {
"type": "string",
"title": "Label"
},
"value": {
"type": "string",
"title": "Value",
"description": "As the page prints it (\"−0.1 %\", \"28 of 83\")"
},
"source": {
"type": "string",
"title": "Source",
"description": "Where the number comes from (CoinGecko, OKX, alternative.me, StockMap model)"
}
}
}
},
"title": "CryptoAnswer",
"required": [
"question",
"answer_text",
"sentences",
"numbers",
"stamp",
"source_names",
"page_url",
"stale"
],
"properties": {
"card": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Card",
"default": null,
"description": "The page's share card data, with its image URLs (C-1b)"
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of",
"default": null,
"description": "The feed's time, ISO 8601 UTC"
},
"stale": {
"type": "boolean",
"title": "Stale",
"description": "True when the feed is behind: the page shows the same numbers under a banner"
},
"stamp": {
"type": "string",
"title": "Stamp",
"description": "When the numbers are from, as the page stamps them; two clocks give two stamps"
},
"numbers": {
"type": "array",
"items": {
"$ref": "#/$defs/CryptoNumber"
},
"title": "Numbers",
"description": "The page's tiles"
},
"page_url": {
"type": "string",
"title": "Page Url"
},
"question": {
"type": "string",
"title": "Question"
},
"sentences": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sentences"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "We don't tell you what to buy. Research and education, not investment advice."
},
"answer_text": {
"type": "string",
"title": "Answer Text",
"description": "The page's own sentences, joined"
},
"source_names": {
"type": "array",
"items": {
"type": "string"
},
"title": "Source Names"
},
"stale_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Stale Reason",
"default": null
}
}
}{
"title": "Did my coins beat Bitcoin?",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}my_watchlists — My watchlists
The signed-in person's StockMap watchlists: each list's stocks with the model's published call on each (the same call every reader sees), the calls that changed last night first. Each answer carries the not-advice line and the run date.
{
"type": "object",
"title": "my_watchlistsArguments",
"properties": {}
}{
"type": "object",
"$defs": {
"Run": {
"type": "object",
"title": "Run",
"properties": {
"not_landed": {
"type": "boolean",
"title": "Not Landed",
"default": false,
"description": "True: tonight's run has not landed yet, so this is the previous run"
},
"generated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At",
"default": null
},
"trading_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Trading Date",
"default": null
}
}
},
"Watched": {
"type": "object",
"title": "Watched",
"required": [
"symbol",
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"call": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Call",
"default": null,
"description": "The model's call, as the watchlist shows it; None: no call this run"
},
"name": {
"type": "string",
"title": "Name"
},
"signal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Signal",
"default": null,
"description": "The call's signal, −100 to +100"
},
"symbol": {
"type": "string",
"title": "Symbol",
"description": "As people write it (BRK.B)"
},
"changed_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Changed From",
"default": null,
"description": "The call before last night, when last night changed it"
}
}
},
"WatchList": {
"type": "object",
"title": "WatchList",
"required": [
"name",
"stocks",
"changed"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"stocks": {
"type": "array",
"items": {
"$ref": "#/$defs/Watched"
},
"title": "Stocks",
"description": "The calls that changed last night first, then in the list's order"
},
"changed": {
"type": "integer",
"title": "Changed",
"description": "Its stocks whose call changed last night"
},
"read_only": {
"type": "boolean",
"title": "Read Only",
"default": false,
"description": "Beyond the plan's number of lists: it keeps its stocks, takes no more"
}
}
}
},
"title": "WatchlistsAnswer",
"required": [
"lists",
"run"
],
"properties": {
"run": {
"$ref": "#/$defs/Run"
},
"url": {
"type": "string",
"title": "Url",
"default": "https://stockmap.io/watchlist"
},
"lists": {
"type": "array",
"items": {
"$ref": "#/$defs/WatchList"
},
"title": "Lists"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "The model's track-recorded read, not financial advice."
}
}
}{
"title": "My watchlists",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}watch — Watch a stock
Add a US stock to the signed-in person's StockMap watchlist: to the list named (made if it is new) or their first list. A stock is on one list at a time, so naming another list moves it.
{
"type": "object",
"title": "watchArguments",
"required": [
"stock"
],
"properties": {
"stock": {
"type": "string",
"title": "Stock",
"description": "A US stock's symbol (NVDA, BRK.B) or its company name (Nvidia)"
},
"watchlist": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Watchlist",
"default": null,
"description": "The list's name, made if the person has none by that name; left out, their first list"
}
}
}{
"type": "object",
"$defs": {
"Run": {
"type": "object",
"title": "Run",
"properties": {
"not_landed": {
"type": "boolean",
"title": "Not Landed",
"default": false,
"description": "True: tonight's run has not landed yet, so this is the previous run"
},
"generated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At",
"default": null
},
"trading_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Trading Date",
"default": null
}
}
},
"Watched": {
"type": "object",
"title": "Watched",
"required": [
"symbol",
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"call": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Call",
"default": null,
"description": "The model's call, as the watchlist shows it; None: no call this run"
},
"name": {
"type": "string",
"title": "Name"
},
"signal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Signal",
"default": null,
"description": "The call's signal, −100 to +100"
},
"symbol": {
"type": "string",
"title": "Symbol",
"description": "As people write it (BRK.B)"
},
"changed_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Changed From",
"default": null,
"description": "The call before last night, when last night changed it"
}
}
}
},
"title": "WatchAnswer",
"required": [
"stock",
"list",
"run"
],
"properties": {
"run": {
"$ref": "#/$defs/Run"
},
"url": {
"type": "string",
"title": "Url",
"default": "https://stockmap.io/watchlist"
},
"list": {
"type": "string",
"title": "List",
"description": "The list it is on now"
},
"stock": {
"$ref": "#/$defs/Watched"
},
"already": {
"type": "boolean",
"title": "Already",
"default": false,
"description": "True: it was on that list already, and nothing changed"
},
"moved_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Moved From",
"default": null,
"description": "The list it was moved off, if it was on another"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "The model's track-recorded read, not financial advice."
}
}
}{
"title": "Watch a stock",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}unwatch — Stop watching a stock
Remove a US stock from the signed-in person's StockMap watchlists.
{
"type": "object",
"title": "unwatchArguments",
"required": [
"stock"
],
"properties": {
"stock": {
"type": "string",
"title": "Stock",
"description": "A US stock's symbol (NVDA, BRK.B) or its company name (Nvidia)"
}
}
}{
"type": "object",
"$defs": {
"Run": {
"type": "object",
"title": "Run",
"properties": {
"not_landed": {
"type": "boolean",
"title": "Not Landed",
"default": false,
"description": "True: tonight's run has not landed yet, so this is the previous run"
},
"generated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At",
"default": null
},
"trading_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Trading Date",
"default": null
}
}
},
"Watched": {
"type": "object",
"title": "Watched",
"required": [
"symbol",
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"call": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Call",
"default": null,
"description": "The model's call, as the watchlist shows it; None: no call this run"
},
"name": {
"type": "string",
"title": "Name"
},
"signal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Signal",
"default": null,
"description": "The call's signal, −100 to +100"
},
"symbol": {
"type": "string",
"title": "Symbol",
"description": "As people write it (BRK.B)"
},
"changed_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Changed From",
"default": null,
"description": "The call before last night, when last night changed it"
}
}
}
},
"title": "UnwatchAnswer",
"required": [
"stock",
"run"
],
"properties": {
"run": {
"$ref": "#/$defs/Run"
},
"url": {
"type": "string",
"title": "Url",
"default": "https://stockmap.io/watchlist"
},
"stock": {
"$ref": "#/$defs/Watched"
},
"not_advice": {
"type": "string",
"title": "Not Advice",
"default": "The model's track-recorded read, not financial advice."
},
"removed_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Removed From",
"default": null,
"description": "The list it was taken off; None: it was on none"
}
}
}{
"title": "Stop watching a stock",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}Prompts
0 advertised
Resources
8 advertised
stock — Stock call
The model's track-recorded call, reasons for and against, price and record for one stock
ui://stockmap/stock.htmlcompare — Compare stocks
StockMap's calls on two to five US stocks side by side: call, last night, for · against, and record
ui://stockmap/compare.htmllast_night — Last night
What changed in StockMap's calls last night: calls changed on the map and the night's graded calls
ui://stockmap/last_night.htmlmap — Market map
The US market on StockMap's map: the 11 sectors sized by their share of the market and coloured by the model's 2-week lean
ui://stockmap/map.htmlwatchlist — Watchlist
The signed-in person's StockMap watchlists: each list's stocks with the model's call, the calls that changed last night first
ui://stockmap/watchlist.htmlcrypto_today — Crypto today
Why crypto is up or down today: Bitcoin's move, breadth, funding, and the hour's paragraph
ui://stockmap/crypto_today.htmlcrypto_altseason — Is it altseason?
Whether it is altseason: top-100 coins beating Bitcoin over 7 days, beside the typical-week base rate
ui://stockmap/crypto_altseason.htmlcrypto_stocks — Crypto stocks
US crypto-exposed stocks with the model's lean, graded record and Bitcoin's move since the US close
ui://stockmap/crypto_stocks.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 723 ms
- 95th percentile latency
- 723 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 723 ms · metadata changed · 12 tool(s), 8 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http stockmap-mcp https://stockmap.io/mcpCodex
codex mcp add stockmap-mcp --url https://stockmap.io/mcpCursor
{
"mcpServers": {
"stockmap-mcp": {
"url": "https://stockmap.io/mcp"
}
}
}Cline
{
"mcpServers": {
"stockmap-mcp": {
"type": "streamableHttp",
"url": "https://stockmap.io/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"stockmap-mcp": {
"type": "http",
"url": "https://stockmap.io/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http stockmap-mcp https://stockmap.io/mcpClaude Desktop
{
"mcpServers": {
"stockmap-mcp": {
"url": "https://stockmap.io/mcp"
}
}
}Windsurf
{
"mcpServers": {
"stockmap-mcp": {
"serverUrl": "https://stockmap.io/mcp"
}
}
}Let your agent find its tools
Find servers like StockMap MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run StockMap MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.