Ned Watch
ned.watch
· Ned Watch
Register a URL, condition, or deadline; Ned wakes you at your callback when it fires. Independent, multi-region, signed.
ned.watch via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
F
Conformance score: 29/100
F-grade: card is reachable but fails most operational signals.
click to expand breakdown ▾
click to collapse breakdown ▴
agent-card.json changed within the last 7 days. We track these so downstream callers can react.
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedNothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.
Card history
1 snapshot Every change toagent-card.json
| Captured | Hash | |
|---|---|---|
| 2026-10-01 09:02:24 current | 044c71d77475… |
view → |
Endpoints
| Agent card | https://ned.watch/.well-known/agent-card.json |
| Provider | https://ned.watch |
Skills · 5 declared · mapped to canonical taxonomy
You check in on a schedule (POST /v1/checkin/{id} with Authorization: Bearer <signing_secret>); Ned fires your callback if you go silent.
Fires when a URL is down, returns an unexpected status, or exceeds a latency threshold.
Fires when a certificate is within N days of expiry or the handshake fails.
POST /v1/watches/{id}/start when a run begins and /finish when it ends (Authorization: Bearer <signing_secret>); Ned fires once if it's still running after max_…
The page answers 200 but says the wrong thing: status, contains, not_contains, json_path equals/exists (no regex, 256 KB max). The callback names the failed con…
Health · last 1 probes
Cheaper or better alternatives per-skill
For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/ned.watch) [](https://agenstry.com/agents/ned.watch) [](https://agenstry.com/agents/ned.watch) [](https://agenstry.com/agents/ned.watch)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"pricing": {
"currency": "USD",
"unit": "cents",
"free": {
"watches": 5,
"min_interval_s": 300,
"note": "The first 5 active watches at 300s or slower cost nothing. Any type."
},
"paid": [
{
"tier": "standard",
"types": [
"http",
"tls",
"content"
],
"min_interval_s": 60,
"cents_per_day": 2
},
{
"tier": "fast",
"types": [
"http",
"tls",
"content"
],
"min_interval_s": 30,
"cents_per_day": 7
},
{
"tier": "deadman",
"types": [
"deadman"
],
"min_interval_s": 60,
"cents_per_day": 1
},
{
"tier": "overrun",
"types": [
"overrun"
],
"max_runtime_s": [
60,
86400
],
"cents_per_day": 1,
"note": "no interval to choose: checked at each run's deadline; counts toward the free five like any watch"
}
],
"limits": {
"content": {
"max_body_bytes": 262144,
"max_conditions": 5,
"conditions": [
"status",
"contains",
"not_contains",
"json_path + equals",
"json_path + exists"
],
"regex": false
},
"overrun": {
"max_runtime_s": [
60,
86400
]
}
},
"billing": {
"debit": "daily at 00:10 UTC per active paid watch",
"register_requires": "balance >= one day of burn including the new watch, when the watch is paid",
"pause": "a watch pauses (event: paused) when the balance can't cover its day",
"low_balance": "one callback (event: low_balance) when balance < 3 days of burn, reset by a top-up"
},
"topup": {
"min_usd": 5,
"options_usd": [
5,
20,
50
],
"routes": [
"https://api.ned.watch/v1/topup/5",
"https://api.ned.watch/v1/topup/20",
"https://api.ned.watch/v1/topup/50"
],
"rail": {
"x402": {
"network": "eip155:8453",
"asset": "USDC",
"asset_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"how": "POST the route with no payment to receive x402 payment requirements; retry with PAYMENT-SIGNATURE"
},
"card": "coming"
}
},
"pricing_url": "https://api.ned.watch/v1/pricing"
},
"name": "Ned Watch",
"description": "Register a URL, condition, or deadline; Ned wakes you at your callback when it fires. Independent, multi-region, signed.",
"url": "https://api.ned.watch",
"watch_types": [
"deadman",
"overrun",
"http",
"content",
"tls"
],
"version": "1.7",
"provider": {
"organization": "Ned Watch",
"url": "https://ned.watch"
},
"iconUrl": "https://ned.watch/brand/sweepthrough-dark-512.png",
"image": "https://ned.watch/brand/instrument-open-512.png",
"capabilities": {
"streaming": false,
"pushNotifications": true
},
"skills": [
{
"id": "watch.deadman",
"name": "Dead-man switch",
"description": "You check in on a schedule (POST /v1/checkin/{id} with Authorization: Bearer <signing_secret>); Ned fires your callback if you go silent."
},
{
"id": "watch.http",
"name": "HTTP watch",
"description": "Fires when a URL is down, returns an unexpected status, or exceeds a latency threshold."
},
{
"id": "watch.tls",
"name": "TLS watch",
"description": "Fires when a certificate is within N days of expiry or the handshake fails."
},
{
"id": "watch.overrun",
"name": "Overrun watch",
"description": "POST /v1/watches/{id}/start when a run begins and /finish when it ends (Authorization: Bearer <signing_secret>); Ned fires once if it's still running after max_runtime_s, and clears with late:true and the runtime when it finishes."
},
{
"id": "watch.content",
"name": "Content watch",
"description": "The page answers 200 but says the wrong thing: status, contains, not_contains, json_path equals/exists (no regex, 256 KB max). The callback names the failed condition, never the page's content."
}
],
"authentication": {
"schemes": [
"bearer"
],
"note": "POST /v1/watches without a key to receive one."
},
"endpoints": {
"register": "https://api.ned.watch/v1/watches",
"docs": "https://api.ned.watch/docs"
},
"nodes": [
"watch-us",
"watch-eu"
],
"replication": true,
"contact": "ned@ned.watch"
}