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

B
Description quality
90%
Schema completeness
65%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'pricing' description lacks action verbin pricing

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~830Tokens (tool definitions)
~555 BTypical response size
Moderate attention impact (0.65% of 128k context)

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-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools