Mercury · Cited Availability
GET /buy/availability
What it does
URL → a signed uptime/status probe: up/down, HTTP status + class, reachability reason, final URL after redirects, and a measured responseMs — wrapped in an offline-verifiable provenance receipt that makes "it was up/down at T" provable SLA evidence. Deterministic verdict (responseMs is telemetry, not signed). Keyless, no LLM, no signup.
The goal it serves: create provable point-in-time evidence — “it was up / it changed / it answered like this at time T” — for SLAs, change tracking and tamper-evident audit trails.
Schemas & output preview
Input schema — the exact request shape the route validates.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "the endpoint/page to probe for availability (http/https)"
}
},
"required": [
"url"
],
"additionalProperties": false
}Output schema — the exact response shape the handler returns.
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "true once the PROBE completed (the host was reached at the network/HTTP layer); false only when the probe itself could not be performed against a reachable host"
},
"url": {
"type": "string",
"description": "final URL after redirects (or the requested URL when unreachable)"
},
"status": {
"type": [
"integer",
"null"
],
"description": "upstream HTTP status observed (null when the host never responded)"
},
"text": {
"type": "string",
"description": "canonical sorted-key JSON of the signed verdict — the exact string the receipt signs over (responseMs deliberately excluded for determinism)"
},
"fetchedAt": {
"type": "string",
"description": "ISO-8601 probe time (provenance metadata bound by the receipt)"
},
"data": {
"type": "object",
"description": "the deterministic availability verdict",
"properties": {
"up": {
"type": "boolean",
"description": "true iff the host responded with a non-error class (2xx/3xx)"
},
"reachable": {
"type": "boolean",
"description": "true iff the host produced ANY HTTP response (a 4xx/5xx host is reachable but not up)"
},
"httpStatus": {
"type": [
"integer",
"null"
],
"description": "the observed HTTP status, or null when unreachable"
},
"responseClass": {
"type": "string",
"enum": [
"1xx-informational",
"2xx-success",
"3xx-redirect",
"4xx-client-error",
"5xx-server-error",
"unknown",
"none"
]
},
"reason": {
"type": "string",
"description": "stable reachability category: ok | <http class> | dns-failure | timeout | connection-refused | connection-reset | tls-error | redirect-loop | blocked-ssrf | invalid-url | unreachable"
},
"responseMs": {
"type": [
"integer",
"null"
],
"description": "measured round-trip ms (TELEMETRY — NOT part of the signed text; non-deterministic by nature)"
},
"rubric": {
"type": "string",
"description": "verdict rubric version id"
}
},
"required": [
"up",
"reachable",
"httpStatus",
"responseClass",
"reason",
"rubric"
],
"additionalProperties": false
},
"attestation": {
"type": "object",
"description": "EIP-191 provenance receipt over the canonical verdict text — verifiable OFFLINE by anyone (key pinned at /.well-known/mercury-attestation). Proves MERCURY observed THIS up/down + status at THIS time. The SLA-evidence wedge a free uptime checker structurally cannot emit."
},
"error": {
"type": "string",
"description": "present only when ok:false (the probe could not be performed)"
}
},
"required": [
"ok",
"url"
],
"additionalProperties": true
}Output preview — a real example response, shown free (you only pay when you call the route).
{
"ok": true,
"url": "https://example.com/",
"status": 200,
"text": "{\"httpStatus\":200,\"reachable\":true,\"reason\":\"ok\",\"responseClass\":\"2xx-success\",\"rubric\":\"mercury-cited-availability-v1\",\"up\":true}",
"fetchedAt": "2026-06-04T00:00:00.000Z",
"data": {
"up": true,
"reachable": true,
"httpStatus": 200,
"responseClass": "2xx-success",
"reason": "ok",
"responseMs": 142,
"rubric": "mercury-cited-availability-v1"
}
}Pay & call
Your agent calls the route; the 402 challenge carries the exact price ($0.005, USDC on Base mainnet); the x402 client settles via the CDP facilitator and retries. No key, no signup.
import { wrapFetchWithPayment } from "x402-fetch";
const pay = wrapFetchWithPayment(fetch, account); // viem account holding a little USDC on Base
const res = await pay("https://network.mercury-hq.com/buy/availability?url=https://example.com");
const out = await res.json(); // the result + `attestation` (the signed receipt)Prepaid alternative — the same route accepts an API key:
# Same route, prepaid API-key rail (Bearer mk_live_…) — get a key at https://network.mercury-hq.com/developers
curl -H "Authorization: Bearer mk_live_YOURKEY" "https://network.mercury-hq.com/buy/availability?url=https://example.com"Verify the receipt
Recover the EIP-191 signature over sha256(content)‖url‖status‖fetchedAt‖nonce and confirm the signer equals the pinned attestation key 0xACB40253BD71Bb9a5d491b2c6EFF755F2A33Fc75 (published at /.well-known/mercury-attestation). No callback to Mercury — the receipt verifies offline, forever. Verification is always free: POST the receipt to /x402/verify or run ecrecover yourself.
| Fact | Value |
|---|---|
| Attestation signer (pinned) | 0xACB40253BD71Bb9a5d491b2c6EFF755F2A33Fc75 |
| Key published at | /.well-known/mercury-attestation |
| Live verifier (free) | /x402/verify |
| Settlement | real USDC on Base mainnet (eip155:8453) via CDP — auditable on BaseScan |
Related
Cited Headers
$0.005Cited Redirect
$0.005More: all services · /catalog · the headline web-fetch · agent twin of this page: GET /university/docs/cited-availability?format=md