Endpoint Monitor
Endpoint monitoring built for agents that watch services — their own, or the APIs they depend on. One call performs a full health probe: HTTP status and whether the service counts as up, end-to-end latency in milliseconds, response size, server and content-type headers. For HTTPS endpoints it opens a TLS connection with certificate capture and reports the issuer, subject, SANs, expiry timestamp and days remaining — catching expiring certificates two weeks out. A security-header audit checks HSTS, Content-Security-Policy, X-Content-Type-Options and X-Frame-Options. Problems come back as named issues: UNREACHABLE, SERVER_ERROR_STATUS, SLOW_RESPONSE (>3s), CERTIFICATE_EXPIRING (<14 days), CERTIFICATE_EXPIRED. At $0.005 per probe, an agent checking a service every 5 minutes spends about $1.44/day for full uptime + certificate monitoring with no subscription. All probing is SSRF-guarded and server-side.
Call with x402
1. Send the request. 2. Receive 402 with accepts[]. 3. Sign the payment and retry with the X-PAYMENT header.
curl -X POST https://agentbit.app/v1/monitor/endpoint \
-H 'Content-Type: application/json' \
-d '{"url":"https://agentbit.app/api/health"}'
Input schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL to probe"
}
},
"required": [
"url"
]
}Output schema
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"up": {
"type": "boolean"
},
"http_status": {
"type": [
"integer",
"null"
]
},
"latency_ms": {
"type": [
"integer",
"null"
]
},
"response_bytes": {
"type": [
"integer",
"null"
]
},
"tls": {
"type": [
"object",
"null"
],
"properties": {
"issuer": {
"type": [
"string",
"null"
]
},
"subject": {
"type": [
"string",
"null"
]
},
"valid_to": {
"type": [
"string",
"null"
]
},
"days_to_expiry": {
"type": [
"integer",
"null"
]
},
"sans": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"security_headers": {
"type": [
"object",
"null"
]
},
"issues": {
"type": "array",
"items": {
"type": "string"
}
},
"checked_at": {
"type": "string"
}
}
}Code examples
// JavaScript (x402-fetch)
import { wrapFetchWithPayment } from "x402-fetch";
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
const r = await fetchWithPay("https://agentbit.app/v1/monitor/endpoint", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({"url":"https://agentbit.app/api/health"})
});
console.log(await r.json());
# Python (x402 client)
from x402.clients.requests import x402_requests
s = x402_requests(account)
r = s.post("https://agentbit.app/v1/monitor/endpoint",
json={"url":"https://agentbit.app/api/health"})
print(r.json())
// PHP
$r = Http::withHeaders(['X-PAYMENT' => $signedPayment])
->post('https://agentbit.app/v1/monitor/endpoint',
array (
'url' => 'https://agentbit.app/api/health',
));
$data = $r->json();