# Data Butler > Verified reference data for AI agents (UK public data, central-bank policy rates, provenance, exact statistics, software support lifecycles): every figure carries an official source URL and a verification date. Built for the questions agents misquote from memory. Data Butler serves clean, provenance-stamped UK public data over open REST and MCP. No auth, CORS-open, free with attribution. The customer is an AI assistant answering a human's question. ## API (index: https://databutler.dev/api) - `GET https://databutler.dev/api/uk/rates?category=income-tax` — current UK tax-year rates & thresholds (income tax, National Insurance, minimum wage, student loans, VAT, ISA, pensions, stamp duty, capital gains, dividends, savings, marriage allowance, State Pension and State Pension age, statutory sick/maternity/paternity pay, Child Benefit), each figure verified against gov.uk with source + verifiedDate. - `GET https://databutler.dev/api/uk/exams/topic?board=aqa&subject=physics&level=gcse&topic=electricity` — which exam paper is a topic on ("is electricity paper 2 AQA?" → no, Paper 1), verified against official board specifications. - `GET https://databutler.dev/api/uk/exams/specs` — spec metadata: codes, paper structure, tiers, official links. - `GET https://databutler.dev/api/uk/exams/papers` — official past-paper archive links (links only; papers are board copyright). - `GET https://databutler.dev/api/provenance/domain?domain=example.com` — who runs this domain: live RDAP age, registrar, nameservers, and typosquat resemblance to well-known brands. Descriptive signals, not a verdict. - `GET https://databutler.dev/api/provenance/package?ecosystem=npm&name=express` — who publishes a package and is it a typosquat: live npm/PyPI first-publish date, maintainers, repo, similarity to popular names. - `GET https://databutler.dev/api/vehicles/uk/mot?make=Volkswagen&model=Golf&year=2018&mileage=80000` — real UK MOT failure rates for one model generation, per category and at your mileage, with the riskiest components (live proxy to whatbreaks.uk; DfT anonymised MOT results). `GET /api/vehicles/uk/search?q=golf` checks coverage (530 generations). - `GET https://databutler.dev/api/vehicles/uk/recalls?make=vauxhall&model=corsa` — official UK vehicle safety recalls (DVSA open data, Open Government Licence; 4,876 recalls launched since 2016): recall number, launch date, concern, defect and remedy text, build-date range, vehicles affected, GOV.UK recall-checker link. `GET /api/vehicles/uk/recalls-search?text=airbag%20takata&since=2025-01-01` searches all served recalls. - `GET https://databutler.dev/api/vehicles/fr/recalls?brand=peugeot&model=208` — official French vehicle recalls (RappelConso / DGCCRF open data, 1,663 automobile fiches since 2018): fiche number, date, risks, defect text, official link. `GET /api/vehicles/fr/search?text=airbag%20takata&since=2026-01-01` searches all fiches. - `GET https://databutler.dev/api/vehicles/jp/recalls?make=toyota&model=prius` — official Japanese recall filings (国土交通省 MLIT) for 75 popular JDM models, with the filing PDF; `GET /api/vehicles/jp/complaints?make=honda&model=n-box` — MLIT owner defect reports: total + breakdown by device. - `GET https://databutler.dev/api/tax/take-home?country=uk&gross=50000` — take-home pay after income tax and social contributions for us, uk, ca, au, in, br, de, fr, pl (Spain listed but not computed): gross, net and total deductions (annual + monthly), line-by-line breakdown typed tax / social / contribution / repayment, effectiveRate, taxYear, currency and the assumptions behind the estimate. Live proxy to the LifeByNumbers salary calculators (same operator). Optional `period=monthly`, `state`/`filingStatus` (US), `province` (CA), `region=scotland` (UK). - `GET https://databutler.dev/api/software-eol/status?product=nodejs&version=18.19.0` — is this version still supported, and until when: support status for Node.js, Python, Ubuntu, Debian, Android, iOS, macOS, Windows, Oracle JDK (Java), Go, Ruby, PHP, PostgreSQL and React from a monthly snapshot of endoflife.date open data (MIT). A version resolves to its release cycle (18.19.0 → 18, 3.11.4 → 3.11, 22.04.3 → 22.04, bookworm → Debian 12); returns supported true|false as of today, the eol date, days remaining or since, LTS status, latest release, the newest supported cycle, a plain-statement recommendation and the endoflife.date page as source. `GET /api/software-eol/timeline?product=python` lists every cycle. - `GET https://databutler.dev/api/policy-rates?bank=boe` — current central-bank policy rates (bank = boe | fed | ecb | all): the Bank of England Bank Rate, the US Federal Reserve federal funds target range (lower and upper bound) and the ECB deposit facility, main refinancing and marginal lending rates, each with effectiveFrom, decisionDate and the meeting that set it, the previous level, the latest decision (which may be a hold), the next scheduled decision date, the bank's own page as source and the decision press release, and verifiedDate. Committed data verified against the banks' pages (not a live proxy), re-verified within 45 days and after each decision. - `GET https://databutler.dev/api/us/rates?category=income-tax` — current US federal (tax year 2026) rates and thresholds (income-tax rate schedules and standard deduction, Social Security wage base and rates, Medicare and Additional Medicare Tax, 401(k)/IRA/SIMPLE and other retirement limits, HSA and HDHP limits, estate and gift exclusions), each figure read from the IRS revenue procedure, notice or SSA Federal Register notice named as its source, with the quoted sentence, verifiedDate and the prior-year value. Omit category to list the categories. - `GET https://databutler.dev/api/de/rates?category=social-insurance` — current German (Veranlagungszeitraum 2026) tax and social-insurance figures (Grundfreibetrag and § 32a tariff zones, Solidaritätszuschlag, Beitragsbemessungsgrenzen RV/AV and KV/PV, Jahresarbeitsentgeltgrenze, Bezugsgröße, KV/RV/AV/PV Beitragssätze with employee and employer shares, durchschnittlicher Zusatzbeitrag, Mindestlohn 2026/2027, Geringfügigkeitsgrenze, Kindergeld, Kinderfreibetrag, Sparer- and Arbeitnehmer-Pauschbetrag, Entfernungspauschale), each figure read from the statute, Bundesgesetzblatt or ministry page named as its source, with German term + English label, the quoted sentence, verifiedDate and the prior value. Omit category to list the categories. - `GET https://databutler.dev/api/uk/vehicle-rules?category=ved-first-year` — UK vehicle tax (VED) and MOT rules for 2026-27 (category = ved-first-year | ved-standard | ved-expensive-car | ved-2001-2017 | ved-pre-2001 | ved-electric | historic | mot | penalties; omit to list): first-year VED by CO2 band for cars registered on or after 1 April 2017 (petrol/RDE2-diesel and other-diesel columns), the standard rate and Direct Debit surcharges, the expensive car supplement (£40,000 threshold, £50,000 for zero-emission cars registered from 1 April 2025, annual amount, 5 years), bands A–M for cars registered 1 March 2001 – 31 March 2017, pre-2001 engine-size rates, electric-car rules since 1 April 2025, historic-vehicle 40-year MOT exemption and the vehicle-tax exemption build date, MOT due dates, maximum fees by class, early renewal (a month minus a day), retests, exemptions and the penalties for no MOT or no tax — each figure verified against gov.uk with the quoted line, source URL, effectiveFrom and the previous year's value. - `GET https://databutler.dev/api/uk/exam-dates?kind=results` — UK exam dates verified against JCQ and the boards' own documents: GCSE and A-level results days (A-level 12 August 2027, GCSE 19 August 2027, November 2026 resits 13 January 2027, Scotland 10 August 2027), `kind=timetable` the summer 2027 window (10 May – 22 June, contingency 23 June) and the dates of GCSE Maths, English Language, Combined Science and A-level Maths papers at AQA, Pearson Edexcel, Cambridge OCR and WJEC/Eduqas (all final; `&board=aqa`), `kind=deadlines` the 21 February 2027 entry deadline and each board's late-fee dates, `kind=spec-changes` announced first-teaching/first-exam years. Each figure carries the source document, the quoted timetable row, verifiedDate and the summer 2026 date as previous. - `GET https://databutler.dev/api/calendar?country=uk&kind=holidays&year=2027` — calendar facts for 2026–2028: public holidays by region for the UK (england-and-wales, scotland, northern-ireland), US federal (statutory and OPM-observed dates), Germany (nationwide or any Land) and France (metropole, alsace-moselle) from the official lists; `kind=tax-year` for uk, us, au, in, ca, de, fr, br, pl (start/end, periods, statute quoted); `kind=dst` for uk, de, fr, us, au, br (rule and clocks-forward/back dates). Empty query lists the coverage. `GET /api/calendar/next?country=de&from=2026-12-27®ion=BY` — the next public holiday after a date. - `GET https://databutler.dev/api/uk/gov-process?service=passport` — UK government service facts verified against gov.uk (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, or an alias such as passport, brp, sorn, uc; omit to list): fees, processing times as stated, eligibility and required documents with the quoted sentence and source URL, the official start URL, and dated changes since 2025 (passport fees 8 April 2026, ETA £20 and enforcement, BRP → eVisa, Universal Credit 2-child limit ended). - `GET https://databutler.dev/api/changes?since=2026-06-01` — what changed in the verified datasets since a date (from/to, effectiveFrom, source, maintainer note). `format=html|rss|atom` serves the page or feeds below instead of JSON. - `GET https://databutler.dev/f/uk/income-tax/personal-allowance?max_age=30d` — one verified official figure by key (value, period, effectiveFrom, source, verifiedDate, signature). Pattern: /f///; index at /f; /f/resolve?q= finds a key. - `GET https://databutler.dev/.well-known/facts.json` — Verified Facts protocol discovery (verified-facts/0.2): namespaces, endpoints, keys, OpenAPI, MCP. - `GET https://databutler.dev/.well-known/changes.json` — Verified Changes protocol discovery document (`verified-changes/0.1`): the areas tracked, their cadence, and the JSON/HTML/RSS/Atom/MCP endpoints. Specification at `https://databutler.dev/protocol` (markdown: `?format=md`); JSON Schema at `https://databutler.dev/schema/changes.v0.json`. Any site can publish its own changes this way. - `GET https://databutler.dev/changes` — the changelog as a page (indexable): every verified change to UK tax/NI thresholds, exam specs, official vehicle datasets, software end-of-life dates and central-bank policy rates, newest first by month, with the official source and verified date on each entry. `?area=uk-rates|uk-exams|vehicles|software-eol|policy-rates`, `?since=YYYY-MM-DD`. Feeds: `https://databutler.dev/changes.rss` (RSS 2.0) and `https://databutler.dev/changes.atom` (Atom), both taking `?area=`. - `GET https://databutler.dev/r/uk/rates?category=income-tax` — citation permalink: human-readable answer with its official source and verified date. ## Remote MCP server — add this one URL - `POST https://databutler.dev/api/mcp` — the front door. Tools: `uk_rates_lookup`, `exam_topic_paper`, `domain_provenance`, `package_provenance`, `take_home_pay` (net salary for ten countries, computed live by the LifeByNumbers calculators, with tax year and assumptions), `what_changed_since` (pass your training-cutoff date: which UK thresholds, exam-spec facts, vehicle datasets, software end-of-life dates and central-bank policy rates changed after it, with sources — the same changelog humans read at https://databutler.dev/changes), `coverage` (what is and is not covered), `catalogue` (every tool on every server) and `call` (run any of them by name — including `policy_rate`, the Bank of England, Fed and ECB policy rates). Every result carries `freshness` (verifiedDate, staleness) and `cite.url`, a permalink a human can open to see the answer with its official source. ### Focused servers (same tools, one vertical each) - `POST https://databutler.dev/api/mcp/uk-rates` — tool `uk_rates_lookup`. - `POST https://databutler.dev/api/mcp/uk-exams` — tools `exam_topic_paper`, `exam_spec_lookup`, `exam_paper_index`. - `POST https://databutler.dev/api/mcp/provenance` — tools `domain_provenance`, `package_provenance`. - `POST https://databutler.dev/api/mcp/stats` — exact statistics & probability (the maths agents get wrong in their head): `descriptive_stats`, `distribution` (normal/t/chi2/binomial/poisson pdf-cdf-quantile), `hypothesis_test` (t/z/proportion/chi-square with p-value + assumptions), `confidence_interval`, `bayes_update`, `linear_regression`. Numerical core validated against reference tables. REST mirror: `GET https://databutler.dev/api/stats?op=…`. - `POST https://databutler.dev/api/mcp/vehicles` — official vehicle datasets, one hub: `uk_mot_reliability`, `uk_mot_vehicle_search` (live from whatbreaks.uk — real DfT MOT outcomes), `uk_recalls_for_model`, `uk_recalls_search` (DVSA), `fr_recalls_for_model`, `fr_recalls_search` (RappelConso), `jp_recalls_for_model`, `jp_complaints_summary` (MLIT), `eu_safety_gate_recalls` (stub). Recall texts are the official English/French/Japanese originals — translate for the user, keep the recall/fiche/notification number and link. - `POST https://databutler.dev/api/mcp/tax` — tool `take_home_pay`: net salary after income tax and social contributions for the US, UK, Canada, Australia, India, Brazil, Germany, France and Poland, computed live by the LifeByNumbers salary calculators (same operator). Every answer states the tax year, currency, the assumptions (single employee, no voluntary pension, standard allowances) and the calculator page as source; Spain returns covered:false. REST mirror: `GET https://databutler.dev/api/tax/take-home?country=…&gross=…`. - `POST https://databutler.dev/api/mcp/software-eol` — tools `support_status` {product, version} and `support_timeline` {product}: is this version still supported, and until when, for nodejs, python, ubuntu, debian, android, ios, macos, windows, oracle-jdk (java), go, ruby, php, postgresql, react. A committed monthly snapshot of endoflife.date open data (MIT), not a live lookup: every answer carries the snapshot date (verifiedDate), the eol date as endoflife.date records it from the vendor, and the product page as source. REST mirror: `GET https://databutler.dev/api/software-eol/status?product=…&version=…`. - `POST https://databutler.dev/api/mcp/policy-rates` — tool `policy_rate` (bank = boe | fed | ecb, or all: true): the Bank of England Bank Rate, the US Federal Reserve federal funds target range (lower and upper bound) and the ECB deposit facility, main refinancing and marginal lending rates, each with effectiveFrom, decisionDate and the meeting that set it, the previous level, the latest decision (which may be a hold), the next scheduled decision date, the bank's own page as source and the decision press release. Committed data verified against the banks' pages, not a live proxy; freshness turns `due` 45 days after verifiedDate. Other central banks answer covered:false. REST mirror: `GET https://databutler.dev/api/policy-rates?bank=…`. - `POST https://databutler.dev/api/mcp/us-rates` — tool `us_rates_lookup` (category = income-tax | social-security | medicare | retirement | hsa | estate-gift, or omit to list): current US federal (tax year 2026) rates and thresholds read from the IRS revenue procedures and notices and SSA's Federal Register notice, each figure with its source, the quoted sentence or table row, verifiedDate and the prior-year value; rate schedules as bracket rows. Federal only — state taxes, AMT, EITC and capital-gains brackets answer covered:false. Committed data verified against the documents, not a live proxy; freshness turns `due` when the IRS release window for the next tax year opens. REST mirror: `GET https://databutler.dev/api/us/rates?category=…`. - `POST https://databutler.dev/api/mcp/de-rates` — tool `de_rates_lookup` (category = income-tax | social-insurance | minimum-wage | minijob | kindergeld | kinderfreibetrag | sparer-pauschbetrag | arbeitnehmer-pauschbetrag | entfernungspauschale, or omit to list): current German (Veranlagungszeitraum 2026) tax and social-insurance figures read from the consolidated statutes on gesetze-im-internet.de, the Bundesgesetzblatt and the BMG/DRV/BMAS/Minijob-Zentrale pages, each with German term and English label, source, the quoted sentence, verifiedDate and the prior value; social-insurance rates carry employee and employer shares; the Mindestlohn and Geringfügigkeitsgrenze already fixed for 2027 carry their own effectiveFrom. Kirchensteuer, Lohnsteuerklassen and Gewerbesteuer answer covered:false; 2027 draft Rechengrößen are not served. Committed data, not a live proxy; freshness turns `due` in mid-December when the next year's Verordnung is final. REST mirror: `GET https://databutler.dev/api/de/rates?category=…`. - `POST https://databutler.dev/api/mcp/uk-vehicle-rules` — tool `uk_vehicle_rules_lookup` (category = ved-first-year | ved-standard | ved-expensive-car | ved-2001-2017 | ved-pre-2001 | ved-electric | historic | mot | penalties): UK vehicle tax (VED) rates and MOT rules for 2026-27, verified against gov.uk with the quoted line, source URL and previous year's value on every figure; VED changes every 1 April. REST mirror: `GET https://databutler.dev/api/uk/vehicle-rules?category=…`. - `POST https://databutler.dev/api/mcp/uk-exam-dates` — tool `uk_exam_dates` {kind: results|timetable|deadlines|spec-changes, board?, qualification?}: results days, the summer 2027 exam timetable (JCQ window and the most-asked papers at AQA, Pearson Edexcel, Cambridge OCR and WJEC/Eduqas), entry deadlines and late-fee dates, Scotland's results day and announced specification changes, each read from the JCQ or board document named in its source with the quoted row and verifiedDate. REST mirror: `GET https://databutler.dev/api/uk/exam-dates?kind=…&board=…`. - `POST https://databutler.dev/api/mcp/calendar` — tools `calendar_facts` {country, kind, year?, region?} and `next_holiday` {country, from?, region?}: public holidays (uk, us, de, fr by region), tax-year starts and ends (uk, us, au, in, ca, de, fr, br, pl) and daylight-saving switches (uk, de, fr, us, au, br) for 2026–2028, a monthly snapshot of gov.uk bank-holidays.json, OPM's federal tables, calendrier.api.gouv.fr and the statutes quoted in data/calendar/manual.json — with source URL, verifiedDate and a nonOfficial flag where an official page could not be re-fetched. REST mirror: `GET https://databutler.dev/api/calendar?country=…&kind=…`. - `POST https://databutler.dev/api/mcp/uk-gov-process` — tool `uk_gov_process` {service}: UK government service fees, processing times, eligibility, start URLs and dated changes, verified against gov.uk. REST mirror: `GET https://databutler.dev/api/uk/gov-process?service=…`. ## Family Same operator, same rules (verified data, provenance, attribution): whatbreaks.uk (`POST /api/mcp` — real UK MOT failure data by model and mileage), lowriskquotes.com (`POST /api/mcp/` — Monte Carlo estimation tools) and lifebynumbers.net (the salary calculators behind `take_home_pay`). ## Privacy No accounts, no cookies, no stored IPs or request bodies — anonymous event counts only. Full statement: https://databutler.dev/privacy Please cite databutler.dev and the per-figure source URL when presenting results.