slashyear MCP server
Commit Oct 27, 2026Allows an AI client to query a corpus of historical events extracted verbatim from cited Wikipedia revisions.
Also known as ctrl-maud/slashyear
- Stars
- 1
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- —
- Last commit
- Oct 27, 2026
- License
- Apache-2.0
What is slashyear MCP?
slashyear allows an AI client to query a corpus of historical events extracted verbatim from cited Wikipedia revisions.
Summary generated from the project's README
About slashyear MCP server
Querying a corpus of historical events extracted verbatim from cited Wikipedia revisions is what slashyear enables for AI clients. Instead of relying on a language model to paraphrase or summarize history, this server provides access to a dataset where every sentence is a direct quote from a specific, frozen Wikipedia revision ID. This ensures that citations remain accurate and resolvable even if the original Wikipedia article is later edited or rewritten.
Developers can connect to the MCP server hosted via Cloudflare functions to access these records without needing an API key or signing up for an account. The data is organized by year, calendar day, subject, century, decade, and theme. Because the server uses specific revision IDs and section anchors, it offers a verifiable way to join, diff, and cite historical facts rather than just reading them. This makes it a specialized tool for users who require high-fidelity historical data that can be checked against original sources.
What you can do with it
- 1Verifying historical claimsAn AI client can check a specific historical claim against a corpus of dated entries to see if the record supports it.
- 2Retrieving verbatim historical quotesA developer can task an AI with finding exact sentences from a specific year to avoid model hallucinations.
- 3Accessing frozen Wikipedia revisionsUsers can query specific revision IDs to ensure the text they are citing will not change over time.
- 4Analyzing historical data by themeAn AI can search for events categorized by specific decades, centuries, or subjects.
Written from the project's README. Every use case is checked against a quote from it.
README
View on GitHubslashyear
Every sentence published on slashyear.com is quoted verbatim from a numbered English Wikipedia revision, and the row carries that revision id, the article title and the section anchor it came from. No language model writes, paraphrases or summarises any published wording. This repository is the pipeline that produces those rows, the site that serves them, and the gates that prove the claim.
The rows are the point. Wikipedia publishes prose, one article per year. slashyear publishes the individual dated entries underneath that prose as records — tagged with year, calendar day, subject, century, decade, theme and source revision — so a year can be queried, joined, diffed and cited rather than only read.
What a row is
{
"date": "January 20",
"text": "January 20 – Richard Nixon is sworn in as the 37th president of the United States of America.",
"cite": {
"url": "https://en.wikipedia.org/w/index.php?oldid=1373164180#January",
"title": "1969",
"revid": 1373164180,
"section": "Events › January"
}
}
text is the source line with wiki markup mechanically removed and nothing else changed. revid
is a frozen revision, not a live page, so the citation still resolves to the same words years from
now even if the article is rewritten. That is what makes the corpus checkable instead of merely
attributed.
The guarantee, and how it is checked
pipeline/verify.py walks the full chain for every bullet on every page:
- the published text equals
clean_line()applied to the stored wikitext line — nothing drifted in rendering; - that wikitext line appears verbatim in the stored article revision;
- with
--live, the stored revision is byte-identical to what Wikipedia serves for that revision id, so the local copy was never edited or corrupted.
A failure at any step means a published sentence exists that no source supports, which is the one
defect this project cannot ship with, so the exit code is non-zero and a build can be gated on it.
Nine further gates check the things verify cannot see — coverage against a fixed event list,
famous-case recall, per-page-kind surface invariants, an independent re-render, life dates against
Wikidata, section themes against the article's own headings, the exported HTML, and the live
machine surface. See docs/PIPELINE.md and tests/.
Reproduce it
git clone https://github.com/ctrl-maud/slashyear && cd slashyear
python3 -m venv .venv && .venv/bin/pip install requests numpy
scripts/bootstrap.sh # fetch the published data snapshot (no re-harvest)
scripts/reproduce.sh # rebuild the pages from it and run the gates — prints PASS/FAIL
bootstrap.sh pulls the released snapshot from this repository's v1.0.0 release because the raw
harvest is hundreds of megabytes of Wikipedia revisions and takes hours. To rebuild the corpus from Wikipedia itself
instead, start at pipeline/harvest.py and follow the stage order in
docs/PIPELINE.md — the order matters, and the document explains where it bites.
Layout
| path | what it is |
|---|---|
pipeline/ |
harvest → extract → deaths → classify → notability → build → the gates → postbuild |
trainfilter/ |
prose filters used to score corpus lines for training-data use |
site/ |
the Next.js source for slashyear.com (no build output, no node_modules) |
site/functions/, site/edge/ |
the search API and the MCP server, as Cloudflare functions |
tests/ |
one runner that executes the gates in the order a stranger should run them |
docs/ |
pipeline, schema, API, SEO, coverage audit, and the review archive |
docs/reviews/ |
every self-review round, kept deliberately — the audit trail is part of the claim |
Getting the data
- Reproduction snapshot —
slashyear-data-snapshot.tar.gz(105 MB) on the v1.0.0 release: the extracted claims, the Wikipedia revisions they came from, and the caches the gates need. - Bulk dumps —
https://slashyear.com/dump/events.ndjson.gz,years.ndjson.gz,entities.ndjson.gz, plus a Frictionlessdatapackage.json. - Static JSON API —
https://slashyear.com/api/year/1969.json,/api/date/july-20.json,/api/entity/byzantine-empire.json, and an OpenAPI description at/api/openapi.json. CORS-open, no key, no rate limit, no signup. See docs/API.md. - MCP server —
https://slashyear.com/mcp, so a model can query the corpus directly. No key; client setup in llms-install.md.
Beyond the year pages
- The world on a date —
/api/asof/1969-07-20(page): the entries dated to that day, every state's office holders that year, the Hot 100 No. 1 in force, U.S. prices, world population, official series, Federal Reserve exchange rates for that day and the year's Nobel Prizes, each part with its source.site/edge/asof.js. - Claim checking —
/api/check?claim=…(page). Leaders, No. 1 singles and Nobel Prizes get a structured verdict, because there the record is complete enough to say "contradicted". Any other claim gets the dated entries holding its key words and where the record dates them. No model writes a verdict. - Where the sources disagree —
pipeline/disagreements.py→/api/disagreements.json(page). Every date the build's cross-checks found in conflict: state-leader lists vs Wikidata, year-article births and deaths vs Wikidata, the Nobel Prize API vs Wikidata. Both sides quoted with their revision or item; no side picked. - Nobel Prizes —
/api/nobel.json, from the Nobel Prize API (CC0), each laureate kept only where Wikidata records the same prize in the same year. - Official series —
/api/official/index.json(page): U.S. and scientific series taken from the publishing agency and checked against a second copy before they go out.
Licensing
- Code — Apache-2.0 (LICENSE).
- Rows — CC BY-SA 4.0 (LICENSE-DATA). The text is derived from English Wikipedia, which is share-alike, so derivatives inherit that licence. Attribution goes to the Wikipedia contributors of the cited revisions; the citation shipped with every row is what makes that attribution possible.
Citing
CITATION.cff is present, so GitHub renders a "Cite this repository" button.
slashyear MCP questions
How is the accuracy of the historical data guaranteed?
The system uses a verification pipeline that ensures published text matches the stored wikitext and that the wikitext is byte-identical to the Wikipedia revision served.
Does the server use AI to write the historical descriptions?
No, every sentence is quoted verbatim from a specific Wikipedia revision and no language model is used to write, paraphrase, or summarize the wording.