TIINGO → MODEL CONTEXT PROTOCOL

DATA IN. CONTEXT OUT.

A wider view.
A sharper query.

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

MCP ROUTERread_only: true
01
EQUITIESPrice history ↗
02
CRYPTO & FXPairs, not assumptions ↗
BTC
USD
03
FUNDAMENTALS & NEWSContext with provenance ↗
tools/call → structured result

"source": "tiingo",
"retrieved_at": "…",
"data": [ … ]

Illustrative routing · not live market data↳ MCP
43+1

default tools + gated legacy

43

REST route patterns

06

bounded WebSocket samplers

ONE CONNECTION.
MULTIPLE PERSPECTIVES.
↓

01 / COVERAGE MAP

Follow the question.
Across datasets.

MCP gives an AI client a discoverable tool catalog. This connector handles Tiingo authentication, route selection and bounded responses—your account determines access.

01 — EQUITIES

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.

EODIEXREALTIMEBOATS
02 — DIGITAL & FX

A pair-aware view.

Crypto metadata and price history, FX quotes and histories, plus bounded samples from supported feeds.

btcusd / eurusd
03 — CONTEXT

Read the underlying story.

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

One catalog.
Two ways in.

Choose the authentication your client supports. v1 and v2 expose the same tools—they are not different data or API versions.

v2 · OAuthBROWSER AUTHORIZATION

Your key stays out of the URL.

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
Scope: tiingo:read · Authorization Code + PKCE
v1 · API keyHEADER-BASED ACCESS

Direct, explicit authentication.

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
Prefer headers. Keys in query strings can leak through proxy logs.

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.

CONFIGURATION, WITHOUT GUESSWORK

From your key
to your first call.

  1. 01
    Get a provider key

    Create a Tiingo account ↗ and obtain your API token from your account. Consult the provider documentation ↗ for product access.

  2. 02
    Connect your client

    Pick OAuth or an API-key header. Use the config example that matches your client; approve the server’s tools when prompted.

  3. 03
    Verify, then query

    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.

Remote OAuth · MCP client
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

Know what
you can ask.

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.

/
44 toolsREAD-ONLY · SOURCE-DERIVED SIGNATURES
tiingo_download_news_archiveNews & archives

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.

Arguments for tiingo_download_news_archive
ArgumentTypeDefault
archive_idstrRequired
preview_linesint20
Full tool notes
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.
tiingo_get_boats_pricesIntraday

Historical BOATS overnight bars (GET /boats/{ticker}/prices) — BETA.

Arguments for tiingo_get_boats_prices
ArgumentTypeDefault
tickerstrRequired
start_datestr | NoneNone
end_datestr | NoneNone
resample_freqstr | NoneNone
after_hoursbool | NoneNone
force_fillbool | NoneNone
columnslist[str] | NoneNone
limitint | NoneNone
offsetint0
chunk_daysint | NoneNone
max_upstream_callsint12
Full tool notes
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.
tiingo_get_boats_quotesIntraday

BOATS (Blue Ocean ATS) overnight snapshots (GET /boats[/{ticker}]) — BETA.

Arguments for tiingo_get_boats_quotes
ArgumentTypeDefault
tickerstr | NoneNone
tickerslist[str] | NoneNone
all_tickersboolFalse
Full tool notes
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.
tiingo_get_crypto_metadataCrypto

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.

Arguments for tiingo_get_crypto_metadata
ArgumentTypeDefault
tickerslist[str] | NoneNone
all_tickersboolFalse
Full tool notes
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.
tiingo_get_crypto_pricesCrypto

Crypto price history and latest prices (GET /tiingo/crypto/prices). Entitlement: Crypto.

Arguments for tiingo_get_crypto_prices
ArgumentTypeDefault
tickerslist[str] | NoneNone
all_tickersboolFalse
exchangeslist[str] | NoneNone
start_datestr | NoneNone
end_datestr | NoneNone
resample_freqstr | NoneNone
include_raw_exchange_databool | NoneNone
formatstr'json'
limitint | NoneNone
offsetint0
chunk_daysint | NoneNone
max_upstream_callsint12
Full tool notes
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.
tiingo_get_crypto_top_legacyCrypto

