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