machinewitness

Maschinenzugang

Das Archiv aus Software heraus fragen

Dieses Archiv zeichnet auf, was das Web Maschinen mitteilt. Es wäre ein sonderbares Archiv, wenn es nur ein Mensch über ein Formular befragen könnte. Zwei Vorgänge stehen Software offen: fragen, ob eine Domain beobachtet wird, und eine Domain zur Beobachtung vorschlagen. Kein Schlüssel, keine Registrierung, kein Konto.

Beide Vorgänge geben ausschließlich Metadaten zurück. Keiner von beiden liefert den Inhalt einer beobachteten Datei, und es gibt keinen Endpunkt, der den beobachteten Bestand auflistet oder durchsucht. Was eine Datei an einem bestimmten Tag sagte, ist Teil eines Beweisauszugs, der auf Anfrage erteilt wird; siehe Beweisauszug.

Für einen Assistenten: der MCP-Server

Wenn Sie Claude, ChatGPT oder etwas anderes nutzen, das das Model Context Protocol spricht, fügen Sie diesen Endpunkt hinzu, und die beiden Werkzeuge erscheinen in Ihrem Gespräch.

https://machinewitness.eu/mcp

Er nutzt den Streamable-HTTP-Transport und ist zustandslos: keine Sitzung, kein offen gehaltener Datenstrom, keine Zugangsdaten. Tragen Sie ihn in den Einstellungen Ihres Clients als entfernten MCP-Server ein, oder über die Kommandozeile:

claude mcp add --transport http machinewitness https://machinewitness.eu/mcp

check_coverage

check_coverage(domain)

Ob dieses Archiv eine Domain beobachtet, ab welchem versiegelten Tag, welche maschinenlesbaren Dateien es anfragt und wie oft. Eine eingefügte URL wird angenommen und auf den Domainnamen zurückgeführt.

Eine verneinende Antwort ist eine Aussage über dieses Archiv, nicht über die Domain: der größte Teil des Webs wird nicht beobachtet. Eine bejahende Antwort sagt nichts darüber, was die beobachteten Dateien enthalten.

suggest_domain

suggest_domain(domain, email, reason)

Schlägt vor, eine Domain zu beobachten. Die Antwort lautet immer received mit guarantee: none. Es ist eine Anregung, keine Anweisung. Siehe unten was ein Vorschlag bewirkt und was nicht.

Für alles andere: einfaches HTTP

Dieselben zwei Vorgänge ohne MCP, dazu das Wurzelprotokoll als ein Dokument. Nichts davon braucht eine Bibliothek.

Das gesamte Wurzelprotokoll

GET /log.json

Jeder versiegelte Tag, beide Zeugen, in einem Dokument: die Zahl der Beobachtungen, die Merkle-Wurzel, der genaue Siegelzeitpunkt und die externen Anker, die dieser Tag trägt. Es ist die maschinenlesbare Form des öffentlichen Protokolls: ohne Schlüssel, ohne Seitenaufteilung, ohne Mengenbegrenzung.

$ curl -s https://machinewitness.eu/log.json | jq '.days[0]'
{
  "day": "2026-08-23",
  "url": "https://machinewitness.eu/log/2026-08-23",
  "witnesses": {
    "witness-1": {
      "sealed": true,
      "observations": 645785,
      "merkle_root": "a86d011c...",
      "anchors": {"opentimestamps": true, "rfc3161": true, "qualified_eidas": true}
    },
    "witness-2": { "sealed": true, "observations": 608542, "merkle_root": "eb3e7e97..." }
  }
}

Die beiden Zeugen versiegeln unabhängig voneinander, ihre Wurzeln unterscheiden sich also bauartbedingt und werden nie als übereinstimmend dargestellt. Ein Zeuge ohne Siegel für einen Tag sagt das ausdrücklich ("sealed": false mit Grund), statt weggelassen zu werden. Eine fehlende Zeile darf nie als „trifft nicht zu" gelesen werden. Dieses Dokument sagt, was versiegelt wurde, nie, was eine Domain ausgeliefert hat.

Wird eine Domain beobachtet?

GET /coverage/{sha256(domain)}

Der Schlüssel ist der kleingeschriebene hexadezimale SHA-256 des reinen Domainnamens: ohne Schema, ohne www., ohne abschließenden Punkt. Sie hashen den Namen selbst, er wird also nie übertragen und erscheint in keinem Protokoll. Das ist Absicht: ein neutraler Zeuge sollte keine Aufzeichnung darüber ansammeln, wer sich nach wem erkundigt hat.

$ printf 'example.eu' | shasum -a 256
5a9f...  -

$ curl https://machinewitness.eu/coverage/5a9f...
{"observed": false}

