History of Market
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Read-only U.S. stock market history: S&P 500 since 1928, CAPE, drawdowns, index changes.
| Author | com.historyofmarket |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2086 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"History of Market": {
"url": "https://historyofmarket.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (5)
get_latestread-onlyCurrent headline readings (value, unit, observation date) for the site's charts: S&P 500 level, Shiller CAPE, forward P/E for the S&P 500, Nasdaq 100, SOX and sector ETFs, VIX, drawdown from the high, breadth, Magnificent 7 weight and more. Pass `id` for one chart, or omit it for all.
Parameters:
id— string — Chart id, e.g. "pe" (Shiller CAPE), "forward-pe", "ndx-forward-pe", "drawdown", "vix". Omit for every reading.
Hints: read-only yes · destructive no · idempotent yes · open-world no
annual_returnsread-onlyCalendar-year returns by year, price return and total return (dividends reinvested), with the arithmetic mean and compound annual rate over the complete years in the range. Indexes: sp500 (from 1928), ndx, sox, xlk, xlf, xly, xlp. The current year is year-to-date and flagged `ytd`.
Parameters:
index— string — Which index or ETF. Default sp500.to_year— integer — Last year to include.from_year— integer — First year to include.
Hints: read-only yes · destructive no · idempotent yes · open-world no
index_changesread-onlyConstituent changes with effective date, the company added, the company removed and the reason. sp500 from 2016, ndx from 2020. Newest first.
Parameters:
index— string — Default sp500.limit— integer — Default 20.since— string — Only changes effective on or after this date (YYYY-MM-DD).ticker— string — Only changes that add or remove this ticker.
Hints: read-only yes · destructive no · idempotent yes · open-world no
search_chartsread-onlySearch the site's charts by topic or question (e.g. "bear markets", "Shiller CAPE", "Nasdaq 100 drawdown", "monthly seasonality"). Returns each chart's title, the question it answers, its page and the dataset path to pass to get_dataset.
Parameters:
query(required) — string — Words to match against chart titles and the questions they answer.limit— integer — Default 10.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_datasetread-onlyRead one published dataset (the JSON behind a chart), e.g. "sp500/drawdowns", "sp500/pe", "ndx/forward-pe", "recessions". Rows can be filtered by `since`/`until` on their `date` (or `year`). A result is capped at about 60,000 characters: when a file is larger (long daily series), each array keeps its most recent rows and the cut is reported under `windowed`. Scalars and summary fields are always included.
Parameters:
path(required) — string — Dataset path without /api/ and .json, as returned by search_charts.tail— integer — Rows kept per array after filtering, from the end. By default every row is returned when the result fits; long daily series are cut to their most recent rows and reported under `windowed`.since— string — Keep rows dated on or after this (YYYY-MM-DD or YYYY).until— string — Keep rows dated on or before this (YYYY-MM-DD or YYYY).
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.