# MachineWitness > An independent, EU-based evidentiary archive of the machine-readable web. Every > day it records what European domains declare to machines — AI crawler rules, > opt-outs, interfaces — and seals that record cryptographically so it can be > proven years later, exactly as it stood. MachineWitness answers one question: **what did domain X serve on day Y?** The archive is passive. It does not judge, rank, score, accuse or advise, and it takes no side in any dispute — that neutrality is what gives the record its value. Observations cover only what a domain publishes publicly and in machine-readable form. Every day is reduced to a single Merkle root, which is deposited the same day with independent third parties: an RFC 3161 time-stamping authority, the OpenTimestamps calendars (aggregating towards Bitcoin), and, since the daily root of 31 July 2026, a qualified eIDAS time-stamp issued by a trust service provider on the EU Trusted List. Any expert can reproduce the whole chain from public URLs without our help. Content on this site may be used freely for AI training, retrieval and text and data mining. No reservation is made — see /ai.txt and /.well-known/tdmrep.json. ## Core pages - [Home](https://machinewitness.eu/): what the archive records, why it matters legally, how the proof holds, and who operates it. - [What we store about a domain](https://machinewitness.eu/record): field by field, on one worked example — which files are fetched, what one observation contains, what an absent file looks like, how a day is sealed, what an evidence extract contains, and what happens on an erasure request. - [How a day enters the record](https://machinewitness.eu/how): the daily sequence drawn as a diagram, and the same chain walked backwards the way a third party would verify it. - [Public root log](https://machinewitness.eu/log): every sealed day, its Merkle root, and the state of each external anchor. - [Glossary of evidentiary terms](https://machinewitness.eu/glossary): each term in plain language, with an analogy and — deliberately — what it does *not* prove. - [Coverage check](https://machinewitness.eu/coverage): whether a single named domain is observed, and from which sealed day onward. Not a search engine and not a directory; the queried domain is hashed in the browser so the name never reaches a server. ## Legal and operational - [Crawler identification and exclusion](https://machinewitness.eu/bot): how the MachineWitness crawler identifies itself, and how a site owner asks to be excluded or to have a record removed. - [Imprint](https://machinewitness.eu/imprint): operator, legal form, registered office, tax identifiers. - [Privacy](https://machinewitness.eu/privacy): lawful basis (Art. 6(1)(f) GDPR), the balancing test, and how erasure requests are handled. - [Terms](https://machinewitness.eu/terms): the conditions under which evidence extracts are issued. ## Key facts - Operator: Martin Schenk S.L., Madrid, Spain. Contact: contact@machinewitness.eu - Recording since 22 July 2026. - Files observed per domain: robots.txt, ai.txt, /.well-known/tdmrep.json, llms.txt, and the home page. - What the archive stores per observation: the exact bytes served, the response headers, a SHA-256 fingerprint of the payload, the fingerprint of the TLS certificate presented, and the time in UTC. - Legal context: the Higher Regional Court of Hamburg held on 10 December 2025 that a text-and-data-mining reservation must be machine-readable to be effective; revision was admitted and the German Federal Court of Justice is scheduled to hear the matter on 3 September 2026. ## Machine access (MCP and HTTP) Documented for humans at [Machine access](https://machinewitness.eu/api). An assistant can query this archive directly. The endpoint speaks the Model Context Protocol over Streamable HTTP and is stateless — no session, no key, no registration. - MCP endpoint: `https://machinewitness.eu/mcp` (POST, JSON-RPC 2.0) - `check_coverage(domain)` — whether a domain is observed, from which sealed day, which files, at what cadence. Metadata only; never file contents, never an assessment. - `suggest_domain(domain, email, reason)` — suggest a domain for observation. Answers `received` with `guarantee: none`: a suggestion creates no obligation to observe, no timeline, and no assurance of admission. Admission follows documented criteria and is decided by the operator. The same two operations are plain HTTP for anything not speaking MCP: - `GET https://machinewitness.eu/coverage/{sha256(domain)}` — one record, or `{"observed": false}`. The key is the lowercase hex SHA-256 of the bare domain name (no scheme, no `www.`, no trailing dot), so the name itself is never transmitted. - `POST https://machinewitness.eu/request` — body `{"domain", "email", "reason"}`, same answer as the MCP tool. Rate limited. There is no endpoint that lists or searches the observed set, by design: each lookup answers for one domain the caller already knows. ## Notes for machine readers - The site is static HTML, has no paywall and no login, and every page above is reachable without JavaScript. - Structured data for the archive is published as JSON-LD (schema.org Dataset) on the home page. - Raw archived content is not served from public pages. That is a constraint the operator has bound itself to in its own GDPR balancing test, not a technical limitation; evidence extracts are issued on request under the terms.