From the closing bell
to the overnight session.
EOD prices, IEX, Equity Realtime and BOATS. Keep raw and adjusted prices distinct, and read each feed’s entitlement and product status.
TIINGO → MODEL CONTEXT PROTOCOL
DATA IN. CONTEXT OUT.
Equities. Crypto. FX. Fundamentals. News.
Bring Tiingo’s data into your AI
workflow through one deliberate, read-only connection.
BRING YOUR OWN TOKEN / OAUTH OR API KEY
read_only: true
tools/call → structured result
"source": "tiingo",
"retrieved_at": "…",
"data": [ … ]
default tools + gated legacy
REST route patterns
bounded WebSocket samplers
01 / COVERAGE MAP
MCP gives an AI client a discoverable tool catalog. This connector handles Tiingo authentication, route selection and bounded responses—your account determines access.
EOD prices, IEX, Equity Realtime and BOATS. Keep raw and adjusted prices distinct, and read each feed’s entitlement and product status.
Crypto metadata and price history, FX quotes and histories, plus bounded samples from supported feeds.
btcusd / eurusd
Financial statements, daily fundamentals, fund information, corporate actions, headlines and protected news artifacts.
source → observation → context
CONTRACT ≠ AVAILABILITY Some products are beta, deprecated or unverified. Private/contact-only products are not implemented. No blanket “all Tiingo products” claim.
02 / GET CONNECTED
Choose the authentication your client supports. v1 and v2 expose the same tools—they are not different data or API versions.
Connect an OAuth-capable remote MCP client. Sign in on this server’s authorization page with your Tiingo key, then approve the read-only scope.
https://your-domain.example/tiingo-mcp-bqp/mcp/v2
tiingo:read · Authorization Code + PKCE
For clients that support custom HTTP headers, send your Tiingo key in
X-API-Key. Use your own account; never share a key between users.
https://your-domain.example/tiingo-mcp-bqp/mcp/v1
Preview configuration. These are the intended shared-host paths, not a claim that a server is online. The operator must configure the domain, suffixes and path-aware OAuth routing before connecting.
Create a Tiingo account ↗ and obtain your API token from your account. Consult the provider documentation ↗ for product access.
Pick OAuth or an API-key header. Use the config example that matches your client; approve the server’s tools when prompted.
Run tiingo_test_connection, then request a small EOD history. Ask
for the source, timestamp, currency and any missing fields in the answer.
This documentation page never asks for or sends your key. Compatibility depends on the client version, available MCP features and your account.
Add the /mcp/v2 endpoint in your OAuth-capable client.
Choose a connection method to see its configuration. Never paste an API key into this page.
Client configuration reference: VS Code MCP documentation ↗. Other clients have their own configuration schema. See MCP authorization ↗ for protocol details.
03 / TOOL REFERENCE
Every public tool name and argument below comes from the server source. Expand a tool for its signature and usage notes. 43 tools are enabled by default; the 44th is a deprecated crypto tool requiring operator opt-in. Registry coverage is not live availability verification.
Download a complete news bulk archive (GET /tiingo/news/bulk_download/{id}) into a protected artifact and return its handle, size, container kind, member manifest, expiry and an optional preview. Never inlines binary data or key-bearing URLs.
| Argument | Type | Default |
|---|---|---|
archive_id | str | Required |
preview_lines | int | 20 |
Download a complete news bulk archive (GET /tiingo/news/bulk_download/{id}) into a
protected artifact and return its handle, size, container kind, member manifest,
expiry and an optional preview. Never inlines binary data or key-bearing URLs.Historical BOATS overnight bars (GET /boats/{ticker}/prices) — BETA.
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
start_date | str | None | None |
end_date | str | None | None |
resample_freq | str | None | None |
after_hours | bool | None | None |
force_fill | bool | None | None |
columns | list[str] | None | None |
limit | int | None | None |
offset | int | 0 |
chunk_days | int | None | None |
max_upstream_calls | int | 12 |
Historical BOATS overnight bars (GET /boats/{ticker}/prices) — BETA.
Rows: date, open, high, low, close, and volume only when 'volume' is listed in
columns. Entitlement: BOATS Real-time entitlement (beta). chunk_days splits long ranges into explicit
windows under max_upstream_calls and the server deadline.BOATS (Blue Ocean ATS) overnight snapshots (GET /boats[/{ticker}]) — BETA.
| Argument | Type | Default |
|---|---|---|
ticker | str | None | None |
tickers | list[str] | None | None |
all_tickers | bool | False |
BOATS (Blue Ocean ATS) overnight snapshots (GET /boats[/{ticker}]) — BETA.
Requires the separate BOATS Real-time entitlement. Overnight session 20:00-03:59 ET; tngoLast, open/high/low and mid are calculated by Tiingo, bid/ask/last/lastSize/volume are venue-native.
Pass exactly one of ticker, tickers, or all_tickers=True.Crypto pair metadata (GET /tiingo/crypto): ticker, baseCurrency, quoteCurrency, exchangeData. Entitlement: Crypto. Pass explicit tickers (max 100) or all_tickers=True for the documented full universe.
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
all_tickers | bool | False |
Crypto pair metadata (GET /tiingo/crypto): ticker, baseCurrency, quoteCurrency, exchangeData. Entitlement: Crypto. Pass explicit tickers (max 100) or all_tickers=True for the documented full universe.
Crypto price history and latest prices (GET /tiingo/crypto/prices). Entitlement: Crypto.
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
all_tickers | bool | False |
exchanges | list[str] | None | None |
start_date | str | None | None |
end_date | str | None | None |
resample_freq | str | None | None |
include_raw_exchange_data | bool | None | None |
format | str | 'json' |
limit | int | None | None |
offset | int | 0 |
chunk_days | int | None | None |
max_upstream_calls | int | 12 |
Crypto price history and latest prices (GET /tiingo/crypto/prices). Entitlement: Crypto. Returns one object per pair with a nested priceData array (date, open, high, low, close, volume, volumeNotional, tradesDone). With no dates the latest aggregated observation is returned. Chunked history merges priceData per pair.
LEGACY crypto top-of-book (GET /tiingo/crypto/top) — deprecated by Tiingo.
Legacy tool · disabled by default. Requires operator opt-in.
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
all_tickers | bool | False |
exchanges | list[str] | None | None |
include_raw_exchange_data | bool | None | None |
LEGACY crypto top-of-book (GET /tiingo/crypto/top) — deprecated by Tiingo. Registered only when TIINGO_ENABLE_LEGACY_CRYPTO_TOP=true. Fields: quoteTimestamp, lastSaleTimestamp, lastPrice, lastSize, bid/ask price, size and exchange. Use tiingo_get_crypto_prices for supported last-price data.
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
| Argument | Type | Default |
|---|---|---|
pool_code | str | Required |
start_date | str | None | None |
end_date | str | None | None |
resample_freq | str | None | None |
limit | int | None | None |
offset | int | 0 |
chunk_days | int | None | None |
max_upstream_calls | int | 12 |
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
Historical aggregated yield metrics for one pool (GET /tiingo/crypto-yield/{poolCode}/metrics).UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
| Argument | Type | Default |
|---|---|---|
platform_codes | list[str] | None | None |
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed. Crypto yield lending platforms (GET /tiingo/crypto-yield/platforms): platform codes, names, networks. Field names are passed through unchanged.
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
| Argument | Type | Default |
|---|---|---|
pool_codes | list[str] | None | None |
platform_codes | list[str] | None | None |
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed. Crypto yield pools (GET /tiingo/crypto-yield/pools): pool codes with platform, network and denomination relationships. Field names are passed through unchanged.
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
| Argument | Type | Default |
|---|---|---|
pool_codes | list[str] | None | None |
platform_codes | list[str] | None | None |
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed. Latest crypto yield observations (GET /tiingo/crypto-yield/ticks): latest rates per pool; rates are provider fractions (0.04 = 4%), the stable borrow rate is labelled totalStableBorrowAmount as received. Field names are passed through unchanged.
Daily fundamental metrics (GET /tiingo/fundamentals/{identifier}/daily): date, marketCap, enterpriseVal, peRatio, pbRatio, trailingPEG1Y (and any additional metrics Tiingo returns). Nulls are preserved, never zero-filled. Entitlement: Fundamentals add-on.
| Argument | Type | Default |
|---|---|---|
identifier | str | Required |
start_date | str | None | None |
end_date | str | None | None |
as_reported | bool | None | None |
sort | str | None | None |
columns | list[str] | None | None |
format | str | 'json' |
limit | int | None | None |
offset | int | 0 |
chunk_days | int | None | None |
max_upstream_calls | int | 12 |
Daily fundamental metrics (GET /tiingo/fundamentals/{identifier}/daily): date,
marketCap, enterpriseVal, peRatio, pbRatio, trailingPEG1Y (and any additional
metrics Tiingo returns). Nulls are preserved, never zero-filled.
Entitlement: Fundamentals add-on.Trailing 1-year distribution yield (GET /tiingo/corporate-actions/{ticker}/distribution-yield): rows of date and trailingDiv1Y. Entitlement: beta; included with the End-of-Day entitlement since 2023-08-28. No date filters are documented for this route.
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
Trailing 1-year distribution yield (GET /tiingo/corporate-actions/{ticker}/distribution-yield):
rows of date and trailingDiv1Y. Entitlement: beta; included with the End-of-Day
entitlement since 2023-08-28. No date filters are documented for this route.Distributions (dividends) across all tickers for one ex-date (GET /tiingo/corporate-actions/distributions).
| Argument | Type | Default |
|---|---|---|
ex_date | str | None | None |
Distributions (dividends) across all tickers for one ex-date (GET /tiingo/corporate-actions/distributions). Rows: permaTicker, ticker, exDate, paymentDate, recordDate, declarationDate, distribution, distributionFrequency (dates may be null; exDate and distribution never are). Entitlement: Beta-enabled and enterprise customers. Beta early-release product.
Get end-of-day instrument metadata for one ticker (GET /tiingo/daily/{ticker}).
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
Get end-of-day instrument metadata for one ticker (GET /tiingo/daily/{ticker}).
Symbology: Tiingo writes share classes with a dash (BRK-A, not BRK.A).
Entitlement: End-of-Day (all plans).
Args:
ticker (str): Stock/ETF/mutual fund ticker, e.g. 'AAPL'.
Returns:
ticker, name, exchangeCode, description, startDate, endDate (bounds
of the available price history; null when no price data exists).End-of-day prices for one ticker (GET /tiingo/daily/{ticker}/prices).
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
start_date | str | None | None |
end_date | str | None | None |
resample_freq | str | None | None |
sort | str | None | None |
columns | list[str] | None | None |
format | str | 'json' |
limit | int | None | None |
offset | int | 0 |
chunk_days | int | None | None |
max_upstream_calls | int | 12 |
End-of-day prices for one ticker (GET /tiingo/daily/{ticker}/prices).
With no dates Tiingo returns the latest bar; with startDate/endDate it
returns history. Rows carry raw (open/high/low/close/volume) and adjusted
(adjOpen…adjVolume) fields plus divCash and splitFactor, all preserved
unchanged. resample_freq accepts daily, weekly, monthly, annually (only
daily honours market holidays). chunk_days splits a long range into
explicit date windows fetched sequentially under max_upstream_calls and
the server deadline; an incomplete result reports next_start.
Entitlement: End-of-Day; history depth depends on the plan.Historical consolidated intraday bars (GET /tiingo/equity/intraday/{ticker}/prices) — BETA.
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
start_date | str | None | None |
end_date | str | None | None |
resample_freq | str | None | None |
after_hours | bool | None | None |
force_fill | bool | None | None |
columns | list[str] | None | None |
limit | int | None | None |
offset | int | 0 |
chunk_days | int | None | None |
max_upstream_calls | int | 12 |
Historical consolidated intraday bars (GET /tiingo/equity/intraday/{ticker}/prices) — BETA.
Rows: date, open, high, low, close, and volume only when 'volume' is listed in
columns. Entitlement: Equity Realtime (beta), market hours 04:00-20:00 ET. chunk_days splits long ranges into explicit
windows under max_upstream_calls and the server deadline.Equity Realtime consolidated snapshots (GET /tiingo/equity/intraday[/{ticker}]) — BETA.
| Argument | Type | Default |
|---|---|---|
ticker | str | None | None |
tickers | list[str] | None | None |
all_tickers | bool | False |
Equity Realtime consolidated snapshots (GET /tiingo/equity/intraday[/{ticker}]) — BETA.
Returns derived reference prices and liquidity estimates (tngoLast, lqRefPrice, lqSpread, lqBid*/lqAsk*), not an executable NBBO. Market hours 04:00-20:00 ET. Tiingo recommends IEX endpoints for production.
Pass exactly one of ticker, tickers, or all_tickers=True.Financial statements (GET /tiingo/fundamentals/{identifier}/statements).
| Argument | Type | Default |
|---|---|---|
identifier | str | Required |
start_date | str | None | None |
end_date | str | None | None |
as_reported | bool | None | None |
sort | str | None | None |
format | str | 'json' |
limit | int | None | None |
offset | int | 0 |
Financial statements (GET /tiingo/fundamentals/{identifier}/statements).
Each row: date (release date), quarter (0 = annual, 1-4 = fiscal quarters), year,
statementData with balanceSheet / incomeStatement / cashFlow / overview arrays of
{dataCode, value}. Nulls and unknown dataCodes are preserved. as_reported=true
returns values as first published, never restated; do not describe the two
dimensions interchangeably. Entitlement: Fundamentals add-on.Historical and current fund fee data (GET /tiingo/funds/{ticker}/metrics): prospectusDate, netExpense, grossExpense, managementFee, 12b1, non12b1, otherExpenses, loads, account/redemption fees, portfolioTurnover, miscFees and customFees objects (label, value, units, parentFee) preserved as provided. Entitlement: enterprise/institutional.
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
start_date | str | None | None |
end_date | str | None | None |
resample_freq | str | None | None |
limit | int | None | None |
offset | int | 0 |
Historical and current fund fee data (GET /tiingo/funds/{ticker}/metrics):
prospectusDate, netExpense, grossExpense, managementFee, 12b1, non12b1,
otherExpenses, loads, account/redemption fees, portfolioTurnover, miscFees and
customFees objects (label, value, units, parentFee) preserved as provided.
Entitlement: enterprise/institutional.Mutual fund / ETF overview (GET /tiingo/funds/{ticker}): ticker, name, description, shareClass, netExpense and otherShareClasses (related classes with their fees). Entitlement: enterprise/institutional. A 'tickers' query mentioned in Tiingo's request table is unresolved and not exposed (D10).
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
Mutual fund / ETF overview (GET /tiingo/funds/{ticker}): ticker, name, description,
shareClass, netExpense and otherShareClasses (related classes with their fees).
Entitlement: enterprise/institutional. A 'tickers' query mentioned in Tiingo's
request table is unresolved and not exposed (D10).Catalogue of fundamental metric definitions (GET /tiingo/fundamentals/definitions).
| Argument | Type | Default |
|---|---|---|
| No arguments. | ||
Catalogue of fundamental metric definitions (GET /tiingo/fundamentals/definitions). Rows: dataCode, name, description, statementType (balanceSheet, incomeStatement, cashFlow, overview), units. The list is open-ended; never assume a fixed set of codes. Entitlement: Fundamentals add-on (DOW 30 free for evaluation).
Company metadata for fundamentals coverage (GET /tiingo/fundamentals/meta).
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
all_tickers | bool | False |
Company metadata for fundamentals coverage (GET /tiingo/fundamentals/meta). Fields include permaTicker (stable identifier for recycled/delisted symbols), ticker, name, isActive, isADR, sector/industry/SIC codes, reportingCurrency, location, websites and statementLastUpdated/dailyLastUpdated.
Historical intraday FX bars (GET /tiingo/fx/{ticker}/prices): date, ticker, open, high, low, close (quote-derived; no volume). Entitlement: Forex.
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
start_date | str | None | None |
end_date | str | None | None |
resample_freq | str | None | None |
limit | int | None | None |
offset | int | 0 |
chunk_days | int | None | None |
max_upstream_calls | int | 12 |
Historical intraday FX bars (GET /tiingo/fx/{ticker}/prices): date, ticker,
open, high, low, close (quote-derived; no volume). Entitlement: Forex.Forex top-of-book quotes (page: beta; changelog: out of beta). Entitlement: Forex.
| Argument | Type | Default |
|---|---|---|
ticker | str | None | None |
tickers | list[str] | None | None |
all_tickers | bool | False |
Forex top-of-book quotes (page: beta; changelog: out of beta). Entitlement: Forex. Pairs are concatenated without a slash (EUR/USD -> eurusd). Fields: ticker, quoteTimestamp, bidPrice, bidSize, askPrice, askSize, midPrice. FX quotes are indicative and carry no trade volume. Pass exactly one selector.
Historical intraday IEX bars (GET /iex/{ticker}/prices).
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
start_date | str | None | None |
end_date | str | None | None |
resample_freq | str | None | None |
after_hours | bool | None | None |
force_fill | bool | None | None |
columns | list[str] | None | None |
limit | int | None | None |
offset | int | 0 |
chunk_days | int | None | None |
max_upstream_calls | int | 12 |
Historical intraday IEX bars (GET /iex/{ticker}/prices).
Rows: date, open, high, low, close, and volume only when 'volume' is listed in
columns. Entitlement: IEX intraday history. chunk_days splits long ranges into explicit
windows under max_upstream_calls and the server deadline.IEX top-of-book / last (GET /iex and /iex/{ticker}).
| Argument | Type | Default |
|---|---|---|
ticker | str | None | None |
tickers | list[str] | None | None |
all_tickers | bool | False |
IEX top-of-book / last (GET /iex and /iex/{ticker}).
Fields tngoLast, mid, open/high/low, volume and prevClose are calculated by Tiingo; last, lastSize, bid*/ask*, quoteTimestamp and lastSaleTimestamp come from the raw IEX TOPS feed and are null without an IEX market-data agreement (required since 2025-02-01). tngoLast is never a substitute for last.
Pass exactly one of ticker, tickers, or all_tickers=True.Financial news articles (GET /tiingo/news). Entitlement: News add-on.
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
source | list[str] | None | None |
start_date | str | None | None |
end_date | str | None | None |
limit | int | None | None |
offset | int | None | None |
sort_by | str | None | None |
Financial news articles (GET /tiingo/news). Entitlement: News add-on. Pagination is performed by Tiingo (limit/offset); Tiingo reports no total, so none is invented — use next_offset to continue. Articles: id, title, url, description, publishedDate, crawlDate, source, tickers, tags. 'tags' is a returned field; Tiingo's request table does not document it as a filter, so it is not an argument here.
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
start_date | str | None | None |
end_date | str | None | None |
resample_freq | str | None | None |
limit | int | None | None |
offset | int | 0 |
chunk_days | int | None | None |
max_upstream_calls | int | 12 |
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
Small Exchange official end-of-day (GET /smallx/{ticker}/eod): date, open, high, low, close, volume, settlementPrice, openInterest (official settlement values; daily/weekly/monthly/annually resampling). Derived intraday bars and official settlement values are
never merged.UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
all_tickers | bool | False |
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed. Small Exchange contract metadata (GET /smallx/meta): permaTicker, ticker, name, baseTicker, baseCurrency, cfiCode, first/last trading dates, expiration and maturity dates, tickSize and tickMulitplier (Tiingo's spelling, preserved). Market hours 8pm EST Sunday through 5pm EST Friday.
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
start_date | str | None | None |
end_date | str | None | None |
resample_freq | str | None | None |
limit | int | None | None |
offset | int | 0 |
chunk_days | int | None | None |
max_upstream_calls | int | 12 |
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
Small Exchange derived intraday bars (GET /smallx/{ticker}/prices): date, open, high, low, close, volume (derived intraday bars; min/hour resampling). Derived intraday bars and official settlement values are
never merged.UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
| Argument | Type | Default |
|---|---|---|
ticker | str | None | None |
tickers | list[str] | None | None |
all_tickers | bool | False |
UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.
Small Exchange top-of-book / last (GET /smallx/tops and /smallx/{ticker}/tops):
ticker, timestamp, quoteTimestamp, lastSaleTimestamp, last, lastSize, tngoLast,
prevClose, open, high, low, mid, volume, bid/ask size and price, openInterest.Splits across all tickers for one ex-date (GET /tiingo/corporate-actions/splits).
| Argument | Type | Default |
|---|---|---|
ex_date | str | None | None |
Splits across all tickers for one ex-date (GET /tiingo/corporate-actions/splits).
Rows: permaTicker, ticker, exDate, splitFrom, splitTo, splitFactor (splitTo/splitFrom), splitStatus ('a' active, 'c' cancelled — cancelled rows are preserved).
Entitlement: Beta; included with the End-of-Day entitlement. Beta early-release product.Distribution history for one ticker (GET /tiingo/corporate-actions/{ticker}/distributions).
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
start_ex_date | str | None | None |
end_ex_date | str | None | None |
limit | int | None | None |
offset | int | 0 |
Distribution history for one ticker (GET /tiingo/corporate-actions/{ticker}/distributions).
Rows: permaTicker, ticker, exDate, paymentDate, recordDate, declarationDate, distribution, distributionFrequency (dates may be null; exDate and distribution never are). Includes historical and upcoming events.
Entitlement: Beta; included with the End-of-Day entitlement (stocks, ETFs, mutual funds).Split history for one ticker (GET /tiingo/corporate-actions/{ticker}/splits).
| Argument | Type | Default |
|---|---|---|
ticker | str | Required |
start_ex_date | str | None | None |
end_ex_date | str | None | None |
limit | int | None | None |
offset | int | 0 |
Split history for one ticker (GET /tiingo/corporate-actions/{ticker}/splits).
Rows: permaTicker, ticker, exDate, splitFrom, splitTo, splitFactor (splitTo/splitFrom), splitStatus ('a' active, 'c' cancelled — cancelled rows are preserved). Includes historical and upcoming events.
Entitlement: Beta; included with the End-of-Day entitlement.List available news bulk-download archives (GET /tiingo/news/bulk_download).
| Argument | Type | Default |
|---|---|---|
| No arguments. | ||
List available news bulk-download archives (GET /tiingo/news/bulk_download). Entitlement: institutional clients only. Metadata: id, filename, batchType, startDate/endDate (Tiingo labels the end date 'startDate' in its docs — values are passed through), fileSizeCompressed, fileSizeUncompressed. The convenience URL that embeds your token is removed.
Tiingo's public supported-tickers catalog (supported_tickers.zip, updated daily).
| Argument | Type | Default |
|---|---|---|
exchange | str | None | None |
asset_type | str | None | None |
price_currency | str | None | None |
ticker_prefix | str | None | None |
has_price_history | bool | False |
limit | int | None | 200 |
offset | int | 0 |
refresh | bool | False |
Tiingo's public supported-tickers catalog (supported_tickers.zip, updated daily). No API token is used: the file is public. Columns: ticker, exchange, assetType, priceCurrency, startDate, endDate (plus any additional columns Tiingo adds). The catalog is cached in this process for TIINGO_ASSET_CACHE_TTL_SECONDS.
Collect a bounded sample from the BOATS overnight WebSocket feed (wss://api.tiingo.com/boats) - BETA.
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
all_tickers | bool | False |
threshold_level | int | None | None |
duration_seconds | float | None | None |
max_messages | int | None | None |
Collect a bounded sample from the BOATS overnight WebSocket feed (wss://api.tiingo.com/boats) - BETA. thresholdLevel 3 is the only public channel and requires the BOATS Real-time entitlement; overnight session 20:00-03:59 ET; B rows are trade breaks and MEMOIR sale conditions are preserved. The sample ends at duration_seconds, max_messages, the configured byte/frame budgets, or a provider close/error, then unsubscribes and closes. A validated acknowledgement is required before data is trusted. An empty sample outside market hours is normal, not an authentication failure. Later errors keep the data collected so far with partial=true.
Collect a bounded sample from the crypto WebSocket feed (wss://api.tiingo.com/crypto, service crypto_data).
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
all_tickers | bool | False |
threshold_level | int | None | None |
duration_seconds | float | None | None |
max_messages | int | None | None |
Collect a bounded sample from the crypto WebSocket feed (wss://api.tiingo.com/crypto, service crypto_data).
thresholdLevel 2 delivers quotes and trades, 5 (default) trades only; pairs are written as {base}{quote} (btcusd) and each row carries its exchange.
The sample ends at duration_seconds, max_messages, the configured byte/frame
budgets, or a provider close/error, then unsubscribes and closes. A validated
acknowledgement is required before data is trusted. An empty sample outside
market hours is normal, not an authentication failure. Later errors keep the
data collected so far with partial=true.Collect a bounded sample from the Equity Realtime WebSocket feed (wss://api.tiingo.com/equity/intraday, service cons) - BETA.
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
all_tickers | bool | False |
threshold_level | int | None | None |
duration_seconds | float | None | None |
max_messages | int | None | None |
Collect a bounded sample from the Equity Realtime WebSocket feed (wss://api.tiingo.com/equity/intraday, service cons) - BETA. thresholdLevel 6 (default) publishes reference-price rows [date, ticker, referencePrice]; level 4 publishes liquidity metrics [date, ticker, lqSpread (0.04 = 4%), lqBidSize, lqBidPrice, referencePrice, lqAskPrice, lqAskSize]. The URL has no /tiingo prefix. The sample ends at duration_seconds, max_messages, the configured byte/frame budgets, or a provider close/error, then unsubscribes and closes. A validated acknowledgement is required before data is trusted. An empty sample outside market hours is normal, not an authentication failure. Later errors keep the data collected so far with partial=true.
Collect a bounded sample from the FX WebSocket feed (wss://api.tiingo.com/fx).
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
all_tickers | bool | False |
threshold_level | int | None | None |
duration_seconds | float | None | None |
max_messages | int | None | None |
Collect a bounded sample from the FX WebSocket feed (wss://api.tiingo.com/fx). thresholdLevel 5 delivers quote (Q) rows for pairs such as eurusd; FX quotes carry no trade volume. The sample ends at duration_seconds, max_messages, the configured byte/frame budgets, or a provider close/error, then unsubscribes and closes. A validated acknowledgement is required before data is trusted. An empty sample outside market hours is normal, not an authentication failure. Later errors keep the data collected so far with partial=true.
Collect a bounded sample from the IEX WebSocket feed (wss://api.tiingo.com/iex).
| Argument | Type | Default |
|---|---|---|
tickers | list[str] | None | None |
all_tickers | bool | False |
threshold_level | int | None | None |
duration_seconds | float | None | None |
max_messages | int | None | None |
Collect a bounded sample from the IEX WebSocket feed (wss://api.tiingo.com/iex). thresholdLevel 0 (all TOPS quotes and trades) and 5 (trades plus selected quote updates) return raw 16-field TOPS rows and require an IEX market-data agreement; level 6 (default) returns Tiingo's derived reference price as 3-element rows [date, ticker, referencePrice]. The sample ends at duration_seconds, max_messages, the configured byte/frame budgets, or a provider close/error, then unsubscribes and closes. A validated acknowledgement is required before data is trusted. An empty sample outside market hours is normal, not an authentication failure. Later errors keep the data collected so far with partial=true.
Search Tiingo's asset database by ticker or name (beta).
| Argument | Type | Default |
|---|---|---|
query | str | Required |
exact_ticker_match | bool | None | None |
include_delisted | bool | None | None |
limit | int | None | None |
path_form | bool | False |
Search Tiingo's asset database by ticker or name (beta). Ticker matches come first, then name matches. Returns ticker, name, assetType (Stock, ETF, Mutual Fund), isActive, permaTicker, openFIGI (the last two are placeholders per Tiingo). Additive fields are kept. Tiingo does not recommend production dependence on this beta endpoint.
Verify that the current Tiingo API token is accepted (GET /api/test/).
| Argument | Type | Default |
|---|---|---|
| No arguments. | ||
Verify that the current Tiingo API token is accepted (GET /api/test/).
Works for every Tiingo account regardless of product entitlements.
Tiingo can answer HTTP 200 even for a bad token; this tool inspects the
message body and fails with an 'auth' error when the token is rejected.
Returns:
{"message": "You successfully sent a request"} on success.Verify WebSocket connectivity and authentication against wss://api.tiingo.com/test.
| Argument | Type | Default |
|---|---|---|
duration_seconds | float | None | None |
Verify WebSocket connectivity and authentication against wss://api.tiingo.com/test. Sends the documented test subscription (eventData.authToken + service "test") and succeeds only on a validated acknowledgement (code 200). No market data is read; the socket is closed right after the acknowledgement.
No tools match your search. Try a broader term or reset the filters.
The live client’s tools/list response is authoritative for its current
deployment. Embedded documentation uses tiingo://references/...; protected
archive pages require authenticated reads.
04 / FROM DATA TO CONTEXT
Start with a precise universe and a bounded date range. These examples are prompts and tool arguments, not investment advice or live results.
“Fetch Apple’s daily bars for January 2025. Show raw and adjusted closes, and flag missing trading days.”
tiingo_get_eod_prices({
"ticker": "aapl",
"start_date": "2025-01-01",
"end_date": "2025-01-31",
"resample_freq": "daily"
})
“Collect a five-second IEX reference-price sample for AAPL. Report timestamps and whether it is partial.”
Use tiingo_sample_iex_stream at threshold 6 for three-field reference
rows. Levels 0/5 have different schemas and agreement requirements.
“Compare available annual and quarterly statements, then find related headlines. Keep reporting periods distinct.”
Use tiingo_get_financial_statements and tiingo_get_news.
State whether results are as-reported or restated and preserve the original news
source.
05 / THE FIELD GUIDE
Connection is only the beginning. Understand identifiers, permissions, response shapes and limits before putting the data into a workflow.
A provider API key grants access to Tiingo. An OAuth access token issued by this MCP server authorizes the MCP connection. They are different credentials and are not interchangeable.
X-API-Key: YOUR_PROVIDER_KEY with each
request. Authorization: Bearer YOUR_PROVIDER_KEY is a compatibility
option on this endpoint only.
TIINGO_API_KEY from
its environment. No remote login flow is involved.
The server forwards provider requests using Tiingo’s Token authorization scheme; clients still use the MCP authentication described above. The hosted OAuth bridge validates the provider key and stores it encrypted using the operator’s configured encryption key. Authorize only a host you trust.
Examples include an equity ticker such as aapl, a crypto pair such as
btcusd, and an FX pair such as eurusd. Some fundamentals
routes also accept a permanent ticker identifier. Resolve identifiers with search,
metadata or the supported-tickers catalog.
Use YYYY-MM-DD for date-only routes. Where timestamps are supported,
include an explicit UTC offset. Do not remove the offset or assume overnight
sessions follow regular equity-market boundaries.
Do not invent a currency, exchange, timezone or identifier when a field is absent. Resolve the symbol first, inspect its metadata, and keep the provider’s identifier in subsequent calls.
Responses include provenance such as the route, tool, source, retrieval time, product status and entitlement note. Product status (GA, beta, deprecated or unverified) is not the same as live-test status.
EOD bars preserve raw and adjusted fields, including close,
adjClose, divCash and splitFactor. Crypto
history can nest priceData under each pair. Choose a stable identifier
before merging rows.
CSV is exposed only on routes whose implemented contract supports it. It is bounded complete text, not a promise of unlimited bulk delivery.
An empty list can mean a valid request with no observations. It is not automatically an authentication error. Missing or null values must remain missing—not be converted into a price of zero.
For programmatic access, first send initialize, negotiate capabilities
and send notifications/initialized. Use tools/list to
inspect schemas, then tools/call with a tool name and arguments.
Preserve a session ID if the server supplies one. HTTP endpoints speak MCP JSON-RPC,
not a bare REST ticker URL.
Local limit/offset pagination slices an already-fetched
provider response. Calling another page can repeat the upstream request and consume
quota again. The provider’s plan controls market coverage, historical depth and
request or bandwidth allowances.
Opt-in history chunking uses chunk_days and
max_upstream_calls. It requires date-only bounds and a supported
daily/sub-day period. Inspect complete and next_start; a
partial result is not a complete history. Omit chunking for larger aggregate periods
or timestamp bounds.
WebSocket tools return bounded samples, not persistent subscriptions. Defaults are five seconds and 100 messages; the deployed operator may configure ceilings. An authenticated empty sample outside trading hours can be valid.
News archives are private, size-bounded artifacts with opaque handles and expiry. Authenticated resources page through decoded lines; they are not an unrestricted public file-download endpoint. Tenant disk limits do not replace a host-wide storage budget.
Read-only means the tools do not place trades or change provider data. It does not mean requests are free of provider usage charges.
| Symptom | What to check |
|---|---|
| 401 / authentication error | Confirm the auth mode. Use the provider key on v1, or reconnect through OAuth on v2. Never solve this by putting a key in the URL. |
| 403 / entitlement error | Check the provider account, product permission and symbol agreement. A valid key may still lack the requested dataset. |
| 404 / unexpected HTML |
Check the host and the /v1/mcp or /v2/mcp path. A landing page response is not an MCP response.
|
| 429 / rate limit | Reduce repeated queries and concurrency; respect a returned retry delay. Other applications using the same key also consume its quota. |
| Timeout / oversized result | Narrow dates, symbols or columns where supported. A client timeout should not trigger an unbounded retry loop. |
| OAuth loop or wrong server | Check the advertised issuer, authorization URLs, audience, prefixed discovery routes and service-specific session cookies. |
| No tools visible | Restart or reconnect the MCP client, complete initialization, and approve the server. Check its logs without revealing credentials. |
Use HTTPS for hosted access. Keep API keys, session cookies, OAuth tokens and encryption keys out of source control, screenshots and conversations. Rotate a key with the provider if it has been exposed, and reconnect clients afterward.
The Tiingo MCP implementation has no usage-analytics subsystem. This static page has no analytics, third-party fonts, tracking pixels or API-key form. The hosting provider may still keep web access logs.
The software’s license does not grant market-data rights. Consult Tiingo for your permitted usage and any redistribution or business-use permissions. No uptime, latency, exchange coverage or real-time availability is promised here. Data may be delayed, unavailable or restricted by entitlement.
This page and the MCP server run on different subdomains. The server lives at
: /v1/mcp serves the API-key transport and
/v2/mcp serves OAuth.
Each server runs in its own container with its own signing, session, identity and encryption secrets and its own persistent storage. Because it is mounted at the root of its own host, OAuth discovery, issuer and audience need no path prefix.
06 / GOOD TO KNOW
No. They expose the same catalog. The distinction is how you authenticate: your provider key on v1, or the MCP server’s OAuth token on v2.
No. These tools retrieve data. They do not execute orders, move funds or modify your provider account.
No. Bring your own Tiingo account and key. The provider decides which products, symbols and history you can access; check its current terms directly.
Choose a client that supports remote Streamable HTTP and the chosen authentication method. OAuth-capable clients use v2; custom-header clients can use v1. The setup panel includes VS Code examples. Local-process MCP clients can use stdio. Client capabilities and plan availability vary.
Report the missing fields and the provider response. It should not silently substitute another symbol, manufacture values, change price adjustment conventions or imply that an old observation is current.
No. The public registry covers 43 REST route patterns, six WebSocket feeds and the public ticker catalog. Private/contact-only products remain outside the implemented contract. Some products are beta, deprecated or availability-unverified, and the catalog is fixture-tested rather than fully live-verified.
No. It samples within duration, frame, message and byte budgets, then closes. The result identifies how the sample ended and whether it is partial. It is not a streaming trading terminal.
READY WHEN YOUR CLIENT IS.