WatchFor

WatchFor — uptime & infrastructure monitoring for AI agents.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inRU / CISFreeCan modify data

What it can do

  • Get Summary: One-call organization snapshot: monitor status counts (up/down/paused/unknown + health score), active incident counts and open maintenance windows. Start here for 'how is my infrastructur
  • Get Incident Stats: Aggregate incident statistics over a period: totals by severity, MTTR (mean time to resolve), MTBF and the five most unstable monitors.
  • Get Plan: Current subscription plan with limits (-1 = unlimited, 0 = feature off) and live usage counts.

What data it sees

Do you need an account

No: the server works without sign-in

WatchFor — uptime & infrastructure monitoring for AI agents. Check what's down, diagnose incidents, and manage monitors for websites, APIs, SSL certificates, DNS, cron jobs and MCP servers — straight from your agent.

37 tools over the WatchFor monitoring platform:

  • 📊 Status & health — get_summary answers "is everything up?" in one call; uptime %, incident stats, MTTR/MTBF
  • 🚨 Incident diagnosis — list firing incidents with the exact rule that triggered (metric, threshold, duration), acknowledge & resolve
  • 🖥️ Monitor management — create/update monitors across 25 check types (HTTP, API with JSON assertions, SSL expiry, DNS, TCP/UDP, ping, MTR, SMTP, heartbeat/cron, Core Web Vitals, MCP server monitoring…), run on-demand checks
  • 🔔 Alerting — alert rules validated against a machine-readable metric catalog, contacts & notification groups (email, Slack, Discord, Telegram, PagerDuty + 12 more channels)
  • 🔧 Maintenance windows — silence planned downtime without pausing checks

Zero-friction auth: discovery (initialize/tools/list) plus reference resources and prompt templates work with no key. Tool calls use OAuth 2.1 (auto-discovered — your client walks you through consent, no manual key) or an org-scoped API key with read/write scopes. Free plan available, no credit card.

Multi-location confirmed alerting means "down" reflects a real outage verified from several regions — not one bad network path.

Docs: watchfor.io/docs/api/mcp · Quickstart: watchfor.io/agents.md

How to connect

How to connect WatchFor to Claude

The server address to paste into Claude settings:

https://watchfor--hello-65wl.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect WatchFor to ChatGPT

The server address to paste into ChatGPT settings:

https://watchfor--hello-65wl.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect WatchFor to Cursor

The server address to paste into Cursor settings:

https://watchfor--hello-65wl.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (37)

Raw names from tools/list. Only developers need these.