LEGACY crypto top-of-book (GET /tiingo/crypto/top) — deprecated by Tiingo.

Legacy tool · disabled by default. Requires operator opt-in.

Arguments for tiingo_get_crypto_top_legacy
ArgumentTypeDefault
tickerslist[str] | NoneNone
all_tickersboolFalse
exchangeslist[str] | NoneNone
include_raw_exchange_databool | NoneNone
Full tool notes
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.
tiingo_get_crypto_yield_metricsCrypto

UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.

Arguments for tiingo_get_crypto_yield_metrics
ArgumentTypeDefault
pool_codestrRequired
start_datestr | NoneNone
end_datestr | NoneNone
resample_freqstr | NoneNone
limitint | NoneNone
offsetint0
chunk_daysint | NoneNone
max_upstream_callsint12
Full tool notes
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).
tiingo_get_crypto_yield_platformsCrypto

UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.

Arguments for tiingo_get_crypto_yield_platforms
ArgumentTypeDefault
platform_codeslist[str] | NoneNone
Full tool notes
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.
tiingo_get_crypto_yield_poolsCrypto

UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.

Arguments for tiingo_get_crypto_yield_pools
ArgumentTypeDefault
pool_codeslist[str] | NoneNone
platform_codeslist[str] | NoneNone
Full tool notes
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.
tiingo_get_crypto_yield_ticksCrypto

UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.

Arguments for tiingo_get_crypto_yield_ticks
ArgumentTypeDefault
pool_codeslist[str] | NoneNone
platform_codeslist[str] | NoneNone
Full tool notes
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.
tiingo_get_daily_fundamentalsFundamentals

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.

Arguments for tiingo_get_daily_fundamentals
ArgumentTypeDefault
identifierstrRequired
start_datestr | NoneNone
end_datestr | NoneNone
as_reportedbool | NoneNone
sortstr | NoneNone
columnslist[str] | NoneNone
formatstr'json'
limitint | NoneNone
offsetint0
chunk_daysint | NoneNone
max_upstream_callsint12
Full tool notes
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.
tiingo_get_distribution_yieldFunds & actions

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.

Arguments for tiingo_get_distribution_yield
ArgumentTypeDefault
tickerstrRequired
Full tool notes
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.
tiingo_get_distributionsFunds & actions

Distributions (dividends) across all tickers for one ex-date (GET /tiingo/corporate-actions/distributions).

Arguments for tiingo_get_distributions
ArgumentTypeDefault
ex_datestr | NoneNone
Full tool notes
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.
tiingo_get_eod_metadataEnd of day

Get end-of-day instrument metadata for one ticker (GET /tiingo/daily/{ticker}).

Arguments for tiingo_get_eod_metadata
ArgumentTypeDefault
tickerstrRequired
Full tool notes
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).
tiingo_get_eod_pricesEnd of day

End-of-day prices for one ticker (GET /tiingo/daily/{ticker}/prices).

Arguments for tiingo_get_eod_prices
ArgumentTypeDefault
tickerstrRequired
start_datestr | NoneNone
end_datestr | NoneNone
resample_freqstr | NoneNone
sortstr | NoneNone
columnslist[str] | NoneNone
formatstr'json'
limitint | NoneNone
offsetint0
chunk_daysint | NoneNone
max_upstream_callsint12
Full tool notes
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.
tiingo_get_equity_realtime_pricesIntraday

Historical consolidated intraday bars (GET /tiingo/equity/intraday/{ticker}/prices) — BETA.

Arguments for tiingo_get_equity_realtime_prices
ArgumentTypeDefault
tickerstrRequired
start_datestr | NoneNone
end_datestr | NoneNone
resample_freqstr | NoneNone
after_hoursbool | NoneNone
force_fillbool | NoneNone
columnslist[str] | NoneNone
limitint | NoneNone
offsetint0
chunk_daysint | NoneNone
max_upstream_callsint12
Full tool notes
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.
tiingo_get_equity_realtime_quotesIntraday

