# Watchpup (remote · watchpup.watchpup.workers.dev)

Free uptime monitoring: HTTP/TCP/TLS/DNS checks, cron heartbeats, status pages, incident tools.

- Trust score: 59/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-08

## Components

- remote · `watchpup.watchpup.workers.dev`: 59/100 (this document), [markdown](https://verifymcp.io/servers/dev-workers-watchpup-watchpup-watchpup/watchpup.md), [page](https://verifymcp.io/servers/dev-workers-watchpup-watchpup-watchpup/watchpup)

## Channel facts

- Endpoint: `https://watchpup.watchpup.workers.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-08.

- **Endpoint Security**: 51/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_monitor).
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 1084 tokens (~90/item across 12 items; 12 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add --transport http dev-workers-watchpup-watchpup-watchpup https://watchpup.watchpup.workers.dev/mcp
```

### Codex

```toml
[mcp_servers.dev-workers-watchpup-watchpup-watchpup]
url = "https://watchpup.watchpup.workers.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-workers-watchpup-watchpup-watchpup": {
      "type": "remote",
      "url": "https://watchpup.watchpup.workers.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add dev-workers-watchpup-watchpup-watchpup --url https://watchpup.watchpup.workers.dev/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  dev-workers-watchpup-watchpup-watchpup:
    url: "https://watchpup.watchpup.workers.dev/mcp"
```

### Other

```json
{
  "mcpServers": {
    "dev-workers-watchpup-watchpup-watchpup": {
      "type": "http",
      "url": "https://watchpup.watchpup.workers.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-08 (score 59)

First indexed and scored.

## MCP tools (12)

### `check_url` (~73 tokens)

Instant URL check (no account needed)

Check any public URL RIGHT NOW: is it up, HTTP status, response time in ms. Works without an API key (rate limit 10/hour per IP). For continuous monitoring with alerts, use create_monitor.

Input parameters:

- `url` (string, required): Public http(s) URL to check, e.g. https://example.com

### `list_monitors` (~64 tokens)

List monitors

List all monitors on the account: current up/down status, kind, target, interval, last check. Optionally filter by tag.

Input parameters:

- `tag` (string): Only monitors carrying ALL these tags (comma-separated), e.g. "prod" or "prod,eu"

### `get_monitor` (~64 tokens)

Get one monitor

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.

Input parameters:

- `id` (string, required): Monitor id (from list_monitors)

### `create_monitor` (~290 tokens)

Create a monitor

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.

Input parameters:

- `interval` (integer): Check interval in seconds, min 60 (heartbeat: expected ping interval)
- `kind` (string): Monitor kind (default http)
- `name` (string): Display name (required for heartbeat, defaults to the target host otherwise)
- `target` (string): For tcp/tls/domain/dns: host[:port] or domain name
- `url` (string): For kind=http: the URL to check

### `update_monitor` (~92 tokens)

Update / pause / resume a monitor

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.

Input parameters:

- `id` (string, required): Monitor id
- `status` (string): "paused" stops checking; "new" resumes

### `delete_monitor` (~37 tokens)

Delete a monitor

Permanently delete a monitor and all its check history, events and rollups. Cannot be undone.

Input parameters:

- `id` (string, required): Monitor id

### `list_incidents` (~53 tokens)

List incidents

Downtime incidents (ongoing and resolved) across all monitors: start, duration, cause, acknowledgement, notes.

Input parameters:

- `days` (integer): Lookback window in days, 1-90 (default 30)

### `ack_incident` (~74 tokens)

Acknowledge an incident

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).

Input parameters:

- `id` (integer, required): Incident id (from list_incidents)
- `un` (boolean): true = remove an existing acknowledgement

### `add_incident_note` (~73 tokens)

Add a postmortem note to an incident

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.

Input parameters:

- `id` (integer, required): Incident id (from list_incidents)
- `note` (string, required): The note text ("" clears)

### `list_channels` (~35 tokens)

List alert channels

Alert delivery channels on the account (email / webhook / Discord / Slack / ntfy / Telegram), their verification state and delivery health.

### `get_status_page` (~56 tokens)

Read a public status page

Machine-readable state of any public Watchpup status page by slug: per-monitor status, uptime, incidents last 30d. No API key needed.

Input parameters:

- `slug` (string, required): Status page slug (the part after /s/)

### `get_account` (~33 tokens)

Account overview

Who am I: account email, monitor count/limit, plan limits. Good first call to verify the API key works.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/dev-workers-watchpup-watchpup-watchpup/watchpup#diagnostics

## Score history

- 2026-08-08: 59

## Links

- Remote endpoint: https://watchpup.watchpup.workers.dev/mcp
- Website: https://watchpup.watchpup.workers.dev/
- Changelog RSS feed: https://verifymcp.io/servers/dev-workers-watchpup-watchpup-watchpup/watchpup.xml
- Changelog JSON feed: https://verifymcp.io/servers/dev-workers-watchpup-watchpup-watchpup/watchpup.json
- HTML version of this page: https://verifymcp.io/servers/dev-workers-watchpup-watchpup-watchpup/watchpup
