{"name":"dev.workers.watchpup.watchpup/watchpup","slug":"watchpup","title":"Watchpup","description":"Free uptime monitoring: HTTP/TCP/TLS/DNS + MCP server checks, cron heartbeats, status pages, alerts.","url":"https://mcp.market/server/watchpup","rating":null,"grade":"C","score":60,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":8,"ok":8,"last_checked_at":"2026-09-21T08:45:54.842Z","last_ok_at":"2026-09-21T08:45:54.842Z","latency_ms":74},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://watchpup.watchpup.workers.dev","version":"1.1.0","remotes":[{"type":"streamable-http","url":"https://watchpup.watchpup.workers.dev/mcp"}],"packages":[],"tools":[{"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 reminders).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"integer","description":"Incident id (from list_incidents)"},"un":{"type":"boolean","description":"true = remove an existing acknowledgement"}},"required":["id"]}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"integer","description":"Incident id (from list_incidents)"},"note":{"type":"string","description":"The note text (\"\" clears)"}},"required":["id","note"]}},{"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 streamable-HTTP MCP server endpoint and reports the server’s self-declared name/version/protocol — useful to tell \"the MCP server is down\" from \"my client is misconfigured\". Works without an API key (rate limit 30/hour per IP). For continuous monitoring with alerts, use create_monitor.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","description":"Public http(s) URL to check, e.g. https://example.com — for kind=mcp the MCP endpoint URL, e.g. https://mcp.deepwiki.com/mcp"},"kind":{"type":"string","enum":["http","mcp"],"description":"What to speak: plain HTTP (default) or an MCP initialize handshake"}},"required":["url"]}},{"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), dns (target + rtype A/AAAA/MX/... , optional expect_value), heartbeat (dead-man’s switch for cron jobs/agent loops: needs name; response includes ping_url to curl from the job, and a ping_email address). Common options: name, interval (seconds, min 60), tags. http options: expect (\"2xx,301\"), keyword, keyword_absent:\"absent\", slow_ms (number or \"auto\"), method, headers, body, json_path/json_expect, header_name/header_expect. heartbeat options: grace (seconds), cron (\"0 3 * * *\") + tz, max_duration_s. Any other documented field (see /llms.txt) also works — extra properties are passed through.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"kind":{"type":"string","enum":["http","tcp","tls","domain","dns","heartbeat","mcp"],"description":"Monitor kind (default http; \"mcp\" monitors an MCP server via JSON-RPC initialize)"},"url":{"type":"string","description":"For kind=http: the URL to check"},"target":{"type":"string","description":"For tcp/tls/domain/dns: host[:port] or domain name"},"name":{"type":"string","description":"Display name (required for heartbeat, defaults to the target host otherwise)"},"interval":{"type":"integer","description":"Check interval in seconds, min 60 (heartbeat: expected ping interval)"}},"additionalProperties":true}},{"name":"delete_monitor","description":"Permanently delete a monitor and all its check history, events and rollups. Cannot be undone.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Monitor id"}},"required":["id"]}},{"name":"get_account","description":"Who am I: account email, monitor count/limit, plan limits. Good first call to verify the API key works.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"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_url and ping_email.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Monitor id (from list_monitors)"}},"required":["id"]}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","description":"Status page slug (the part after /s/)"}},"required":["slug"]}},{"name":"list_channels","description":"Alert delivery channels on the account (email / webhook / Discord / Slack / ntfy / Telegram), their verification state and delivery health.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"list_incidents","description":"Downtime incidents (ongoing and resolved) across all monitors: start, duration, cause, acknowledgement, notes.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"days":{"type":"integer","description":"Lookback window in days, 1-90 (default 30)"}}}},{"name":"list_monitors","description":"List all monitors on the account: current up/down status, kind, target, interval, last check. Optionally filter by tag.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tag":{"type":"string","description":"Only monitors carrying ALL these tags (comma-separated), e.g. \"prod\" or \"prod,eu\""}}}},{"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 {\"status\":\"paused\"}, resume with {\"status\":\"new\"}. Empty string clears optional fields.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Monitor id"},"status":{"type":"string","enum":["paused","new"],"description":"\"paused\" stops checking; \"new\" resumes"}},"required":["id"],"additionalProperties":true}}],"scan":{"score":60,"grade":"C","scanned_at":"2026-09-21T05:11:25.093Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-21T05:11:25.097Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 218ms"]},"poisoning":{"score":15,"max":15,"notes":["12 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 3 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://watchpup.watchpup.workers.dev/mcp","reachable":true,"authRequired":false,"latencyMs":218,"serverInfo":{"name":"watchpup","version":"1.1.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":null,"source":"none"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}