Equity Realtime consolidated snapshots (GET /tiingo/equity/intraday[/{ticker}]) — BETA.

Arguments for tiingo_get_equity_realtime_quotes
ArgumentTypeDefault
tickerstr | NoneNone
tickerslist[str] | NoneNone
all_tickersboolFalse
Full tool notes
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.
tiingo_get_financial_statementsFundamentals

Financial statements (GET /tiingo/fundamentals/{identifier}/statements).

Arguments for tiingo_get_financial_statements
ArgumentTypeDefault
identifierstrRequired
start_datestr | NoneNone
end_datestr | NoneNone
as_reportedbool | NoneNone
sortstr | NoneNone
formatstr'json'
limitint | NoneNone
offsetint0
Full tool notes
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.
tiingo_get_fund_feesFunds & actions

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.

Arguments for tiingo_get_fund_fees
ArgumentTypeDefault
tickerstrRequired
start_datestr | NoneNone
end_datestr | NoneNone
resample_freqstr | NoneNone
limitint | NoneNone
offsetint0
Full tool notes
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.
tiingo_get_fund_metadataFunds & actions

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).

Arguments for tiingo_get_fund_metadata
ArgumentTypeDefault
tickerstrRequired
Full tool notes
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).
tiingo_get_fundamental_definitionsFundamentals

Catalogue of fundamental metric definitions (GET /tiingo/fundamentals/definitions).

Arguments for tiingo_get_fundamental_definitions
ArgumentTypeDefault
No arguments.
Full tool notes
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).
tiingo_get_fundamental_metadataFundamentals

Company metadata for fundamentals coverage (GET /tiingo/fundamentals/meta).

Arguments for tiingo_get_fundamental_metadata
ArgumentTypeDefault
tickerslist[str] | NoneNone
all_tickersboolFalse
Full tool notes
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.
tiingo_get_fx_pricesFX

Historical intraday FX bars (GET /tiingo/fx/{ticker}/prices): date, ticker, open, high, low, close (quote-derived; no volume). Entitlement: Forex.

Arguments for tiingo_get_fx_prices
ArgumentTypeDefault
tickerstrRequired
start_datestr | NoneNone
end_datestr | NoneNone
resample_freqstr | NoneNone
limitint | NoneNone
offsetint0
chunk_daysint | NoneNone
max_upstream_callsint12
Full tool notes
Historical intraday FX bars (GET /tiingo/fx/{ticker}/prices): date, ticker,
open, high, low, close (quote-derived; no volume). Entitlement: Forex.
tiingo_get_fx_quotesFX

Forex top-of-book quotes (page: beta; changelog: out of beta). Entitlement: Forex.

Arguments for tiingo_get_fx_quotes
ArgumentTypeDefault
tickerstr | NoneNone
tickerslist[str] | NoneNone
all_tickersboolFalse
Full tool notes
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.
tiingo_get_iex_pricesIntraday

Historical intraday IEX bars (GET /iex/{ticker}/prices).

Arguments for tiingo_get_iex_prices
ArgumentTypeDefault
tickerstrRequired
start_datestr | NoneNone
end_datestr | NoneNone
resample_freqstr | NoneNone
after_hoursbool | NoneNone
force_fillbool | NoneNone
columnslist[str] | NoneNone
limitint | NoneNone
offsetint0
chunk_daysint | NoneNone
max_upstream_callsint12
Full tool notes
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.
tiingo_get_iex_quotesIntraday

IEX top-of-book / last (GET /iex and /iex/{ticker}).

Arguments for tiingo_get_iex_quotes
ArgumentTypeDefault
tickerstr | NoneNone
tickerslist[str] | NoneNone
all_tickersboolFalse
Full tool notes
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.
tiingo_get_newsNews & archives

Financial news articles (GET /tiingo/news). Entitlement: News add-on.

Arguments for tiingo_get_news
ArgumentTypeDefault
tickerslist[str] | NoneNone
sourcelist[str] | NoneNone
start_datestr | NoneNone
end_datestr | NoneNone
limitint | NoneNone
offsetint | NoneNone
sort_bystr | NoneNone
Full tool notes
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.
tiingo_get_smallx_eodOther products

UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.

Arguments for tiingo_get_smallx_eod
ArgumentTypeDefault
tickerstrRequired
start_datestr | NoneNone
end_datestr | NoneNone
resample_freqstr | NoneNone
limitint | NoneNone
offsetint0
chunk_daysint | NoneNone
max_upstream_callsint12
Full tool notes
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.
tiingo_get_smallx_metadataOther products

UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.

Arguments for tiingo_get_smallx_metadata
ArgumentTypeDefault
tickerslist[str] | NoneNone
all_tickersboolFalse
Full tool notes
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.
tiingo_get_smallx_pricesOther products

UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.

Arguments for tiingo_get_smallx_prices
ArgumentTypeDefault
tickerstrRequired
start_datestr | NoneNone
end_datestr | NoneNone
resample_freqstr | NoneNone
limitint | NoneNone
offsetint0
chunk_daysint | NoneNone
max_upstream_callsint12
Full tool notes
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.
tiingo_get_smallx_quotesOther products

UNVERIFIED PRODUCT STATUS: this page exists in Tiingo's documentation but is absent from the navigation; availability and entitlement are unconfirmed.

Arguments for tiingo_get_smallx_quotes
ArgumentTypeDefault
tickerstr | NoneNone
tickerslist[str] | NoneNone
all_tickersboolFalse
Full tool notes
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.
tiingo_get_splitsFunds & actions

Splits across all tickers for one ex-date (GET /tiingo/corporate-actions/splits).

Arguments for tiingo_get_splits
ArgumentTypeDefault
ex_datestr | NoneNone
Full tool notes
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.
tiingo_get_ticker_distributionsFunds & actions

Distribution history for one ticker (GET /tiingo/corporate-actions/{ticker}/distributions).

Arguments for tiingo_get_ticker_distributions
ArgumentTypeDefault
tickerstrRequired
start_ex_datestr | NoneNone
end_ex_datestr | NoneNone
limitint | NoneNone
offsetint0
Full tool notes
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).
tiingo_get_ticker_splitsFunds & actions

Split history for one ticker (GET /tiingo/corporate-actions/{ticker}/splits).

Arguments for tiingo_get_ticker_splits
ArgumentTypeDefault
tickerstrRequired
start_ex_datestr | NoneNone
end_ex_datestr | NoneNone
limitint | NoneNone
offsetint0
Full tool notes
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.
tiingo_list_news_archivesNews & archives

List available news bulk-download archives (GET /tiingo/news/bulk_download).

Arguments for tiingo_list_news_archives
ArgumentTypeDefault
No arguments.
Full tool notes
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_list_supported_tickersDiscovery

Tiingo's public supported-tickers catalog (supported_tickers.zip, updated daily).

Arguments for tiingo_list_supported_tickers
ArgumentTypeDefault
exchangestr | NoneNone
asset_typestr | NoneNone
price_currencystr | NoneNone
ticker_prefixstr | NoneNone
has_price_historyboolFalse
limitint | None200
offsetint0
refreshboolFalse
Full tool notes
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.
tiingo_sample_boats_streamStreams

Collect a bounded sample from the BOATS overnight WebSocket feed (wss://api.tiingo.com/boats) - BETA.

Arguments for tiingo_sample_boats_stream
ArgumentTypeDefault
tickerslist[str] | NoneNone
all_tickersboolFalse
threshold_levelint | NoneNone
duration_secondsfloat | NoneNone
max_messagesint | NoneNone
Full tool notes
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.
tiingo_sample_crypto_streamStreams

Collect a bounded sample from the crypto WebSocket feed (wss://api.tiingo.com/crypto, service crypto_data).

Arguments for tiingo_sample_crypto_stream
ArgumentTypeDefault
tickerslist[str] | NoneNone
all_tickersboolFalse
threshold_levelint | NoneNone
duration_secondsfloat | NoneNone
max_messagesint | NoneNone
Full tool notes
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.
tiingo_sample_equity_realtime_streamStreams

Collect a bounded sample from the Equity Realtime WebSocket feed (wss://api.tiingo.com/equity/intraday, service cons) - BETA.

Arguments for tiingo_sample_equity_realtime_stream
ArgumentTypeDefault
tickerslist[str] | NoneNone
all_tickersboolFalse
threshold_levelint | NoneNone
duration_secondsfloat | NoneNone
max_messagesint | NoneNone
Full tool notes
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.
tiingo_sample_fx_streamStreams

Collect a bounded sample from the FX WebSocket feed (wss://api.tiingo.com/fx).

Arguments for tiingo_sample_fx_stream
ArgumentTypeDefault
tickerslist[str] | NoneNone
all_tickersboolFalse
threshold_levelint | NoneNone
duration_secondsfloat | NoneNone
max_messagesint | NoneNone
Full tool notes
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.
tiingo_sample_iex_streamStreams

Collect a bounded sample from the IEX WebSocket feed (wss://api.tiingo.com/iex).

Arguments for tiingo_sample_iex_stream
ArgumentTypeDefault
tickerslist[str] | NoneNone
all_tickersboolFalse
threshold_levelint | NoneNone
duration_secondsfloat | NoneNone
max_messagesint | NoneNone
Full tool notes
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.
tiingo_search_tickersDiscovery

Search Tiingo's asset database by ticker or name (beta).

Arguments for tiingo_search_tickers
ArgumentTypeDefault
querystrRequired
exact_ticker_matchbool | NoneNone
include_delistedbool | NoneNone
limitint | NoneNone
path_formboolFalse
Full tool notes
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.
tiingo_test_connectionConnection

Verify that the current Tiingo API token is accepted (GET /api/test/).

Arguments for tiingo_test_connection
ArgumentTypeDefault
No arguments.
Full tool notes
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.
tiingo_test_stream_connectionStreams

Verify WebSocket connectivity and authentication against wss://api.tiingo.com/test.

Arguments for tiingo_test_stream_connection
ArgumentTypeDefault
duration_secondsfloat | NoneNone
Full tool notes
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.

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

A better question.
A useful answer.

Start with a precise universe and a bounded date range. These examples are prompts and tool arguments, not investment advice or live results.

01 / EQUITIES

Make a price series explicit.

“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"
})
02 / MARKET MICROSTRUCTURE

Sample. Don’t imply a feed.

“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.

AuthenticateSampleClose
03 / FUNDAMENTALS + NEWS

Put an observation in context.

“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.

StatementsHeadlinesProvenance

05 / THE FIELD GUIDE

The details that
make it work.

Connection is only the beginning. Understand identifiers, permissions, response shapes and limits before putting the data into a workflow.

01

Keep the two credentials distinct.

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.

  • v1: send X-API-Key: YOUR_PROVIDER_KEY with each request. Authorization: Bearer YOUR_PROVIDER_KEY is a compatibility option on this endpoint only.
  • v2: complete discovery and authorization through the client. It sends the server-issued Bearer access token and refreshes it through the OAuth flow. Do not paste your raw provider key into the Bearer field here.
  • stdio: the local process reads 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.

02

Identifiers are part of the contract.

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.

03

Preserve the meaning of the response.

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.

04

Smaller output does not mean fewer API calls.

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.

05

Diagnose the boundary, not just the message.

Common connection and data failures
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.
06

Your account. Your access. Your responsibility.

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.

07

A separate host for the server.

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

A few final
clarifications.

Do v1 and v2 return different data?

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.

Can the server trade or manage my portfolio?

No. These tools retrieve data. They do not execute orders, move funds or modify your provider account.

Does this include a data subscription?

No. Bring your own Tiingo account and key. The provider decides which products, symbols and history you can access; check its current terms directly.

Which AI client should I use?

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.

What should the assistant do with missing data?

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.

Are every Tiingo product and feed included?

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.

Does a stream tool keep running in the background?

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.

Connect once.
Ask with precision.

Open connection guide ↗