Valuein
Universe
PIT-safe

Point-in-Time Universe

get_pit_universe
Sample and above

Use this tool to answer questions about historical index membership — e.g. "Was Company X in the S&P 500 on date Y?" or "Which companies were in the Russell 2000 on 2010-01-01?" Use this INSTEAD OF `search_companies` when the question involves a specific historical date or whe...

Example Call

example_call.pypython
# Using the Valuein MCP server from Python (via MCP SDK)# Or call directly from Claude / Cursor after setup result = await client.call_tool(    "get_pit_universe",    arguments={})print(result)

Direct tool call:get_pit_universe(as_of_date="2020-03-01", index="sp500")

Try it now

No token required

Paste this in your terminal — the free tier returns real sample data without authentication.

try-it.shbash
# No auth required — the Sample tier covers a large-cap US benchmark universe with a 5-year window.# Add -H "Authorization: Bearer $VALUEIN_TOKEN" for the full universe and history.curl -X POST https://mcp.valuein.biz/mcp \    -H "Content-Type: application/json" \    -H "Accept: application/json, text/event-stream" \    -d '{        "jsonrpc": "2.0",        "id": 1,        "method": "tools/call",        "params": {          "name": "get_pit_universe",          "arguments": {            "limit": 3          }        }      }'

Inputs

ParameterTypeRequiredDescription
index"sp500" | "russell1000" | "russell2000" | "russell3000"optionalIndex filter. 'sp500' (~500 large caps; reconstructed history from 1996, incomplete before ~2007, check pit_safe), 'russell1000' (~1000 large/mid), 'russell2000' (~2000 small caps), 'russell3000' (~3000 broad market) — the three Russell indices carry fund-derived history back to 2000-09-30 at medium confidence, with observation spacing that widens before 2007. Omit for no index filter (sector-only or full universe queries).
sectorstringoptionalSector filter (case-insensitive substring) over the SIC-derived, GICS-aligned label (not licensed GICS — see tool description). E.g. 'Technology', 'Energy'.
as_of_datestringoptionalHistorical date (YYYY-MM-DD) for survivorship-free construction. Index queries use index_membership join/leave dates (entrants after the date excluded, later-removed members kept); sector queries use security valid_from/valid_to. Omit for the current universe.
is_activebooleanoptionalFilter to active (currently trading) companies only. Omit to include all. WARNING: setting this to true on a HISTORICAL query reintroduces survivorship bias — companies that were active on as_of_date but later went bankrupt or got acquired will be filtered out. Leave unset for true PIT backtests.
include_share_classesbooleanoptionalfalse (default) collapses to one row per CIK (index-provider convention — BRK counts once, not BRK-A + BRK-B). true returns every share-class row (GOOG and GOOGL separately) — for security-level analysis only.Default: false
tickerstringoptionalCheck ONE company: a ticker or a CIK (SEC identifier), e.g. 'AAPL' or '0000320193'. Returns that company's row if it was a member on as_of_date, none if it was not. A ticker matches the symbol listed ON that date, and a since-delisted member can carry no ticker at all (enriched=false), so prefer the CIK for historical checks. Omit to list the universe.
limitintegeroptionalRows per page (1–3500; at most 250 are inlined per call). Defaults to 100. `universe_size` always states the full matched count; when more rows remain after this page the response carries a `truncation` envelope — call again with `offset` = its `next_offset`. Universe is deduped to one row per CIK (SP500 ~505, Russell 3000 ~3050).Default: 100
offsetintegeroptionalZero-based row offset where this page starts. Pass the previous response's `truncation.next_offset` to fetch the next page. Defaults to 0.Default: 0

Output Fields

as_of_dateindexsectoruniverse_sizereturned_rowscompletelimit_truncatedsurvivorship_freecoverage_gapcoverageconfidence_summarynotetruncationcompanies

Paging

limit is the page size and offset is where the page starts. While rows remain, the result carries truncation with next_offset: call again with the same arguments and offset set to truncation.next_offset, until a result has no truncation.

Errors and paging for every tool: the agent contract.

Example Response

Illustrative
response.jsonjson
{  "as_of_date": null,  "index": null,  "sector": "Technology",  "universe_size": null,  "returned_rows": null,  "complete": null,  "limit_truncated": null,  "survivorship_free": null}

Shape only — field names match the live schema; values are placeholders, not real filings. Returns the S&P 500 members on March 1, 2020, before the COVID-era additions: `universe_size` is the full count, the first page holds `limit` rows (default 100), and `truncation.next_offset` is the `offset` of the next page.

Notes

This is the only tool that correctly handles the universe construction problem for backtesting: using the current S&P 500 list for 2020 data introduces survivorship bias. Each row's `is_sp500` is null unless the query was `index="sp500"` (membership was not read, so it is unknown, not false). Pass `ticker` (a ticker or a CIK) to check one company's membership on `as_of_date`; prefer the CIK for delisted members.

Try this tool

Get tokenAll tools
CategoryUniverse
PIT-safeYes
Min planSample
Inputs8 (0 required)

Plan Access

Sample (guest)
Available
Benchmark (token)
Available
Pro
Available
Institutional
Available

Index names are trademarks of their owners; Valuein is not affiliated with or endorsed by any index provider.