machinewitness

Dostęp maszynowy

Odpytywanie archiwum z poziomu oprogramowania

To archiwum zapisuje, co sieć przekazuje maszynom. Byłoby dziwnym archiwum, gdyby odpytać je mógł wyłącznie człowiek wypełniający formularz. Dla oprogramowania otwarte są dwie operacje: zapytać, czy domena jest obserwowana, i zaproponować domenę do obserwacji. Bez klucza, bez rejestracji, bez konta.

Obie operacje zwracają wyłącznie metadane. Żadna nie zwraca treści obserwowanego pliku i nie istnieje punkt dostępu, który wymieniałby obserwowany zbiór lub pozwalał go przeszukiwać. To, co plik zawierał określonego dnia, stanowi część wyciągu dowodowego wydawanego na wniosek; zob. wyciąg dowodowy.

Dla asystenta: serwer MCP

Jeżeli korzystają Państwo z Claude, ChatGPT albo czegokolwiek innego, co posługuje się Model Context Protocol, wystarczy dodać ten punkt dostępu, a oba narzędzia pojawią się w rozmowie.

https://machinewitness.eu/mcp

Używa transportu Streamable HTTP i jest bezstanowy: żadnej sesji do nawiązania, żadnego otwartego strumienia, żadnych danych uwierzytelniających. Proszę dodać go jako zdalny serwer MCP w ustawieniach klienta albo z wiersza poleceń:

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

check_coverage

check_coverage(domain)

Czy to archiwum obserwuje domenę, od którego opieczętowanego dnia, o które czytelne dla maszyn pliki pyta i jak często. Wklejony adres URL jest przyjmowany i sprowadzany do nazwy domeny.

Odpowiedź przecząca jest stwierdzeniem o tym archiwum, a nie o domenie: większość sieci nie jest obserwowana. Odpowiedź twierdząca nie mówi nic o tym, co obserwowane pliki zawierają.

suggest_domain

suggest_domain(domain, email, reason)

Zaproponowanie, aby domena była obserwowana. Odpowiedź brzmi zawsze received z guarantee: none. To wniosek, nie polecenie. Zob. niżej, co propozycja daje, a czego nie.

Dla wszystkiego innego: zwykły HTTP

Te same dwie operacje bez MCP oraz rejestr korzeni jako jeden dokument. Nic z tego nie wymaga biblioteki.

Cały rejestr korzeni

GET /log.json

Każdy opieczętowany dzień, obaj świadkowie, w jednym dokumencie: liczba obserwacji, korzeń Merkle, dokładna godzina opieczętowania oraz to, które zakotwiczenia zewnętrzne dany dzień nosi. To czytelna dla maszyn postać rejestru publicznego: bez klucza, bez stronicowania, bez limitu częstotliwości.

$ 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..." }
  }
}

Obaj świadkowie pieczętują niezależnie, ich korzenie różnią się więc z samej konstrukcji i nigdy nie są przedstawiane jako zgodne. Świadek, który nie ma pieczęci dla danego dnia, mówi to wprost ("sealed": false z uzasadnieniem), zamiast zostać pominięty. Brakujący wiersz nigdy nie może być czytany jako „nie dotyczy". Ten dokument stwierdza, co zostało opieczętowane, nigdy zaś, co domena wysłała.

Czy domena jest obserwowana?

GET /coverage/{sha256(domain)}

Kluczem jest skrót SHA-256 samej nazwy domeny, zapisany małymi literami szesnastkowo: bez schematu, bez www., bez kropki na końcu. Skrót obliczają Państwo sami, nazwa nie jest więc nigdy przesyłana i nie pojawia się w żadnym dzienniku. To celowe: neutralny świadek nie powinien gromadzić zapisu tego, kto o kogo pytał.

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

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

Obserwowana domena odpowiada opieczętowanymi datami, żądanymi zasobami oraz pierścieniem wyznaczającym częstotliwość:

{
  "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
}

Domena, która nie jest już obserwowana, odpowiada "active": false. Jej opieczętowane zapisy ze wskazanego okresu pozostają. Archiwum nie odobserwowuje przeszłości.

Zaproponuj domenę

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. ..."}

Wszystkie trzy pola są obowiązkowe. Odrzucona propozycja odpowiada "status": "rejected" z uzasadnieniem: nienadająca się do użycia nazwa domeny, brak adresu zwrotnego albo uzasadnienie zbyt krótkie, by za takie uchodzić.

Co propozycja daje, a czego nie

Propozycja zostaje zapisana i rozpatrzona przez człowieka według udokumentowanych kryteriów: związek z Unią Europejską oraz publicznie udostępniane pliki czytelne dla maszyn. Decyzja należy do prowadzącego to archiwum.

Nie rodzi obowiązku obserwowania domeny, nie wyznacza terminu i nie stanowi zapewnienia, że domena zostanie dodana. To nie ozdobnik prawny, lecz uczciwe stanowisko. Archiwum, które obiecywałoby obserwację na żądanie, byłoby winne dostępność, której nie może zagwarantować, a kto na tej obietnicy by polegał, znalazłby brak dowodu w dniu nieudanego skanowania. To, co obiecujemy tutaj, jest skromniejsze i możliwe do dotrzymania: propozycja zostaje zapisana, rozpatrzona i otrzymuje odpowiedź na podany adres.

Rozszerzenie domeny jest jedną z przesłanek, a nie werdyktem. Domena spoza 28 rozszerzeń europejskich nie jest odrzucana automatycznie. Trafia przed człowieka, ponieważ rozszerzenie jest tylko zgrubnym przybliżeniem tego, gdzie operator rzeczywiście się znajduje. Ograniczenie to opisano w jak to działa.

Ograniczenia i zasady korzystania

Limity częstotliwości
Propozycje są ograniczone na adres oraz łącznie na dobę. Przekroczenie limitu daje odpowiedź 429. Sprawdzenie zasięgu jest buforowane na brzegu sieci i przy zwykłym użyciu nie podlega ograniczeniu częstotliwości.
Wyliczanie zbioru
Żaden punkt dostępu nie wymienia obserwowanych domen, a klucz w postaci skrótu sprawia, że zapytań nie da się przejść po kolei. Każde zapytanie odpowiada dla jednej domeny, którą pytający już zna.
Dane osobowe
Sprawdzenie zasięgu nie przesyła ani nazwy domeny, ani danych osobowych. Propozycja przesyła domenę i Państwa adres jawnym tekstem. Musi to robić, bo czyta ją człowiek. Zob. informację o prywatności.
Stabilność
To są publiczne operacje działającego archiwum, a nie wersjonowane API produktu. Pola mogą zostać dodane; znaczenie pól istniejących nie zostanie zmienione po cichu. Szersze API danych to sprawa późniejsza i odrębna.

Opisy czytelne dla maszyn

Ten serwis publikuje to, czego wymaga od innych. llms.txt opisuje obie drogi dostępu w postaci, którą model językowy może odczytać wprost; ai.txt oraz tdmrep.json stwierdzają, że wobec eksploracji tekstów i danych własnych treści tego serwisu nie zgłoszono żadnego zastrzeżenia.

Coś nie działa albo odpowiedź wygląda na błędną? Proszę napisać na contact@machinewitness.eu. Dostęp automatyczny, który sprawia kłopoty, zostanie ograniczony, a nie zablokowany po cichu, i zostaną Państwo o tym poinformowani.