get_summaryOne-call organization snapshot: monitor status counts (up/down/paused/unknown + health score), active incident counts and open maintenance windows. Start here for 'how is my infrastructure right now?'.
get_incident_statsAggregate incident statistics over a period: totals by severity, MTTR (mean time to resolve), MTBF and the five most unstable monitors.
get_planCurrent subscription plan with limits (-1 = unlimited, 0 = feature off) and live usage counts.
list_monitorsList monitors (cursor-paginated, slim items: id/name/type/target/status/tags — use get_monitor for full detail). Filter by type, status, tag, or search by name/target with q.
get_monitorGet one monitor by id — includes config and available_metrics (the alert metrics valid for its type).
get_monitor_typesDiscovery catalog of all 25 monitor types: target format, default alert rules, per-type alert metrics (exact `metric` strings, operators, value types) and config fields. Consult this BEFORE creating monitors or alert rules.
create_monitorCreate a monitor (write scope). Location ids come from list_locations; check get_monitor_types for the target format and config fields of the chosen type. Interval is seconds and is validated against the plan's per-type minimum.
update_monitorUpdate monitor fields (write scope). Send only what changes. In config, a key set to null is removed; omitted alerting-owned keys are preserved.
set_monitor_pausedPause or resume a monitor (write scope). Idempotent.
delete_monitorPermanently delete a monitor (write scope). Removes its scheduler job, alert rules and open incidents. This cannot be undone — confirm with the user before calling unless they explicitly asked for deletion.
run_check_nowDispatch an immediate on-demand check for a monitor (write scope, plan-limited per hour). The result lands in get_monitor_checks within ~a minute.
get_monitor_uptimeUptime percentage and check totals for a monitor over a period (scheduled maintenance excluded).
get_monitor_checksRecent check results for a monitor (status, latency, per-location performance). Pass success=false to fetch only FAILED checks — one-call failure forensics. hours widens the window (up to 720).
list_locationsProbe locations available for monitors — use these ids in create_monitor's locations array.
list_alert_rulesList a monitor's alert rules (system defaults + custom). Rules define when incidents fire.
create_alert_ruleCreate an alert rule on a monitor (write scope). `metric` must come from the monitor type's alert metrics (see get_monitor_types or get_monitor.available_metrics); value is always a string. At most one rule per metric per severity — a duplicate returns the existing rule's id, PATCH via the REST API instead.
update_alert_ruleUpdate an alert rule (write scope) — fix a noisy threshold, change severity, or enable/disable. Send only the fields that change; metric/operator/value are validated against the monitor type's catalog.
delete_alert_ruleDelete a custom alert rule (write scope). System default rules cannot be deleted (403) — disable them with update_alert_rule enabled=false instead.
list_contactsAlert recipients (people) with their group memberships — answers 'who gets notified?'. Cursor-paginated.
get_contactOne contact's detail: name, email, phone, group memberships.
create_contactCreate an alert recipient (write scope). Optionally place them straight into notification groups (ids from list_contact_groups). Duplicate email (case-insensitive) returns the existing-contact conflict.
update_contactUpdate a contact (write scope). Send only what changes; group_ids replaces ALL memberships ([] removes from every group, omitted keeps them).
delete_contactDelete a contact (write scope) — removes them from all notification groups. Irreversible; confirm with the user unless they explicitly asked.
list_contact_groupsNotification groups (contact groups) — where alerts are delivered. Use these ids to answer 'where do alerts for this monitor go?' (monitor config's notificationGroupIds) or when wiring alert rules to a specific audience.
get_contact_groupOne notification group's detail INCLUDING its member list (who exactly gets paged).
create_contact_groupCreate a notification group (write scope), optionally with initial members (contact ids from list_contacts).
update_contact_groupUpdate a notification group (write scope). contact_ids replaces the FULL member list ([] empties the group, omitted keeps it).
delete_contact_groupDelete a notification group (write scope). The org's default group cannot be deleted (conflict). Monitors routed to it stop notifying through it — confirm with the user first.
list_incidentsList incidents newest first (cursor-paginated). Filter by status (firing/acknowledged/resolved), severity, a single monitor (monitor_id) and a started_at time range (since/until). Each incident carries the rule that fired (name/metric/operator/value) and duration_seconds.
get_incidentFull detail of one incident: what fired, trigger values, confirmations, timeline.
acknowledge_incidentAcknowledge a firing incident (write scope) — pauses repeat notifications while someone investigates.
resolve_incidentManually resolve an incident (write scope). Accepted asynchronously — the alerting engine's failure state is reset; if the underlying problem persists the incident will re-fire.
list_notificationsAlerting delivery history — every notification attempt with channel, delivery status (sent/failed/silenced), severity, incident and monitor. Answers 'did the Slack alert actually go out?' and 'which deliveries are failing?'. Filter by status/channel_type/monitor_id/incident_id/time.
list_activityThe organization's audit trail — who changed what and when (monitors, alert rules, contacts, maintenance, channels; dashboard AND API actions). Great for correlating incidents with recent config changes. Filter by entity_type/entity_id or a time range.
list_maintenance_windowsList scheduled maintenance windows, most recent first.
create_maintenance_windowSchedule a maintenance window (write scope): alerts are suppressed and downtime excluded from uptime for the covered monitors during the window. Times are ISO 8601; duration in minutes.
delete_maintenance_windowCancel a maintenance window (write scope) — removes future occurrences and lifts any active silences. Use when a window was scheduled with a wrong time or is no longer needed.