Eine beobachtete Domain antwortet mit den versiegelten Daten, den angefragten Artefakten und dem Ring, der die Kadenz bestimmt:

{
  "observed": true,
  "first_sealed_observation": "2026-07-29",
  "last_sealed_observation": "2026-08-02",
  "artefacts": ["robots.txt", "ai.txt", "tdmrep.json", "llms.txt", "homepage"],
  "ring": "core",
  "active": true
}

Eine Domain, die nicht mehr beobachtet wird, antwortet mit "active": false. Ihre versiegelten Datensätze aus dem angezeigten Zeitraum bleiben bestehen. Ein Archiv macht das Beobachten der Vergangenheit nicht rückgängig.

Eine Domain vorschlagen

POST /request

$ curl -X POST https://machinewitness.eu/request \
    -H 'content-type: application/json' \
    -d '{"domain": "example.eu",
         "email": "you@example.eu",
         "reason": "Why this domain should be observed."}'

{"status": "received",
 "guarantee": "none",
 "domain": "example.eu",
 "detail": "Recorded for review against documented criteria. ..."}

Alle drei Felder sind erforderlich. Ein abgelehnter Vorschlag antwortet mit "status": "rejected" und einem Grund: ein unbrauchbarer Domainname, eine fehlende Rückadresse oder eine Begründung, die zu kurz ist, um als solche gelesen zu werden.

Was ein Vorschlag bewirkt und was nicht

Ein Vorschlag wird festgehalten und von einem Menschen anhand dokumentierter Kriterien geprüft: ein Bezug zur Europäischen Union und öffentlich ausgelieferte maschinenlesbare Dateien. Die Entscheidung bleibt beim Betreiber dieses Archivs.

Er begründet keine Pflicht, die Domain zu beobachten, keinen Zeitplan und keine Zusicherung, dass sie aufgenommen wird. Das ist keine juristische Verzierung, sondern die redliche Haltung. Ein Archiv, das versprechen würde, auf Zuruf zu beobachten, schuldete eine Verfügbarkeit, die es nicht zusichern kann, und wer sich auf dieses Versprechen verlassen hat, fände den Beweis an dem Tag nicht vor, an dem ein Crawl scheiterte. Was hier versprochen wird, ist kleiner und einhaltbar: der Vorschlag wird festgehalten, geprüft und an die angegebene Adresse beantwortet.

Die Endung einer Domain ist ein Signal unter mehreren, kein Urteil. Eine Domain außerhalb der 28 europäischen Endungen wird nicht selbsttätig abgelehnt. Sie wird einem Menschen vorgelegt, denn eine Endung ist nur ein grober Anhaltspunkt dafür, wo ein Betreiber tatsächlich sitzt. Diese Einschränkung ist unter wie es funktioniert beschrieben.

Grenzen und Umgangsformen

Mengenbegrenzung
Vorschläge sind je Adresse und insgesamt je Tag begrenzt. Wird eine Grenze überschritten, antwortet der Endpunkt mit 429. Die Abdeckungsabfrage wird am Rand zwischengespeichert und ist für gewöhnliche Nutzung nicht mengenbegrenzt.
Aufzählen
Es gibt keinen Endpunkt, der beobachtete Domains auflistet, und der gehashte Schlüssel sorgt dafür, dass sich die Abfrage nicht durchgehen lässt. Jede Abfrage antwortet für genau eine Domain, die der Aufrufer bereits kennt.
Personenbezogene Daten
Die Abdeckungsabfrage überträgt keinen Domainnamen und keine personenbezogenen Daten. Ein Vorschlag sendet Domain und Adresse im Klartext. Er muss es, weil ein Mensch ihn liest. Siehe Datenschutzerklärung.
Beständigkeit
Dies sind die öffentlichen Vorgänge eines laufenden Archivs, keine versionierte Produkt-API. Felder können hinzukommen; die Bedeutung bestehender Felder wird nicht stillschweigend geändert. Eine umfassendere Daten-API ist eine spätere, gesonderte Frage.

Maschinenlesbare Beschreibungen

Diese Seite veröffentlicht, was sie von anderen verlangt. llms.txt beschreibt beide Zugangswege in einer Form, die ein Sprachmodell unmittelbar lesen kann; ai.txt und tdmrep.json erklären, dass für die eigenen Inhalte dieser Seite kein Vorbehalt gegen Text- und Data-Mining erhoben wird.

Etwas funktioniert nicht, oder eine Antwort sieht falsch aus? Schreiben Sie an contact@machinewitness.eu. Automatisierter Zugriff, der Schwierigkeiten macht, wird begrenzt statt stillschweigend gesperrt, und Sie erfahren davon.