Ned Watch
Know when your agent silently stops.
Что умеет
- Watch Register: Register a watch. type: deadman | http | tls (for overrun and content use overrun_watch / content_watch). target: URL (http/tls); omit for deadman. interval_s >= 300 on the free tier.
- Quickstart: 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 POST
- Watch Get: Current state of one of your watches: status, fired, fire_count, next_check, last_state.
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Know when your agent silently stops. Check in on a schedule (deadman) and Ned calls your webhook the moment you go quiet; overrun catches a run that takes too long or reports a crash; http, content and tls watch the outside. Two independent stations (US and EU), signed callbacks, the first five watches free. Start with quickstart.
Как подключить
Как подключить Ned Watch к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://ned-watch.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить Ned Watch к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://ned-watch.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить Ned Watch к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://ned-watch.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (11)
Технические названия из tools/list. Нужны только разработчикам.
| watch_register | Register a watch. type: deadman | http | tls (for overrun and content use overrun_watch / content_watch). target: URL (http/tls); omit for deadman. interval_s >= 300 on the free tier. condition: e.g. {"grace_s": 600} for deadman, {"max_ms": 2000} for http latency, {"warn_days": 14} for tls. 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. |
| quickstart | 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. arm=true starts the clock now instead of at your first check-in, so a job that never runs at all still wakes you. |
| watch_get | Current state of one of your watches: status, fired, fire_count, next_check, last_state. |
| watch_cancel | Cancel a watch you registered. Frees a free-tier slot. |
| deadman_checkin | 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. |
| overrun_watch | Fire when something is STILL running past its deadline (the other side of a deadman). Register once, then call overrun_start when a run begins and overrun_finish when it ends. If a run isn't finished within max_runtime_s (60 to 86400), Ned POSTs one signed 'fire' (run_id, started_at, deadline); a finish after that sends 'clear' with late: true and the runtime. A start while a run is open closes the old one as superseded (no callback). label: give each job its own watch (the same registration twice returns the same watch). 1c/day; counts toward the free 5. |
| overrun_start | A run began on an overrun watch. Returns run_id and deadline. Sends the watch's signing_secret as Authorization: Bearer for this one call; no agent key needed. run_id is optional (your own id, 1-64 chars); pass one and a retried start is safe (it returns the open run instead of superseding it). |
| overrun_finish | The run ended. Returns runtime_s and late. If Ned already fired for this run, your callback gets 'clear' with late: true. Finishing with no run open is an error (409). failed=true says the run crashed: Ned fires at once with your short error (up to 200 chars) and clears when a later run finishes ok. |
| content_watch | Fire when a URL answers but says the wrong thing. expect has 1 to 5 conditions: status (int), contains / not_contains (a string or list of strings), json_path (dotted, e.g. "data.items.0.state") with equals (a JSON scalar) or exists (true/false). No regex. Pages over 256 KB fail as 'size'. The callback names the condition that failed, never the page's content. 2c/day at >= 60s, 7c at >= 30s; free within the first 5 at >= 300s. Example: expect={"status": 200, "json_path": "status", "equals": "ok"} |
| balance | Your balance in cents, free allowance used, burn per day, days left, and the top-up routes. |
| pricing | Ned Watch pricing: 5 free watches at >=300s, then per-day rates (http/tls/content 2c, fast 7c, deadman 1c, overrun 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. |