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 & healthget_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

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.