Ned Watch
Wake me when my agent misses its heartbeat: one quickstart call. HTTP, TLS, deadman; US+EU nodes.
Should I use this
Quality & Safety
Findings (1)
- LOWin pricing
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"ned-watch": {
"url": "https://api.ned.watch/mcp"
}
}
}Remote endpoints
https://api.ned.watch/mcpstreamable-httpWhat it can do
Tool inventory
Tools (7)
⚪watch_register(type, callback_url, target, interval_s, condition)
Register a watch. type: http | tls | deadman. target: URL (http/tls); omit for deadman. interval_s >= 300 on the free tier. condition: e.g. {"warn_days": 14} for tls, {"grace_s": 600} for deadman, {"max_ms": 2000} for http latency. Ned POSTs a signed test callback to callback_url within 60s, then fires on change. No agent key yet? Call this without one: the response includes agent_key (shown once). Store it and pass it as NED_AGENT_KEY next time.
Input Schema
{
"type": "object",
"properties": {
"type": {
"title": "Type",
"type": "string"
},
"callback_url": {
"title": "Callback Url",
"type": "string"
},
"target": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Target"
},
"interval_s": {
"default": 300,
"title": "Interval S",
"type": "integer"
},
"condition": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Condition"
}
},
"required": [
"type",
"callback_url"
],
"title": "watch_registerArguments"
}🟢quickstart(callback_url, every_minutes)
The fastest way to be watched, in one call. Makes you an agent (if you have no key yet) and a deadman watch that expects a check-in every `every_minutes` (5 to 1440). Miss one and Ned POSTs a signed message to callback_url; check in again and he says it's clear. Returns agent_key (shown once), signing_secret, and the exact check-in line to run on your schedule. The first 5 watches are free.
Input Schema
{
"type": "object",
"properties": {
"callback_url": {
"title": "Callback Url",
"type": "string"
},
"every_minutes": {
"default": 60,
"title": "Every Minutes",
"type": "integer"
}
},
"required": [
"callback_url"
],
"title": "quickstartArguments"
}🟢watch_get(watch_id)
Current state of one of your watches: status, fired, fire_count, next_check, last_state.
Input Schema
{
"type": "object",
"properties": {
"watch_id": {
"title": "Watch Id",
"type": "string"
}
},
"required": [
"watch_id"
],
"title": "watch_getArguments"
}🔴watch_cancel(watch_id)
Cancel a watch you registered. Frees a free-tier slot.
Input Schema
{
"type": "object",
"properties": {
"watch_id": {
"title": "Watch Id",
"type": "string"
}
},
"required": [
"watch_id"
],
"title": "watch_cancelArguments"
}🟢deadman_checkin(watch_id, signing_secret)
Check in on a deadman watch to keep it from firing. Proves you hold the watch's signing_secret (returned at registration): it is sent as Authorization: Bearer <signing_secret> for this one call. No agent key needed.
Input Schema
{
"type": "object",
"properties": {
"watch_id": {
"title": "Watch Id",
"type": "string"
},
"signing_secret": {
"title": "Signing Secret",
"type": "string"
}
},
"required": [
"watch_id",
"signing_secret"
],
"title": "deadman_checkinArguments"
}⚪balance
Your balance in cents, free allowance used, burn per day, days left, and the top-up routes.
Input Schema
{
"type": "object",
"properties": {},
"title": "balanceArguments"
}🟡pricing
Ned Watch pricing: 5 free watches at >=300s, then per-day rates (http/tls 2c, fast 7c, deadman 1c) from a prepaid balance topped up over x402 (USDC on Base). Public, no key needed. Paying is done against POST /v1/topup/{5,20,50}, not here.
Input Schema
{
"type": "object",
"properties": {},
"title": "pricingArguments"
}Community
Evidence