Watchpup
Free uptime monitoring: HTTP/TCP/TLS/DNS + MCP server checks, cron heartbeats, status pages, alerts.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"watchpup": {
"url": "https://watchpup.watchpup.workers.dev/mcp"
}
}
}원격 엔드포인트
https://watchpup.watchpup.workers.dev/mcpstreamable-http할 수 있는 일
도구 목록
도구 (12)
🟢check_url(url, kind)
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.
입력 스키마
{
"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"
]
}🟢list_monitors(tag)
List all monitors on the account: current up/down status, kind, target, interval, last check. Optionally filter by tag.
입력 스키마
{
"type": "object",
"properties": {
"tag": {
"type": "string",
"description": "Only monitors carrying ALL these tags (comma-separated), e.g. \"prod\" or \"prod,eu\""
}
}
}🟢get_monitor(id)
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.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Monitor id (from list_monitors)"
}
},
"required": [
"id"
]
}🟡create_monitor(kind, url, target, name, interval)
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.
입력 스키마
{
"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
}🟡update_monitor(id, status)
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.
입력 스키마
{
"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
}🔴delete_monitor(id)
Permanently delete a monitor and all its check history, events and rollups. Cannot be undone.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Monitor id"
}
},
"required": [
"id"
]
}🟢list_incidents(days)
Downtime incidents (ongoing and resolved) across all monitors: start, duration, cause, acknowledgement, notes.
입력 스키마
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"description": "Lookback window in days, 1-90 (default 30)"
}
}
}🟡ack_incident(id, un)
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).
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Incident id (from list_incidents)"
},
"un": {
"type": "boolean",
"description": "true = remove an existing acknowledgement"
}
},
"required": [
"id"
]
}🟡add_incident_note(id, note)
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.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Incident id (from list_incidents)"
},
"note": {
"type": "string",
"description": "The note text (\"\" clears)"
}
},
"required": [
"id",
"note"
]
}🟢list_channels
Alert delivery channels on the account (email / webhook / Discord / Slack / ntfy / Telegram), their verification state and delivery health.
입력 스키마
{
"type": "object",
"properties": {}
}🟢get_status_page(slug)
Machine-readable state of any public Watchpup status page by slug: per-monitor status, uptime, incidents last 30d. No API key needed.
입력 스키마
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Status page slug (the part after /s/)"
}
},
"required": [
"slug"
]
}🟢get_account
Who am I: account email, monitor count/limit, plan limits. Good first call to verify the API key works.
입력 스키마
{
"type": "object",
"properties": {}
}커뮤니티
증거