Status
Are the Sato Hub surfaces answering?
Sato Hub checks its own machine surfaces once an hour and publishes the result. Each row is the share of our checks that succeeded and how long they took — one checker, one region. A failed check may be the surface, the network in between, or the checker itself, and we cannot tell which. This is a record, not a service-level agreement.
Availability is not usage. Nothing here counts requests anyone else made. Looking for the MCP servers we list? That is /status.
MCP initialize
/api/mcpOperationalJSON-RPC initialize handshake
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
MCP tools/list
/api/mcpOperationalJSON-RPC tools/list returns a non-empty tool set
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
MCP tools/call
/api/mcpOperationalone search call through onchain_agent_search_resources
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
Directory export
/api/export/index.jsonOperationalGET, parsed, entry list non-empty
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
Change feed
/api/changesOperationalGET with a 7-day window, parsed
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
Preflight
/api/preflightOperationalGET one fixed token target, verdict present
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
Signing JWKS
/.well-known/jwks.jsonOperationalGET, one Ed25519 key present
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
Response signature
/.well-known/jwks.jsonOperationalthe Preflight body verified against the published JWKS key
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
OpenAPI document
/api/openapi.jsonOperationalGET, parsed, paths present
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
Score badge
/api/badge/{slug}OperationalGET one listing badge, SVG returned
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
Agent manifest
/api/agents/{slug}/manifestOperationalGET one passport manifest, parsed
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
Route quote
/api/route/swapOperationalGET one swap quote, response parsed
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
llms.txt
/llms.txtOperationalGET, non-empty body
- Checks that succeeded, 90d:
- no history yet
- p95 latency, typical day:
- —
- Last checked:
- 2026-09-14 02:57 UTC
Incidents
An incident opens when 3 consecutive checks of one surface fail, and closes on the first check that succeeds. Derived from the last 14 days of checks — nobody declares one, and there is no place to write a note about one.
No run of 3 consecutive failures in the last 14 days.
How these numbers are made
- One checker, hourly, from a GitHub Actions runner. Not a distributed probe network.
- A percentage is withheld until a surface has 24 checks in the window — the same sample-size rule the rest of the catalog keeps. Withheld reads as withheld, never as 100%.
- Latency percentiles use successful checks only. A timed-out request records a deadline, not a measurement of the surface, and would drag a percentile toward the timeout.
- The window figure is the median of the daily p95s. Averaging percentiles produces a number that describes nothing; naming the statistic is cheaper than explaining it later.
- The signature row verifies a signed response against the key published at /.well-known/jwks.json, the way an outside consumer would — never against a local key.
- Days with no checks are drawn as gaps. A day we did not run is not a day at 100%.
Machine-readable: /api/status.json (current), /status/history.json (daily rollups), /status/feed.xml (incident feed). Report assembled 2026-09-14 03:18 UTC.