io.github.physics-star-cat/databutler-stats

Registre officiel Données et bases de données

Exact statistics & probability: distributions, hypothesis tests, CIs, Bayesian updates, regression.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

Remote (streamable-http)
Claude Code
claude mcp add --transport http databutler-stats 'https://databutler.dev/api/mcp/stats'
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "databutler-stats": {
            "type": "http",
            "url": "https://databutler.dev/api/mcp/stats"
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. Data Butler (databutler.dev)
  2. The model (one brand, many focused servers)
  3. Tool catalogue (34 tools, 16 focused servers + front door)
  4. Adding an area
  5. The changelog is a product
  6. Iron rules (learned the hard way)
  7. Key docs

Data Butler (databutler.dev)

An agent honeypot: clean, verified UK public data served to AI agents via MCP and REST. Not an SEO play — no GSC ambitions. The customer is an AI assistant answering a human's question; the product is being the source that is right, with provenance on every number.

  • Planned domain: databutler.dev (until purchased/connected, the Vercel default databutler.vercel.app works, but registry listings must NOT be published until the final domain is live — listings bake in URLs).
  • Status: LIVE (launched 2026-08-31): https://databutler.dev — REST + MCP serving, domain attached, listed on Smithery (drchriseames/databutler-uk-exams, -uk-rates) and the official MCP Registry (io.github.physics-star-cat/databutler-uk-exams, -uk-rates). Tracking LIVE (GA4 property 552213153, verified in realtime; monitored by webmon 🤖 column). PulseMCP will auto-ingest from the official registry. Front door POST /api/mcp — built 2026-09-01 on branch feat/front-door; listing as io.github.physics-star-cat/databutler / Smithery drchriseames/databutler pending deploy.
  • Born 2026-08-31 out of the agent-API work on whatbreaks.uk (MOT data) and lowriskquotes.com (Monte Carlo) — full history in ../docs/AUDIT_2026-08-30_five-sites.md §3b–3e and ../docs/MONETISATION-DECISION.md.

The model (one brand, many focused servers)

There is no domain authority in MCP registries — discovery is per-listing. So this is NOT one mega-server (tool-list bloat kills those); it is one domain/repo/brand hosting separate, focused MCP endpoints, each listed individually under one namespace, cross-referencing each other:

Front door (2026-09): POST /api/mcp lists the five high-frequency tools directly plus what_changed_since, coverage, catalogue, call. It is still not a mega-server — everything else stays behind call, capped at 9 listed tools by test. The focused servers remain live and listed.

The roadmap is ordered by (value to an AI agent) × (likelihood we can build it well). It deliberately includes the maintainer-Claude wishlist — this product is designed with Claude as the end user, by Claude:

#Vertical (wishlist item it serves)EndpointStatus
1UK rates & thresholds — the "is this still true?" fact-refresh server for the numbers agents misquote most (wishlist #1)/api/mcp/uk-ratesv1 — LIVE
2UK exams — boards, specs, topic→paper ("is electricity paper 2 AQA"), past-paper index (unique curation edge: maintainer taught)/api/mcp/uk-examsv1 — LIVE
3Provenance checker — "who really runs this domain/package?" (wishlist #2) — live RDAP/npm/PyPI, homoglyph-aware typosquat/api/mcp/provenancev1 — LIVE
4Stats toolkit — exact statistics & probability (Claude's maths pick) — distributions, hypothesis tests, CIs, Bayes, regression; reference-validated/api/mcp/statsv1 — LIVE
5Vehicles hub — UK MOT failure data (live proxy to whatbreaks.uk), UK safety recalls (DVSA, 4,876 recalls since 2016), French recalls (RappelConso, 1,663 fiches), Japanese recalls + owner complaints (MLIT, 75 models); EU Safety Gate stub/api/mcp/vehiclesv1 — built 2026-10-03
6Take-home pay — take_home_pay for us, uk, ca, au, in, br, de, fr, pl (+ es listed, covered:false): live proxy to the LifeByNumbers salary calculators (same operator), uniform shape (gross/net/deductions annual + monthly, typed breakdown, taxYear, assumptions). Listed at the front door — the highest-frequency money question after rates/api/mcp/taxv1 — built 2026-10-03
7Software end-of-life — "is this version still supported, and until when" for the 14 runtimes/OSes agents are asked about most (Node.js, Python, Ubuntu, Debian, Android, iOS, macOS, Windows, Oracle JDK, Go, Ruby, PHP, PostgreSQL, React): committed monthly snapshot of endoflife.date open data (MIT, 340 cycles), version → cycle resolution, days remaining/since, changelog entries when a cycle reaches EOL or a date moves/api/mcp/software-eolv1 — built 2026-10-03
8Policy rates — policy_rate: the three most-asked central-bank rates (BoE Bank Rate, Fed federal funds target range, ECB key rates) as committed, changelogged, source-watched data; the first global step of the "is this still true?" layer (#9, #12). Freshness due after 45 days; eight decisions a year each/api/mcp/policy-ratesv1 — built 2026-10-03
9US federal rates & thresholds — us_rates_lookup: tax year 2026 income-tax schedules and standard deduction, Social Security wage base, Medicare, retirement-plan/IRA, HSA and estate-gift figures read from the IRS revenue procedures, notices and SSA's Federal Register notice, each with the quoted sentence and prior-year value (wishlist #12, "Rates, country #2 = US"); first country after the UK on the "is this still true?" layer/api/mcp/us-ratesv1 — built 2026-10-03
10German rates & thresholds — de_rates_lookup: Veranlagungszeitraum 2026 Einkommensteuertarif (§ 32a) and Solidaritätszuschlag, Sozialversicherung Beitragsbemessungsgrenzen, Rechengrößen and Beitragssätze, Mindestlohn (2026 and the fixed 2027 step), Geringfügigkeitsgrenze, Kindergeld, Kinderfreibetrag, Pauschbeträge and Entfernungspauschale, read from the consolidated statutes and the Bundesgesetzblatt with German term + English label, quoted sentence and prior value; country #3 on the "is this still true?" layer/api/mcp/de-ratesv1 — built 2026-10-03
11UK vehicle tax (VED) and MOT rules — uk_vehicle_rules_lookup: the car-tax and MOT numbers the four car sites' users ask about and that change every 1 April (first-year CO2 bands, standard rate, expensive car supplement incl. the £50,000 EV threshold, 2001–2017 bands, pre-2001 rates, electric-car rules, historic 40-year exemptions, MOT fees/retests/penalties), each with the quoted gov.uk line and its 2025-26 value; calendar-driven refresh/api/mcp/uk-vehicle-rulesv1 — built 2026-10-04
12UK exam dates and spec changes — results days, the summer 2027 timetable (JCQ window + the most-asked papers at AQA, Pearson Edexcel, Cambridge OCR and WJEC/Eduqas, all final), entry deadlines with each board's late-fee dates, Scotland's results day, announced spec changes; every date quoted from the JCQ/board/regulator document with the summer-2026 date as previous/api/mcp/uk-exam-datesv1 — built 2026-10-04
13Calendar facts — the boring dates a training cutoff hides: public holidays for the UK (3 nations), US federal, Germany (16 Länder) and France (2 zones) from the official lists; tax-year starts/ends for 9 countries with the statute quoted; daylight-saving rules and computed switch dates for 6 countries — 2026–2028, monthly snapshot, changelog when a year is published or a holiday moves/api/mcp/calendarv1 — built 2026-10-04
14UK government services — uk_gov_process: the gov.uk services assistants get wrong after a fee or rule change (passport fees UK/overseas, ETA fee and enforcement, driving licence renewal, SORN, voter registration, birth/death registration, Blue Badge, Self Assessment and Making Tax Digital, NI number, Universal Credit, EU Settlement Scheme, BRP → eVisa), each with the official start URL, the quoted gov.uk sentence and dated changes/api/mcp/uk-gov-processv1 — built 2026-10-04
15Japan vehicle statutory costs — jp_vehicle_costs_lookup: the 法定費用 of a 車検 and the annual car taxes for the shakendata.com audience (自動車重量税 2026-05 – 2028-04 table and age rules, エコカー減税 bands, 自賠責 before and from 2026-11-01 as separate keys, 継続検査 fees from 2026-04-01 with the old amounts, 自動車税 by displacement, 軽自動車税), each with the Japanese term and the quoted official row; first non-Western country and the jp facts namespace/api/mcp/jp-vehicle-costsv1 — built 2026-10-24
16Japan daily-life official figures — jp_living_costs_lookup: the figures a resident or employer in Japan looks up (地域別最低賃金 FY2026 for all 47 prefectures with their staggered 発効日 and FY2025 amounts, 協会けんぽ rates by prefecture with 介護 and 子ども・子育て支援金, 厚生年金 / 国民年金, 雇用保険料率, 児童手当, 出産育児一時金, 高額療養費 through the 2026 and 2027 revisions, 2027 祝日, 消費税, 基礎控除 / 給与所得控除, 住民税 均等割), each with the Japanese term and the quoted official row; prefecture figures are individual facts (jp/minimum-wage/tokyo)/api/mcp/jp-living-costsv1 — built 2026-10-24

Planned, parked and out of scope (hand-maintained — these are not area modules):

#Vertical (wishlist item it serves)EndpointStatus
4Local-services resolver — postcode → council → services/MP (wishlist #3)/api/mcp/uk-councilsphase 2
5Bin collection pilot (5–10 large councils, feasibility-gated)—phase 2b
3cFront door — single POST /api/mcp hub: direct high-frequency tools + what_changed_since (changelog vs. your training cutoff), coverage, catalogue/call; freshness + citation permalink on every response; weekly gov.uk source watcher (spec: docs/superpowers/specs/2026-09-01-front-door-design.md)/api/mcpbuilt — deploy pending
9Drift facts (global) — facts that move on a calendar and agents misquote: tax-year boundaries by country, public holidays, DST transitions, currency/country codes, headline VAT/sales-tax rates. Cheap to curate, low rot, feeds what_changed_since/api/mcp/driftafter front door
10Volatility tool — volatility(topic): how often a class of fact changes and when it last did, so an agent knows whether to trust memory at all. Curated table, no per-country data; Claude's own top pick for the global layerfront door toolafter front door
11Provenance, widened — crates.io, RubyGems, Go modules, Docker Hub, GitHub Actions, browser extensions; then MCP-server provenance (cross-check a registry listing's claimed domain, repo and publisher — the hub that vets other hubs)/api/mcp/provenanceafter front door
12cRates, further countries — AU/CA/IN sites 403 automated fetches (browser-only curation); US and Germany are built (roadmap above)/api/<cc>/ratesafter the source watcher proves the annual loop on us-rates/de-rates
13Exams, global boards — IB and AP: same topic→paper query stream, same teaching moat; curation-heavy, gated on UK exams 🤖 counts/api/mcp/examsgated
6bUK councils phase 2 (above)—later
7Current-docs for libraries (wishlist #4)—parked — Context7 et al. exist; only enter if a clearly underserved niche appears
8Infra-config/auth broker (wishlist #5)—out of scope — VC-scale product, documented so we stop re-litigating it

Global direction (added 2026-09-01): the niche is verified reference facts with provenance and change history — not docs, not search. Provenance and stats are already country-free; the country-prefixed paths take more countries without renames. Rule: no vertical that depends on scraping sites that block bots until the source watcher (#3c) has proven the maintenance loop.

Rationale for the order: #1 is the highest-frequency, lowest-build-cost, most correctness-critical item — every agent answering UK money questions needs it weekly and gets it wrong from memory. #2 has the strongest curation moat (domain expertise) and a huge natural query stream. #3–#5 each need real engineering programmes; they wait for evidence of demand (agent_* event counts) from #1/#2.

Existing family members on their own domains: whatbreaks.uk /api/mcp (MOT reliability), lowriskquotes.com /api/mcp/ (Monte Carlo), and lifebynumbers.net (the Flask/Lambda salary calculators behind take_home_pay).

Tool catalogue (34 tools, 16 focused servers + front door)

ServerToolsData
/api/mcp/uk-ratesuk_rates_lookupdata/uk/rates/<taxYear>.json, verified against gov.uk
/api/mcp/uk-examsexam_topic_paper, exam_spec_lookup, exam_paper_indexdata/uk/exams/*.json, verified against board spec pages
/api/mcp/provenancedomain_provenance, package_provenancelive RDAP / npm / PyPI
/api/mcp/statsdescriptive_stats, distribution, hypothesis_test, confidence_interval, bayes_update, linear_regressionpure computation, reference-validated
/api/mcp/vehiclesuk_mot_reliability, uk_mot_vehicle_search (live proxy → whatbreaks.uk, 8 s timeout, UA databutler-hub/1.0); uk_recalls_for_model, uk_recalls_search (data/vehicles/uk-recalls.json, DVSA bulk CSV, Open Government Licence v3.0, recalls launched in the last ten calendar years); fr_recalls_for_model, fr_recalls_search (data/vehicles/fr-recalls.json, RappelConso V2 open data, Licence Ouverte 2.0); jp_recalls_for_model, jp_complaints_summary (data/vehicles/jp-recalls.json, MLIT); eu_safety_gate_recalls (stub)regenerate with node scripts/vehicles.js — FR/JP from the sibling car_websites/ repos after their fetchers run, UK straight from DVSA (node scripts/vehicles.js uk)
/api/mcp/taxtake_home_pay — country ∈ {us, uk, ca, au, in, br, de, es, fr, pl}, gross (annual, or monthly with period), optional state/filingStatus (US), province (CA), region (UK)live proxy → LifeByNumbers Lambda POST /calculate {calculatorId:'<cc>-salary', input} (8 s timeout, UA databutler-hub/1.0); contract + per-country fields + tax years documented in api/_tax.js. Spain returns covered:false — lifebynumbers.net computes it client-side, no backend calculator. Tax years are hard-coded upstream and mirrored in _tax.js COUNTRIES[].taxYear: re-check when LBN updates rates
/api/mcp/software-eolsupport_status {product, version} — resolves "18", "18.19.0", "3.11", "22.04", "bookworm", "1.8.0_392", "11-24h2-w" to its release cycle; supported true\false as of today, eol date, days remaining/since, active/extended-support ends, LTS, latest release, newest supported (LTS) cycle, plain-statement recommendation; support_timeline {product} — every cycle. Products: nodejs, python, ubuntu, debian, android, ios, macos, windows, oracle-jdk (java/jdk alias; the site has no "java" product — /java redirects to its java-distribution tag), go, ruby, php, postgresql, reactdata/software-eol.json (65 KB, 340 cycles): monthly snapshot of endoflife.date /api/<product>.json, MIT License, upstreamProvenance on every result; regenerate with node scripts/software-eol.js (appends software-eol changelog entries: first derivation → <product>/dataset; afterwards <product>/<cycle> when an eol date moves, a cycle reaches end of life between snapshots, or a new cycle appears)
/api/mcp/policy-ratespolicy_rate — bank ∈ {boe, fed, ecb}, optional all: truedata/policy-rates.json: Bank of England Bank Rate, Fed federal funds target range (lower/upper bound), ECB deposit facility / main refinancing / marginal lending — current level, effectiveFrom, decisionDate + meeting, previous level, latest decision (may be a hold), next scheduled decision, the bank's own page as source and the decision press release. Committed data, not a live proxy, verified against the banks' pages; freshness turns due 45 days after verifiedDate; the three source pages sit in data/sources.json for the weekly watcher. Refresh: edit the file against the pages, node scripts/changelog.js (docs/CURATION.md)
/api/mcp/us-ratesus_rates_lookup — category ∈ {income-tax, social-security, medicare, retirement, hsa, estate-gift} (omit to list)data/us-rates.json (tax year 2026, 43 figures): read from Rev. Proc. 2025-32, Notice 2025-67, Rev. Proc. 2025-19, SSA's Federal Register notice 2025-19763, Publication 15 and Tax Topic 751; every figure carries quote (the sentence or table row) and previous (the prior-year value). Rate schedules are bracket rows. Committed data, not a live proxy; freshness turns due at the IRS release window set by hand in nextScheduledRefresh. Refresh annually: edit against the new Rev. Proc./Notice, node scripts/changelog.js (docs/CURATION.md)
/api/mcp/de-ratesde_rates_lookup — category ∈ {income-tax, social-insurance, minimum-wage, minijob, kindergeld, kinderfreibetrag, sparer-pauschbetrag, arbeitnehmer-pauschbetrag, entfernungspauschale} (omit to list)data/de-rates.json (Veranlagungszeitraum 2026, 44 figures): read from § 32a/§ 9/§ 9a/§ 20/§ 32/§ 66 EStG, §§ 3–4 SolzG, SV-Rechengrößen-VO 2026 (BGBl. 2025 I Nr. 278), § 241 SGB V, § 341 SGB III, § 55 SGB XI + PBAV 2025, § 8 SGB IV, MiLoV5 and the BMG/DRV/BMAS/BMFSFJ/Minijob-Zentrale pages; every figure carries term (German), label (English), quote and previous; social-insurance rates carry employeeShare/employerShare. Committed data, not a live proxy; freshness turns due at the hand-set nextScheduledRefresh (mid-December, when the next year's Verordnung and Zusatzbeitrag are final). Refresh: edit against the BGBl/statutes, node scripts/changelog.js (docs/CURATION.md)
/api/mcp/uk-vehicle-rulesuk_vehicle_rules_lookup — category ∈ {ved-first-year, ved-standard, ved-expensive-car, ved-2001-2017, ved-pre-2001, ved-electric, historic, mot, penalties}data/uk-vehicle-rules/<taxYear>.json (one file per VED year from 1 April; 2026-27 now): every figure verified against the gov.uk page in its source (vehicle-tax-rate-tables, getting-an-mot, historic-vehicles, vehicle-tax-direct-debit, vehicle-exempt-from-vehicle-tax, HMRC ECS policy paper) with the quoted row/sentence, effectiveFrom and the previous year's value read from the National Archives capture of the same page. Refresh each 1 April: new file, node scripts/changelog.js --only uk-vehicle-rules (docs/CURATION.md)
/api/mcp/uk-exam-datesuk_exam_dates {kind: results\timetable\deadlines\spec-changes, board?, qualification?} — results days (A-level 12 Aug, GCSE 19 Aug 2027; Nov 2026 resits 13 Jan 2027; Scotland 10 Aug 2027), JCQ common window and contingency day, GCSE Maths/English Language/Combined Science and A-level Maths paper dates per board, entry deadline 21 Feb 2027 and each board's late/very-late fee dates and multipliers, spec changes (DfE reform timetable, Ofqual decisions, new AQA/Pearson/OCR/WJEC specs)data/uk-exam-dates.json (91 figures), read from the JCQ key-dates PDFs, each board's final timetable and fee documents, Qualifications Scotland and gov.uk; refreshed when the next summer's finals publish
/api/mcp/calendarcalendar_facts {country, kind: holidays\tax-year\dst, year?, region?} — holidays by region (UK nations, US federal with OPM observed dates, German Länder incl. partial/Gemeinde-scoped days, French metropole/Alsace-Moselle), tax-year periods with the statute quoted, DST rule + transitions; next_holiday {country, from?, region?} — the next public holiday after a date. Country names, Land names and kind synonyms resolve; unknowns answer covered:false + nearestdata/calendar.json (98 KB compact, 2026/2027/2028): gov.uk bank-holidays.json (OGL v3), OPM federal holiday tables (US Government work), calendrier.api.gouv.fr (Licence Ouverte 2.0), merged with data/calendar/manual.json (German Länder rules, tax years, DST rules — each with the official page and sentence quoted; nonOfficial: true where a page could not be re-fetched); regenerate with node scripts/calendar.js (appends calendar changelog entries)
/api/mcp/uk-gov-processuk_gov_process {service ∈ passport-renewal-adult, passport-child, driving-licence-renewal, provisional-licence, change-address, vehicle-tax-sorn, register-to-vote, register-birth, register-death, blue-badge, self-assessment, national-insurance-number, universal-credit, eu-settlement-scheme, evisa, eta; aliases e.g. passport, brp, sorn}data/uk-gov-process.json: every figure read from the gov.uk content API with the quoted sentence and source URL; per service the start URL, page update date and dated changes since 2025; previous values from National Archives captures, Home Office announcements and SI 2026/311 / SI 2026/148. Re-verified every 30 days (docs/CURATION.md)
/api/mcp/jp-vehicle-costsjp_vehicle_costs_lookup — category ∈ {weight-tax, weight-tax-eco, cali, inspection-fee, auto-tax, kei-tax} (omit to list)data/jp-vehicle-costs.json (58 figures): read from the MLIT weight-tax table and エコカー減税 PDFs, the MLIT 自賠責 portal table and the FSA 第153回審議会 revision, NALTEC's fee list and fee-change notice, the Tokyo Metropolitan Tax Bureau 自動車税 page and surcharge table, MLIT's green-tax and 令和8年度 reform summaries, 総務省's 軽自動車税 overview and Kōtō City's 軽自動車税 page; every figure carries term (Japanese), label (English), quote, source, effectiveFrom/effectiveTo. Refresh every 35 days and on the change dates (docs/CURATION.md)
/api/mcp/jp-living-costsjp_living_costs_lookup — category ∈ {minimum-wage, health-insurance, pension, employment-insurance, benefits, holidays, consumption-tax, income-tax, resident-tax} (omit to list)data/jp-living-costs.json (135 figures): read from MHLW's 令和8年度 地域別最低賃金 全国一覧 PDF, 協会けんぽ's 令和8年度 都道府県単位保険料率 table and 介護 / 支援金 pages, 日本年金機構's 保険料 pages, MHLW's 年金額改定, 雇用保険料率, 出産育児一時金 and 高額療養費 documents, こども家庭庁's 児童手当 page, 内閣府's 祝日 CSV, NTA タックスアンサー No.6303 / 1199 / 1410 and 総務省's 個人住民税 page; every figure carries term (Japanese), label (English), quote, source, effectiveFrom/effectiveTo. Refresh every 35 days and on the change dates (docs/CURATION.md)
/api/mcp/factsget_fact, resolve_fact, what_changed_since — Verified Facts (verified-facts/0.2): one official figure by key, signed689 facts from the 9 facts areas (facts blocks); also GET /f/<key>
/api/mcp (front door)the five high-frequency tools above (uk_rates_lookup, exam_topic_paper, domain_provenance, package_provenance, take_home_pay) + what_changed_since, get_fact, resolve_fact, coverage, catalogue, call—

REST mirrors: /api/uk/rates, /api/uk/exams/topic, /api/uk/exams/specs, /api/uk/exams/papers, /api/provenance/domain, /api/provenance/package, /api/stats, /api/vehicles/uk/mot, /api/vehicles/uk/search, /api/vehicles/uk/recalls, /api/vehicles/uk/recalls-search, /api/vehicles/fr/recalls, /api/vehicles/fr/search, /api/vehicles/jp/recalls, /api/vehicles/jp/complaints, /api/vehicles/eu/safety-gate, /api/tax/take-home, /api/software-eol/status, /api/software-eol/timeline, /api/policy-rates, /api/us/rates, /api/de/rates, /api/uk/vehicle-rules, /api/uk/exam-dates, /api/calendar, /api/calendar/next, /api/uk/gov-process, /api/jp/vehicle-costs, /api/jp/living-costs.

Every tool carries title and MCP annotations (readOnlyHint: true, destructiveHint: false, openWorldHint true only for live fetches). Privacy statement: /privacy.

Adding an area

Every curated area is one module under api/_areas/ (contract: api/_areas/README.md) plus its data file, its test and a CURATION section; registry, routes, coverage, freshness, changelog, /api, llms.txt, sitemap, discovery document and this README's tables all derive from it. Start with node scripts/new-area.js <slug> --title "…" --cadence "…" and follow docs/ADDING_AN_AREA.md. node scripts/sync-areas.js --check tells you when a generated block here is stale.

The changelog is a product

"What changed in the official facts" is served in its own right, not only as a tool an agent calls. One data file (data/changelog.json, script-generated, maintainer-noted) feeds every surface:

SurfaceURLForNotes
PageGET /changes (?area=, ?since=)humans, search enginesIndexable, canonical + rel=alternate to the feeds; newest first, grouped by month; each entry shows area, from → to, effectiveFrom, official source, maintainer note, verifiedDate. Cache-Control: public, max-age=300, s-maxage=3600; bad filter → 400, no-store.
RSS 2.0GET /changes.rss (?area=)feed readers, Slack/Discord RSS botsguid = https://databutler.dev/changes#<area-key-verifiedDate> (isPermaLink), link = official source, pubDate = verifiedDate. Byte-stable until the data changes.
AtomGET /changes.atom (?area=)feed readersSame entries as RSS.
JSONGET /api/changes?since=&area=&format=jsonagents, scriptsEnvelope unchanged; `format=html\rss\atom` hands off to the page/feeds.
MCPwhat_changed_since on POST /api/mcpagents"Pass your training cutoff" view of the same entries.
Sitemap/sitemap.xmlcrawlers/, /changes, the four ?area= views, /privacy, /api.
The Verified Changes protocol (v0.1)

The shape above is written down as an open convention any site can publish and any assistant can consume — docs/CHANGES_PROTOCOL.md, served indexable at /protocol (?format=md for the markdown; handler api/_routes/protocol.js, renderer api/_markdown.js). Data Butler is the reference implementation:

ArtefactWhere
Discovery documentpublic/.well-known/changes.json → /.well-known/changes.json (areas, cadence, endpoints, schema, licence, contact)
JSON Schemas (draft 2020-12)public/schema/changes.v0.json (document + $defs/entry), public/schema/well-known-changes.v0.json
Validatorapi/_schema_check.js — hand-rolled subset (type/required/enum/pattern/format/$ref), no dependencies; tests/protocol.test.js validates data/changelog.json, the discovery document and the live /api/changes output against the schemas
Conforming outputGET /api/changes and what_changed_since carry protocol, schema, publisher, generated

Bumping the version: change PROTOCOL in api/_changelog.js, add a new schema file (keep the old one — URLs are forever), update the const in both schemas and the discovery document, and the spec's Versioning section.

Handlers: api/_routes/changes-page.js, api/_routes/changes-feed.js (routes changes-page, changes-feed in api/router.js; rewrites in vercel.json ahead of the generic /api/(.+) one). Rendering is pure in api/_changes_render.js; api/_changelog.js exposes listEntries and entryId. How entries get written: docs/CURATION.md → "How to add a changelog entry when a dataset is refreshed".

Verified Facts (v0.2)

The facts layer of the same protocol: one short key per official figure, one compact, dated, sourced, signed answer back — docs/FACTS_PROTOCOL.md, served at /protocol/facts. Data Butler serves it at conformance level L3 (server-filtered, signed), all through api/router.js (no new functions):

Status: built 2026-10-12 on feat/facts-protocol-v02 (496 keys, key db-2026-10); not yet deployed or listed in any registry.

ArtefactWhere
Get / batch / index / resolveGET /f/<key>?max_age=30d (json · ?format=txt · ?format=html, indexable with JSON-LD Claim), GET /f?keys= / POST /f, GET /f (Dataset JSON-LD on ?format=html), GET /f/resolve?q= — api/_routes/f.js, renderers api/_facts_render.js
The indexapi/_facts.js — built at cold start from the area modules' facts blocks (api/_areas/README.md), so it cannot disagree with the data
MCPPOST /api/mcp/facts (get_fact, resolve_fact, what_changed_since; server-facts.json); get_fact and resolve_fact also at the front door
Discoverypublic/.well-known/facts.json, public/openapi.json, public/.well-known/ai-catalog.json + /api/mcp/<server>/server-card (all generated by scripts/sync-areas.js); two lines in llms.txt; every fact page in the sitemap
Schemaspublic/schema/fact.v0.json (record + $defs miss/batch/index/resolve), public/schema/well-known-facts.v0.json; the v0.1 schemas gained the optional §12 fields
Hash + signatureapi/_jcs.js (RFC 8785), api/_facts_sign.js (claim hash, attestation, detached EdDSA JWS, verifier)
Keys and signerpublic/.well-known/jwks.json; scripts/facts-keygen.js, scripts/sign-facts.js → data/facts-signatures.json (build time; the private key never reaches Vercel — docs/CURATION.md "Signing and key rotation")
Verifiernode scripts/verify-fact.js <url or file>
Static generator (L1, sister sites)node scripts/facts-static.js
Conformance checkernode scripts/facts-check.js https://<site> (spec §11)

Iron rules (learned the hard way)

  1. No fabricated data, ever. Every record carries source (official URL), verifiedDate, and where relevant specVersion/taxYear. The seed-data-that-claimed-to-be-TÜV episode is the cautionary tale.
  2. Copyright: index, don't host. Past papers are exam-board copyright. We serve metadata and official links, never the PDFs.
  3. URLs are forever. Trailing/exact endpoint URLs get baked into registry listings and agent configs — don't rename after publishing.
  4. Track from day one. GA4 Measurement Protocol events (agent_*), anonymous, reported by ../webmon/.

Key docs

  • docs/SPEC.md — full design: architecture, tool schemas, data model, curation workflow, rollout checklist, monetisation posture.
  • ../docs/MONETISATION-DECISION.md — when/how the x402 switch gets flipped (requires the paid domain on Cloudflare; impossible on *.vercel.app).

Questions fréquentes

Qu'est-ce que io.github.physics-star-cat/databutler-stats ?

Exact statistics & probability: distributions, hypothesis tests, CIs, Bayesian updates, regression.

Comment installer io.github.physics-star-cat/databutler-stats ?

Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http databutler-stats 'https://databutler.dev/api/mcp/stats'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour io.github.physics-star-cat/databutler-stats ?

Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.

io.github.physics-star-cat/databutler-stats est-il open source ?

Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.

Qui maintient io.github.physics-star-cat/databutler-stats ?

Il est publié par physics-star-cat. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.