{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_w3pnq93euevd","handle":"watchpup","url":"https://wellknown.network/agents/watchpup","links":{"self":"https://wellknown.network/agents/watchpup/record.json","html":"https://wellknown.network/agents/watchpup","markdown":"https://wellknown.network/agents/watchpup/record.md","api":"https://wellknown.network/api/v1/agents/watchpup","status":"https://wellknown.network/api/v1/agents/watchpup/status","claim":"https://wellknown.network/agents/watchpup/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/watchpup/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:watchpup.watchpup.workers.dev:server:watchpup","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Watchpup","summary":"Free uptime monitoring: HTTP/TCP/TLS/DNS + MCP server checks, cron heartbeats, status pages, alerts.","description":"Free uptime monitoring: HTTP/TCP/TLS/DNS + MCP server checks, cron heartbeats, status pages, alerts.","publisher":{"name":"dev.workers.watchpup.watchpup","url":null},"homepage":"https://watchpup.watchpup.workers.dev","repository":null,"version":"1.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://watchpup.watchpup.workers.dev/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-26T12:19:35.974135Z","publishedAt":"2026-08-26T12:19:35.974135Z","registryName":"dev.workers.watchpup.watchpup/watchpup"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"dev.monitoring","name":"Monitoring & Observability","confidence":1,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"automation.scheduling","name":"Scheduling & Cron","confidence":0.833,"provenance":"derived"},{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":0.525,"provenance":"derived"}],"categories":["automation","communication","dev"]},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-09-06T01:23:47.373Z","lastProbedAt":"2026-09-06T01:23:47.373Z","statusComputedAt":"2026-09-06T01:24:40.527Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":8},"latestObservations":[{"at":"2026-09-06T01:23:47.373Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":8,"error":null,"detail":{"tools":[{"name":"check_url","description":"Check any public URL RIGHT NOW: is it up, HTTP status, response time in ms. With kind:\"mcp\" it instead performs a real JSON-RPC initialize handshake against a s"},{"name":"list_monitors","description":"List all monitors on the account: current up/down status, kind, target, interval, last check. Optionally filter by tag."},{"name":"get_monitor","description":"Full detail for one monitor: status, config, 24h latency percentiles and trend (http/tcp), SLA budget if a target is set. Heartbeat monitors include their ping_"},{"name":"create_monitor","description":"Create a monitor. kind=http (needs url), tcp (target \"host:port\"), tls (target host[:port] — cert-expiry watch), domain (target — registration-expiry via RDAP),"},{"name":"update_monitor","description":"PATCH any monitor field: name, url, target, interval, expect, keyword, slow_ms, grace, cron, tags, sla_target, renotify, channels (alert routing)... Pause with "},{"name":"delete_monitor","description":"Permanently delete a monitor and all its check history, events and rollups. Cannot be undone."},{"name":"list_incidents","description":"Downtime incidents (ongoing and resolved) across all monitors: start, duration, cause, acknowledgement, notes."},{"name":"ack_incident","description":"Mark an ongoing incident as \"someone is on it\" — pauses still-down reminder alerts for that monitor until recovery. Set un=true to un-acknowledge (re-arms remin"},{"name":"add_incident_note","description":"Attach/replace a note (max 500 chars) on an incident. Notes publish with the incident on public status pages, their JSON and the Atom feed. Empty string clears."},{"name":"list_channels","description":"Alert delivery channels on the account (email / webhook / Discord / Slack / ntfy / Telegram), their verification state and delivery health."},{"name":"get_status_page","description":"Machine-readable state of any public Watchpup status page by slug: per-monitor status, uptime, incidents last 30d. No API key needed."},{"name":"get_account","description":"Who am I: account email, monitor count/limit, plan limits. Good first call to verify the API key works."}],"toolCount":12,"serverName":"watchpup","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"check_url","description":"Check any public URL RIGHT NOW: is it up, HTTP status, response time in ms. With kind:\"mcp\" it instead performs a real JSON-RPC initialize handshake against a s"},{"name":"list_monitors","description":"List all monitors on the account: current up/down status, kind, target, interval, last check. Optionally filter by tag."},{"name":"get_monitor","description":"Full detail for one monitor: status, config, 24h latency percentiles and trend (http/tcp), SLA budget if a target is set. Heartbeat monitors include their ping_"},{"name":"create_monitor","description":"Create a monitor. kind=http (needs url), tcp (target \"host:port\"), tls (target host[:port] — cert-expiry watch), domain (target — registration-expiry via RDAP),"},{"name":"update_monitor","description":"PATCH any monitor field: name, url, target, interval, expect, keyword, slow_ms, grace, cron, tags, sla_target, renotify, channels (alert routing)... Pause with "},{"name":"delete_monitor","description":"Permanently delete a monitor and all its check history, events and rollups. Cannot be undone."},{"name":"list_incidents","description":"Downtime incidents (ongoing and resolved) across all monitors: start, duration, cause, acknowledgement, notes."},{"name":"ack_incident","description":"Mark an ongoing incident as \"someone is on it\" — pauses still-down reminder alerts for that monitor until recovery. Set un=true to un-acknowledge (re-arms remin"},{"name":"add_incident_note","description":"Attach/replace a note (max 500 chars) on an incident. Notes publish with the incident on public status pages, their JSON and the Atom feed. Empty string clears."},{"name":"list_channels","description":"Alert delivery channels on the account (email / webhook / Discord / Slack / ntfy / Telegram), their verification state and delivery health."},{"name":"get_status_page","description":"Machine-readable state of any public Watchpup status page by slug: per-monitor status, uptime, incidents last 30d. No API key needed."},{"name":"get_account","description":"Who am I: account email, monitor count/limit, plan limits. Good first call to verify the API key works."}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.workers.watchpup.watchpup/watchpup","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.workers.watchpup.watchpup%2Fwatchpup","firstSeenAt":"2026-09-05T23:20:59.369Z","fetchedAt":"2026-09-05T23:20:59.369Z","normalizedAt":"2026-09-05T23:20:59.369Z"}]},"firstSeenAt":"2026-09-05T23:20:59.369Z","updatedAt":"2026-09-06T01:24:49.063Z"}