mkts Market Data MCP
A read-only Streamable HTTP tool server providing access to market data for stocks, ETFs, crypto, and commodities. It supports live quotes, fundamentals, SEC filings, options chains, historical prices, and point-in-time archives for financial analysis and agent integration.
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://mkts.io/api/mcpWhat you can do with it
- Retrieve live quotes and market overviews
- Access stock fundamentals and SEC filings
- Query historical prices and options chains
- Perform point-in-time backtesting
Source and maintenance
Protocol and capabilities
- Server
- mkts 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 15 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
15 advertised
compare_assets — Compare assets
Compare 2 to 10 market symbols using the same normalized mkts snapshot. Returns requested and resolved symbols plus normalized asset records with provenance metadata.
{
"type": "object",
"required": [
"symbols"
],
"properties": {
"symbols": {
"type": "array",
"items": {
"type": "string",
"maxLength": 25
},
"maxItems": 10,
"minItems": 2,
"description": "Ticker symbols such as AAPL, MSFT, BTC, or EUR/USD."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_archive_series — Get archived daily closes for many symbols over a date range
Get what mkts recorded for up to 100 symbols on every day in a date range, from the immutable point-in-time archive. This is the shape a portfolio backtest actually needs — N symbols by M days in one call, where get_asset_series would take one call per holding and get_assets_as_of one per day. Each row carries observedAt and isRevision, so a later restatement stays visible rather than replacing the original. Days the market was shut are absent, not zero-filled. Limits: 366 days, and symbols multiplied by days must not exceed 10000.
{
"type": "object",
"required": [
"symbols",
"from"
],
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last date, YYYY-MM-DD. Defaults to today."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First date, YYYY-MM-DD."
},
"symbols": {
"type": "array",
"items": {
"type": "string",
"maxLength": 25
},
"maxItems": 100,
"minItems": 1,
"description": "Symbols to fetch, e.g. [\"AAPL\",\"MSFT\",\"BTC\"]."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_asset_intraday — Get intraday observations within a window
Get every price observation mkts made of one symbol inside a time window, rather than just the daily close. Use for intraday movement, timing questions, or checking what a price was doing during a session; use get_asset_series instead for daily closes over months. Cadence is not uniform across the archive — roughly 15 minutes since March 2026 and much sparser before — so the response reports observedIntervalMinutes for the window you asked for, and you should read it before treating the data as fixed bars. interval buckets the result, keeping the last observation in each bucket. Maximum window 92 days; intraday reaches back further on paid tiers.
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"to": {
"type": "string",
"description": "ISO 8601 timestamp or YYYY-MM-DD. Defaults to now."
},
"from": {
"type": "string",
"description": "ISO 8601 timestamp or YYYY-MM-DD. Defaults to 24 hours before \"to\"."
},
"type": {
"enum": [
"stock",
"etf",
"crypto",
"commodity",
"forex"
],
"type": "string",
"description": "Only needed when a ticker is shared across asset types. Omit to get the larger by market cap."
},
"symbol": {
"type": "string",
"maxLength": 25,
"description": "Ticker, e.g. BTC, AAPL, EUR/USD."
},
"interval": {
"enum": [
"raw",
"15m",
"1h",
"4h",
"1d"
],
"type": "string",
"default": "1h",
"description": "Bucket size; each bucket keeps its last observation. raw returns every observation without bucketing."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_asset_profile — Get asset profile
Look up one asset by symbol and return what it is and where it stands: name, asset type, price, 24h percent change, market cap, 24h volume, sector for stocks and ETFs, supply figures for crypto, and when it was last observed. Served from the mkts snapshot, which refreshes about every 15 minutes, so it is fast and the default for "what is X" or "how is X doing". Use get_asset_quote instead when the user needs the latest print or intraday detail such as day high and low or pre- and post-market prices; use get_assets_bulk for several symbols at once.
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"type": {
"enum": [
"stock",
"etf",
"crypto",
"commodity",
"forex"
],
"type": "string",
"description": "Only needed when a ticker is shared across asset types. Omit to get the larger by market cap."
},
"symbol": {
"type": "string",
"maxLength": 25,
"description": "Ticker as commonly written: AAPL, BTC, SPY, GC=F for gold futures, EUR/USD for forex, HL-HYPE-PERP for a Hyperliquid perpetual."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_asset_quote — Get current asset quote
Get a current quote for a stock, ETF, cryptocurrency, commodity, or forex pair. Returns price fields, market state when available, an observation timestamp, and upstream source.
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"type": {
"enum": [
"auto",
"stock",
"etf",
"crypto",
"commodity",
"forex"
],
"type": "string",
"default": "auto",
"description": "auto picks the asset the symbol most commonly means (the larger by market cap when a ticker is shared, e.g. META the stock over MetaDAO); set a type to pick the other."
},
"symbol": {
"type": "string",
"maxLength": 25,
"description": "Ticker, coin ID, or forex pair."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_asset_series — Get archived daily closes over a date range
Get what mkts recorded for one symbol on every day in a date range, from the immutable point-in-time archive. Use this for backtesting rather than calling get_assets_as_of once per day — a 90-day study is one call here and 90 there. Distinct from get_price_history, which fetches OHLCV live from upstream providers: this returns what was observed at the time, with observedAt and isRevision per row, so a later restatement is visible instead of silently replacing the original. Days the market was shut are absent rather than zero-filled. Maximum range 366 days.
{
"type": "object",
"required": [
"symbol",
"from"
],
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last date in the range, YYYY-MM-DD. Defaults to today."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First date in the range, YYYY-MM-DD."
},
"type": {
"enum": [
"stock",
"etf",
"crypto",
"commodity",
"forex"
],
"type": "string",
"description": "Only needed when a ticker is shared across asset types. Omit to get the larger by market cap."
},
"symbol": {
"type": "string",
"maxLength": 25,
"description": "Ticker or mkts symbol."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_assets_as_of — Get assets as of a past date
Get what mkts recorded about one or more symbols on a specific past date, from the immutable point-in-time archive. Pass a single symbol or up to 100. Use for backtesting, reconstructing a past decision, or checking whether a figure was later revised — not for current prices, which get_assets_bulk serves. Revisions recorded after the requested date are excluded, so results never leak hindsight into a historical decision. Check isExactDate on each result: false means the market was closed and the most recent earlier observation was returned instead.
{
"type": "object",
"required": [
"symbols",
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "The date to look up, YYYY-MM-DD."
},
"symbols": {
"type": "array",
"items": {
"type": "string",
"maxLength": 25
},
"maxItems": 100,
"minItems": 1,
"description": "One or more symbols, e.g. [\"AAPL\"] or [\"AAPL\",\"MSFT\",\"BTC\"]."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_assets_bulk — Get many assets at once
Get current data for an explicit list of up to 100 symbols in a single call. Use this instead of calling get_asset_quote repeatedly — a watchlist fetched one symbol at a time exhausts the rate limit for no benefit. Returns the resolved assets plus unresolvedSymbols naming anything not tracked, so a short list is never silently short.
{
"type": "object",
"required": [
"symbols"
],
"properties": {
"symbols": {
"type": "array",
"items": {
"type": "string",
"maxLength": 25
},
"maxItems": 100,
"minItems": 1,
"description": "Ticker symbols, e.g. [\"AAPL\",\"BTC\",\"EUR/USD\"]."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_filings — Get company filings
List recent SEC filings for a US-listed company or fund, newest first, from SEC EDGAR. Each filing has its date, form type, a plain-language title (for 8-Ks, the events reported), the period it covers, and links to the EDGAR index page and the main document. Use to find the latest 10-K, 10-Q or 8-K, or to see what a company has filed recently. Insider-ownership forms (3, 4, 5, 144) are not included. A fund trust files for all its funds together; sharedFiler in the result marks this, and some filings may concern sibling funds.
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"type": {
"type": "string",
"maxLength": 12,
"minLength": 1,
"description": "Only filings of this exact SEC form type, e.g. 10-K (annual report), 10-Q (quarterly report), 8-K (current report), DEF 14A (proxy statement). Omit for all types."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1,
"description": "Maximum filings to return, newest first."
},
"symbol": {
"type": "string",
"maxLength": 25,
"description": "US ticker of a stock or ETF, e.g. NVDA, BRK-B, SPY."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_fundamentals — Get company fundamentals
Get annual or quarterly financial-statement time series for a stock: income statement, balance sheet and cash flow, built from the company's own SEC filings (source "sec-edgar"), or from the equities provider for funds and companies EDGAR does not cover. Values are in the reporting currency the response names, which is not always USD. Modules can return all statements or a smaller financials, balance-sheet, or cash-flow payload.
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"module": {
"enum": [
"all",
"financials",
"balance-sheet",
"cash-flow"
],
"type": "string",
"default": "all",
"description": "financials is the income statement (revenue, margins, EPS); choose one module for a smaller response, or all for every statement."
},
"period": {
"enum": [
"annual",
"quarterly"
],
"type": "string",
"default": "annual",
"description": "Fiscal years or fiscal quarters."
},
"symbol": {
"type": "string",
"maxLength": 25,
"description": "US stock or ETF ticker, e.g. MSFT."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_macro_snapshot — Get macro snapshot
Get the current mkts macro dashboard, including major equity proxies, crypto, commodities, the US dollar, volatility, and the US 10-year yield.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_market_snapshot — Get global market snapshot
Get the current global cryptocurrency market totals, volume, dominance, active asset counts, and the underlying snapshot timestamp.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_news — Get financial news
Get recent market news from the configured source feeds. Filter by an asset symbol or by markets, crypto, commodities, or forex category. Returns source and publication links.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "Maximum headlines to return, newest first."
},
"symbol": {
"type": "string",
"maxLength": 25,
"description": "Only headlines mentioning this asset, matched on its ticker and name. Overrides category."
},
"category": {
"enum": [
"markets",
"crypto",
"commodities",
"forex"
],
"type": "string",
"description": "Only feeds covering this market. Omit for all."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_price_history — Get price history
Get bounded daily price history for a symbol. Stocks and ETFs include OHLCV when available; cryptocurrency history may contain close and volume only.
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"range": {
"enum": [
"1M",
"3M",
"6M",
"YTD",
"1Y"
],
"type": "string",
"default": "3M",
"description": "How far back from today: one, three or six months, year to date, or one year."
},
"symbol": {
"type": "string",
"maxLength": 25,
"description": "Ticker, e.g. AAPL, BTC, GC=F."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}screen_assets — Screen assets
Find assets matching price, daily-move, volume, market-cap, asset-type and sector filters, sorted as requested. Use for questions like "biggest movers today", "tech stocks over $1T" or "cheapest crypto by price"; all filters are optional and combine with AND. Covers the whole mkts universe (stocks, ETFs, crypto, commodities, forex) from the snapshot, which refreshes about every 15 minutes. Returns at most 25 assets. For valuation or profitability filters such as P/E or margins, this tool does not apply; fetch fundamentals for specific symbols with get_fundamentals.
{
"type": "object",
"properties": {
"sort": {
"enum": [
"price",
"change24h",
"volume24h",
"marketCap"
],
"type": "string",
"default": "marketCap",
"description": "Field to rank by. Use change24h with direction desc for top gainers, asc for top losers."
},
"type": {
"enum": [
"stock",
"etf",
"crypto",
"commodity",
"forex"
],
"type": "string",
"description": "Only this asset class."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "Maximum assets to return."
},
"sector": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Stocks and ETFs only; exact name, case-insensitive: Technology, Healthcare, Financial Services, Consumer Cyclical, Consumer Defensive, Communication Services, Industrials, Energy, Basic Materials, Real Estate, Utilities."
},
"maxPrice": {
"type": "number",
"description": "Maximum price in USD (forex: the quoted rate)."
},
"minPrice": {
"type": "number",
"description": "Minimum price in USD (forex: the quoted rate)."
},
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "desc for largest first, asc for smallest first."
},
"maxChange": {
"type": "number",
"description": "Maximum 24h change in percent; -5 finds assets down 5% or more."
},
"minChange": {
"type": "number",
"description": "Minimum 24h change in percent; 5 means +5%, -3 means -3%."
},
"minVolume": {
"type": "number",
"minimum": 0,
"description": "Minimum 24h volume as reported: shares for stocks and ETFs, USD for crypto."
},
"minMarketCap": {
"type": "number",
"minimum": 0,
"description": "Minimum market cap in USD; 1000000000000 is $1T. Any value above 0 excludes assets with no market cap, such as forex and many ETFs."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-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
- 890 ms
- 95th percentile latency
- 890 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 890 ms · metadata changed · 15 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http mkts-market-data-mcp https://mkts.io/api/mcpCodex
codex mcp add mkts-market-data-mcp --url https://mkts.io/api/mcpCursor
{
"mcpServers": {
"mkts-market-data-mcp": {
"url": "https://mkts.io/api/mcp"
}
}
}Cline
{
"mcpServers": {
"mkts-market-data-mcp": {
"type": "streamableHttp",
"url": "https://mkts.io/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"mkts-market-data-mcp": {
"type": "http",
"url": "https://mkts.io/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http mkts-market-data-mcp https://mkts.io/api/mcpClaude Desktop
{
"mcpServers": {
"mkts-market-data-mcp": {
"url": "https://mkts.io/api/mcp"
}
}
}Windsurf
{
"mcpServers": {
"mkts-market-data-mcp": {
"serverUrl": "https://mkts.io/api/mcp"
}
}
}Let your agent find its tools
Find servers like mkts Market Data 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 mkts Market Data 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.