Start with the market.
Discover exchanges and symbols, then retrieve end-of-day quotes and bounded historical requests. Preserve the provider’s identifiers.
PRICES · EXCHANGES · SYMBOLSTHE EODDATA MCP CONNECTOR
Give your AI a direct line to EODData. Explore prices, company fundamentals and corporate actions through 22 focused, read-only tools.
“Give me the latest available AAPL quote.
Keep the date and currency.”
get_quoteread-only ↗
Illustrative workflow · no live prices displayed
01 / BUILT FOR RESEARCH
Model Context Protocol lets a compatible AI client discover tools and request structured data. This server connects that workflow to your EODData account.
Discover exchanges and symbols, then retrieve end-of-day quotes and bounded historical requests. Preserve the provider’s identifiers.
PRICES · EXCHANGES · SYMBOLSBring company profiles, fundamentals, splits, dividends and provider-supplied technical indicators into the same conversation.
COMPANIES · ACTIONS · TECHNICALSEmbedded reference resources give your client endpoint and schema context. The page below explains setup, arguments and practical limits.
TOOLS · REFERENCES · PROMPTS02 / 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 EODData key, then approve the read-only scope.
https://your-domain.example/eoddata-mcp-ayx/mcp/v2
eoddata:read · Authorization Code + PKCE
For clients that support custom HTTP headers, send your EODData key in
X-API-Key. Use your own account; never share a key between users.
https://your-domain.example/eoddata-mcp-ayx/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 an EODData account ↗, then retrieve the key from My Account → API ↗. Check your dataset permissions.
Pick OAuth or an API-key header. Use the config example that matches your client; approve the server’s tools when prompted.
Start with list_exchanges or a symbol search. For a key-free
catalog check, use list_currencies. 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. 22 read-only tools correspond to the pinned EODData REST contract.
Get details for a single exchange (EODData /Exchange/Get).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
Get details for a single exchange (EODData /Exchange/Get).
Published access: Standard+ (API key required). The upstream service
is the final authorization authority.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
Returns:
Exchange object: code, name, dateStamp, type, country, currency,
timeZone, mic, suffix. Fields may be null/absent.Get fundamental data for one symbol (EODData /Fundamental/Get).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
symbol_code | str | Required |
Get fundamental data for one symbol (EODData /Fundamental/Get).
Published access: Gold+ (Fundamental Data). The upstream service is
the final authorization authority.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
symbol_code (str): Symbol code within that exchange, e.g. 'AAPL'.
Returns:
Fundamental object: exchangeCode, symbolCode,
marketCapitalization, ebitda, peg, bookValue, dividendPerShare,
dividendYield, earningsPerShare, revenuePerShare, priceToSales,
priceToBook, beta, sharesOutstanding, dividendDate, grossMargin,
profitMargin, operatingMargin, returnOnAssets, returnOnEquity,
revenue, grossProfit, trailingPE, forwardPE, totalCash,
totalCashPerShare, totalDebt, totalDebtToEquity,
bookValuePerShare. Fields may be null/absent.Get the company profile for one symbol (EODData /Profile/Get).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
symbol_code | str | Required |
Get the company profile for one symbol (EODData /Profile/Get).
Published access: Gold+ (Company Profiles). The upstream service is
the final authorization authority.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
symbol_code (str): Symbol code within that exchange, e.g. 'AAPL'.
Returns:
Profile object: exchangeCode, symbolCode, name, description,
type, currency, country, figi, isin, cusip, cik, lei, sector,
industry, about, address, phone, website. Fields may be null/absent.Get a single end-of-day quote for one symbol (EODData /Quote/Get).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
symbol_code | str | Required |
date | str | None | None |
Get a single end-of-day quote for one symbol (EODData /Quote/Get).
Published access: Standard+; how far back 'date' may reach depends on the
account's EOD-history entitlement. The upstream service is the final
authorization authority.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
symbol_code (str): Symbol code within that exchange, e.g. 'AAPL'.
date (str, optional): Trading date YYYY-MM-DD; latest when omitted.
Returns:
Quote object: exchangeCode, symbolCode, name, interval, dateStamp,
open, high, low, close, adjustedClose, volume, openInterest, bid,
ask, previous, change, currency. Fields may be null/absent.Get details for a single symbol (EODData /Symbol/Get).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
symbol_code | str | Required |
Get details for a single symbol (EODData /Symbol/Get).
Published access: Standard+. Nested premium sections (profile,
fundamental, technical) may be absent on lower tiers; the upstream
service is the final authorization authority.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
symbol_code (str): Symbol code within that exchange, e.g. 'AAPL'.
Returns:
Symbol object: code, name, exchangeCode, type, currency, figi,
dateStamp, open/high/low/close, volume, openInterest, previous,
change, bid, ask, plus optional nested quotes, splits, dividends,
profile, fundamental, technical. Fields may be null/absent.Get pre-built technical indicators for one symbol (EODData /Technical/Get).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
symbol_code | str | Required |
Get pre-built technical indicators for one symbol (EODData /Technical/Get).
Published access: Silver+ (Technical Indicators). The upstream
service is the final authorization authority.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
symbol_code (str): Symbol code within that exchange, e.g. 'AAPL'.
Returns:
Technical object (70 fields): quarter/biannual/YTD change;
week/month/year low, high, change, volume families; SMA/WMA/EMA
5-200; MACD; stochastic 9/14; RSI 9/14; WPR/MTM/ROC; Bollinger
bands; OBV/AD/Aroon/DMI/ATR/CCI/SAR; volatility and liquidity.
Fields may be null/absent.List all countries known to EODData (EODData /Country/List).
| Argument | Type | Default |
|---|---|---|
| No arguments. | ||
List all countries known to EODData (EODData /Country/List).
Metadata operation: works without an API key on any plan.
Returns:
Array of objects:
- code (str): ISO country code (e.g. "US").
- name (str): country name (e.g. "United States").List all currencies known to EODData (EODData /Currency/List).
| Argument | Type | Default |
|---|---|---|
| No arguments. | ||
List all currencies known to EODData (EODData /Currency/List).
Metadata operation: works without an API key on any plan.
Returns:
Array of objects:
- code (str): currency code (e.g. "USD").
- name (str): currency name (e.g. "US Dollar").List dividends for an exchange (EODData /Dividends/List).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
limit | int | None | 1000 |
offset | int | 0 |
List dividends for an exchange (EODData /Dividends/List).
Published access: Bronze+ (Dividend Information). The upstream
service is the final authorization authority.
Pagination is MCP-local only: the full upstream list is always
retrieved and sliced here. The response is an envelope {pagination:
{total, offset, limit, returned, truncated}, data: [...]}.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of Dividend objects: exchangeCode,
symbolCode, dateStamp, paymentDateStamp, amount, source. Fields
may be null/absent.List dividends for one symbol (EODData /Dividends/List by symbol).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
symbol_code | str | Required |
limit | int | None | 1000 |
offset | int | 0 |
List dividends for one symbol (EODData /Dividends/List by symbol).
Published access: Bronze+ (Dividend Information). The upstream
service is the final authorization authority.
Pagination is MCP-local only; the response is an envelope
{pagination: {total, offset, limit, returned, truncated}, data: [...]}.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
symbol_code (str): Symbol code within that exchange, e.g. 'AAPL'.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of Dividend objects: exchangeCode,
symbolCode, dateStamp, paymentDateStamp, amount, source. Fields
may be null/absent.List all exchange types known to EODData (EODData /ExchangeType/List).
| Argument | Type | Default |
|---|---|---|
| No arguments. | ||
List all exchange types known to EODData (EODData /ExchangeType/List).
Metadata operation: works without an API key on any plan.
Returns:
Array of objects with a single field:
- name (str): exchange type name (e.g. "Stock Exchange").List all exchanges available to the account (EODData /Exchange/List).
| Argument | Type | Default |
|---|---|---|
| No arguments. | ||
List all exchanges available to the account (EODData /Exchange/List).
Published access: Standard+ (API key required). Which exchanges carry
data for your account depends on the membership tier; the upstream
service is the final authorization authority.
Returns:
Array of Exchange objects: code, name, dateStamp, type, country,
currency, timeZone, mic, suffix. Fields may be null/absent.List fundamental data for every symbol on an exchange (EODData /Fundamental/List).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
limit | int | None | 1000 |
offset | int | 0 |
List fundamental data for every symbol on an exchange (EODData /Fundamental/List).
Published access: Gold+ (Fundamental Data). The upstream service is
the final authorization authority.
Pagination is MCP-local only: the full upstream list is always
retrieved and sliced here. The response is an envelope {pagination:
{total, offset, limit, returned, truncated}, data: [...]}.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of Fundamental objects: exchangeCode,
symbolCode, marketCapitalization, ebitda, peg, bookValue,
dividendPerShare, dividendYield, earningsPerShare,
revenuePerShare, priceToSales, priceToBook, beta,
sharesOutstanding, dividendDate, grossMargin, profitMargin,
operatingMargin, returnOnAssets, returnOnEquity, revenue,
grossProfit, trailingPE, forwardPE, totalCash, totalCashPerShare,
totalDebt, totalDebtToEquity, bookValuePerShare. Fields may be
null/absent.List company profiles for an exchange (EODData /Profile/List).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
limit | int | None | 1000 |
offset | int | 0 |
List company profiles for an exchange (EODData /Profile/List).
Published access: Gold+ (Company Profiles). The upstream service is
the final authorization authority.
Pagination is MCP-local only: the full upstream list is always
retrieved and sliced here. The response is an envelope {pagination:
{total, offset, limit, returned, truncated}, data: [...]}.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of Profile objects: exchangeCode,
symbolCode, name, description, type, currency, country, figi,
isin, cusip, cik, lei, sector, industry, about, address, phone,
website. Fields may be null/absent.List end-of-day quotes for every symbol on an exchange (EODData /Quote/List).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
date | str | None | None |
limit | int | None | 1000 |
offset | int | 0 |
List end-of-day quotes for every symbol on an exchange (EODData /Quote/List).
Published access: Standard+; how far back 'date' may reach depends on
the account's EOD-history entitlement (30 days on Standard up to 10
years on Platinum). The upstream service is the final authorization
authority.
Pagination is MCP-local only: the full upstream list is always
retrieved and sliced here. The response is an envelope {pagination:
{total, offset, limit, returned, truncated}, data: [...]}.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
date (str, optional): Trading date YYYY-MM-DD; latest when omitted.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of Quote objects: exchangeCode,
symbolCode, name, interval, dateStamp, open, high, low, close,
adjustedClose, volume, openInterest, bid, ask, previous, change,
currency. Fields may be null/absent.Get historical quotes for one symbol at a chosen interval (EODData /Quote/List).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
symbol_code | str | Required |
interval | str | Required |
Get historical quotes for one symbol at a chosen interval (EODData /Quote/List).
Intervals: '1','5','10','15','30' minutes, 'h' hourly, 'd' daily,
'w' weekly, 'm' monthly, 'q' quarterly, 'y' yearly.
Published access: daily+ history depth follows the account's
EOD-history entitlement; the membership matrix marks 1/5/10/15/30/60
minute bars Platinum-only while granting Gold 30 days of intraday
history (a published ambiguity), and minute-bar data is currently only
available for US equity and futures exchanges. The upstream service is
the final authorization authority.
Pagination is MCP-local only: the full upstream list is always
retrieved and sliced here. The response is an envelope {pagination:
{total, offset, limit, returned, truncated}, data: [...]}.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
symbol_code (str): Symbol code within that exchange, e.g. 'AAPL'.
interval (str): One of 1/5/10/15/30/h/d/w/m/q/y.
from_date (str, optional): Start date YYYY-MM-DD.
to_date (str, optional): End date YYYY-MM-DD.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of Quote objects: exchangeCode,
symbolCode, name, interval, dateStamp, open, high, low, close,
adjustedClose, volume, openInterest, bid, ask, previous, change,
currency. Fields may be null/absent.List stock splits for an exchange (EODData /Splits/List).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
limit | int | None | 1000 |
offset | int | 0 |
List stock splits for an exchange (EODData /Splits/List).
Published access: Bronze+ (Splits Information). The upstream service
is the final authorization authority.
Pagination is MCP-local only: the full upstream list is always
retrieved and sliced here. The response is an envelope {pagination:
{total, offset, limit, returned, truncated}, data: [...]}.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of Split objects: exchangeCode,
symbolCode, dateStamp, ratio, multiplier, source. Fields may be
null/absent.List stock splits for one symbol (EODData /Splits/List by symbol).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
symbol_code | str | Required |
limit | int | None | 1000 |
offset | int | 0 |
List stock splits for one symbol (EODData /Splits/List by symbol).
Published access: Bronze+ (Splits Information). The upstream service
is the final authorization authority.
Pagination is MCP-local only; the response is an envelope
{pagination: {total, offset, limit, returned, truncated}, data: [...]}.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
symbol_code (str): Symbol code within that exchange, e.g. 'AAPL'.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of Split objects: exchangeCode,
symbolCode, dateStamp, ratio, multiplier, source. Fields may be
null/absent.List all symbol types known to EODData (EODData /SymbolType/List).
| Argument | Type | Default |
|---|---|---|
| No arguments. | ||
List all symbol types known to EODData (EODData /SymbolType/List).
Metadata operation: works without an API key on any plan.
Returns:
Array of objects with a single field:
- name (str): symbol type name (e.g. "Common Stock", "ETF").List all symbols on an exchange (EODData /Symbol/List).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
limit | int | None | 1000 |
offset | int | 0 |
List all symbols on an exchange (EODData /Symbol/List).
Published access: Standard+; exchange availability depends on the
membership tier. The upstream service is the final authorization
authority.
Pagination is MCP-local only: the full upstream list is always
retrieved (full quota/transfer cost) and sliced here to bound the MCP
payload. The response is an envelope {pagination: {total, offset,
limit, returned, truncated}, data: [...]} so truncation is explicit.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of Symbol objects: code, name,
exchangeCode, type, currency, figi, dateStamp, OHLCV fields,
openInterest, previous, change, bid, ask. Fields may be null/absent.List pre-built technical indicators for every symbol on an exchange (EODData /Technical/List).
| Argument | Type | Default |
|---|---|---|
exchange_code | str | Required |
limit | int | None | 1000 |
offset | int | 0 |
List pre-built technical indicators for every symbol on an exchange
(EODData /Technical/List).
Published access: Silver+ (Technical Indicators). The upstream
service is the final authorization authority.
Pagination is MCP-local only: the full upstream list is always
retrieved and sliced here. The response is an envelope {pagination:
{total, offset, limit, returned, truncated}, data: [...]}.
Args:
exchange_code (str): EODData exchange code, e.g. 'NASDAQ'.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of Technical objects (70 fields):
quarter/biannual/YTD change; week/month/year low, high, change,
volume families; SMA/WMA/EMA 5-200; MACD; stochastic 9/14;
RSI 9/14; WPR/MTM/ROC; Bollinger bands; OBV/AD/Aroon/DMI/ATR/CCI/
SAR; volatility and liquidity. Fields may be null/absent.Search symbols across exchanges by free text (EODData /Symbol/Search).
| Argument | Type | Default |
|---|---|---|
search_string | str | Required |
limit | int | None | 1000 |
offset | int | 0 |
Search symbols across exchanges by free text (EODData /Symbol/Search).
Published access: Standard+. Sentence-like searches with spaces are
supported; the text travels as one URL-encoded path segment.
Pagination is MCP-local only: the full upstream result list is always
retrieved and sliced here. The response is an envelope {pagination:
{total, offset, limit, returned, truncated}, data: [...]}.
Args:
search_string (str): Free-text search, e.g. 'apple inc'.
limit (int, optional): Max rows returned (default 1000); None for all.
offset (int): Rows to skip (default 0).
Returns:
Envelope with data rows of SearchResult objects: symbolGuid,
exchangeCode, exchangeName, symbolCode, symbolName, symbolType,
figi, isin, cusip, currency, country, industry, sector, last,
matches. Fields may be null/absent.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 is exposed under eoddata://references/....
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.
“Find Apple on NASDAQ. Confirm its identifier and exchange before fetching a quote.”
Resolve through symbol discovery, then preserve the exchange/symbol pair.
get_quote({
"exchange_code": "NASDAQ",
"symbol_code": "AAPL"
})
“Check whether a price jump coincides with a split or dividend. Keep raw and adjusted prices separate.”
Combine bounded quote history with list_splits_by_symbol and
list_dividends_by_symbol. Cite dates and missing observations.
“Give me a source-backed company profile and available fundamentals. Identify unavailable fields.”
Use get_profile and get_fundamental for the resolved
instrument. Request technical indicators only when they are relevant and permitted.
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 EODData. 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.
EODDATA_API_KEY from
its environment. No remote login flow is involved.
Reference metadata tools do not require a provider key; most market-data tools do. 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.
EODData identifies an instrument using an exchange code and a symbol code
separately, for example exchange_code="NASDAQ" and
symbol_code="AAPL". This is not EODHD’s dotted-ticker syntax.
Use list_exchanges, list_symbols or
search_symbols before requesting an unfamiliar instrument. Pass dates
as YYYY-MM-DD. Omitting a supported date argument can select the latest
available observation, not necessarily today.
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.
Single-object tools return the provider object. List tools include a local
pagination envelope with pagination and data. Retain the
quote’s date, currency and interval, and distinguish close from
adjustedClose.
Company, fundamental and technical fields depend on the provider contract and your entitlement. Technical indicators are provider-supplied values; this server does not compute a new investment signal.
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.
When requesting quote history, supply a reasonable start/end range and a supported interval. Fetch only the exchange and symbols needed for the question. Different endpoints have different allowed parameters—consult the tool signature rather than applying a parameter to every tool.
Optional bounded retries may be enabled by the operator. Do not assume an error means the request was never sent upstream. Server-side response and concurrency limits are distinct from provider plan quotas.
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.
Server usage statistics are opt-in and disabled by default; a deployment may enable pseudonymous aggregate counts. 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 EODData 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 EODData 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. This project connects to EODData at eoddata.com. EODHD is a different provider. An EODHD key, dotted ticker example or product entitlement should not be assumed to work here.
MAKE YOUR NEXT QUESTION COUNT.