Koskamo

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.

mkts Market Data MCP logo, by mktsVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by mkts
You need:No API key required
MCP endpoint (Streamable HTTP)
https://mkts.io/api/mcp
Vendor documentation

What 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

Vendor evidenceRegistry 1.0.0

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
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Use these read-only tools for traceable market data. Preserve the returned source, asOf, freshness, and requestId fields when presenting time-sensitive claims.

Tools

15 advertised

compare_assets — Compare assets
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Compare 2 to 10 market symbols using the same normalized mkts snapshot. Returns requested and resolved symbols plus normalized asset records with provenance metadata.

compare_assets input schema
{
  "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
}
compare_assets annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_archive_series — Get archived daily closes for many symbols over a date range
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_archive_series input schema
{
  "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
}
get_archive_series annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_asset_intraday — Get intraday observations within a window
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_asset_intraday input schema
{
  "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
}
get_asset_intraday annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_asset_profile — Get asset profile
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_asset_profile input schema
{
  "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
}
get_asset_profile annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_asset_quote — Get current asset quote
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_asset_quote input schema
{
  "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
}
get_asset_quote annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_asset_series — Get archived daily closes over a date range
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_asset_series input schema
{
  "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
}
get_asset_series annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_assets_as_of — Get assets as of a past date
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_assets_as_of input schema
{
  "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
}
get_assets_as_of annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_assets_bulk — Get many assets at once
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_assets_bulk input schema
{
  "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
}
get_assets_bulk annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_filings — Get company filings
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_filings input schema
{
  "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
}
get_filings annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_fundamentals — Get company fundamentals
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_fundamentals input schema
{
  "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
}
get_fundamentals annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_macro_snapshot — Get macro snapshot
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get the current mkts macro dashboard, including major equity proxies, crypto, commodities, the US dollar, volatility, and the US 10-year yield.

get_macro_snapshot input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_macro_snapshot annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_market_snapshot — Get global market snapshot
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get the current global cryptocurrency market totals, volume, dominance, active asset counts, and the underlying snapshot timestamp.

get_market_snapshot input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_market_snapshot annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_news — Get financial news
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_news input schema
{
  "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
}
get_news annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_price_history — Get price history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get bounded daily price history for a symbol. Stocks and ETFs include OHLCV when available; cryptocurrency history may contain close and volume only.

get_price_history input schema
{
  "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
}
get_price_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
screen_assets — Screen assets
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

screen_assets input schema
{
  "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
}
screen_assets annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http mkts-market-data-mcp https://mkts.io/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add mkts-market-data-mcp --url https://mkts.io/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable mkts-market-data-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "mkts-market-data-mcp": {
      "url": "https://mkts.io/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "mkts-market-data-mcp": {
      "type": "streamableHttp",
      "url": "https://mkts.io/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start mkts-market-data-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "mkts-market-data-mcp": {
      "type": "http",
      "url": "https://mkts.io/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http mkts-market-data-mcp https://mkts.io/api/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "mkts-market-data-mcp": {
      "url": "https://mkts.io/api/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.

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.

Claim this listing