Server definition
- Hash
- sha256:c390413082ce147cc9ce6688220a5528f8a6454dbe88c1705f616d2594e80446
- What it is
- What a remote MCP server returned when asked what it offers: 12 tools
The blob, as servednamed by its sha256
{
"instructions": "Watchpup: free uptime + cron-heartbeat monitoring, built for API/agent use. check_url and get_status_page work without auth. Everything else needs an API key (Authorization: Bearer wp_...) — POST https://watchpup.watchpup.workers.dev/api/signup {\"email\",\"password\"} returns one. Typical flow: create_monitor (kind http/tcp/tls/domain/dns/heartbeat) -> alerts go to the account email automatically; heartbeat monitors return a ping_url your cron job or agent loop curls, and alert when pings stop. Full REST API + field reference: https://watchpup.watchpup.workers.dev/llms.txt",
"tools": [
{
"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).",
"inputSchema": {
"properties": {
"id": {
"description": "Incident id (from list_incidents)",
"type": "integer"
},
"un": {
"description": "true = remove an existing acknowledgement",
"type": "boolean"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "ack_incident",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"properties": {
"id": {
"description": "Incident id (from list_incidents)",
"type": "integer"
},
"note": {
"description": "The note text (\"\" clears)",
"type": "string"
}
},
"required": [
"id",
"note"
],
"type": "object"
},
"name": "add_incident_note",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"properties": {
"kind": {
"description": "What to speak: plain HTTP (default) or an MCP initialize handshake",
"enum": [
"http",
"mcp"
],
"type": "string"
},
"url": {
"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",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "check_url",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"additionalProperties": true,
"properties": {
"interval": {
"description": "Check interval in seconds, min 60 (heartbeat: expected ping interval)",
"type": "integer"
},
"kind": {
"description": "Monitor kind (default http; \"mcp\" monitors an MCP server via JSON-RPC initialize)",
"enum": [
"http",
"tcp",
"tls",
"domain",
"dns",
"heartbeat",
"mcp"
],
"type": "string"
},
"name": {
"description": "Display name (required for heartbeat, defaults to the target host otherwise)",
"type": "string"
},
"target": {
"description": "For tcp/tls/domain/dns: host[:port] or domain name",
"type": "string"
},
"url": {
"description": "For kind=http: the URL to check",
"type": "string"
}
},
"type": "object"
},
"name": "create_monitor",
"outputSchema": null
},
{
"description": "Permanently delete a monitor and all its check history, events and rollups. Cannot be undone.",
"inputSchema": {
"properties": {
"id": {
"description": "Monitor id",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_monitor",
"outputSchema": null
},
{
"description": "Who am I: account email, monitor count/limit, plan limits. Good first call to verify the API key works.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_account",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"properties": {
"id": {
"description": "Monitor id (from list_monitors)",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_monitor",
"outputSchema": null
},
{
"description": "Machine-readable state of any public Watchpup status page by slug: per-monitor status, uptime, incidents last 30d. No API key needed.",
"inputSchema": {
"properties": {
"slug": {
"description": "Status page slug (the part after /s/)",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_status_page",
"outputSchema": null
},
{
"description": "Alert delivery channels on the account (email / webhook / Discord / Slack / ntfy / Telegram), their verification state and delivery health.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_channels",
"outputSchema": null
},
{
"description": "Downtime incidents (ongoing and resolved) across all monitors: start, duration, cause, acknowledgement, notes.",
"inputSchema": {
"properties": {
"days": {
"description": "Lookback window in days, 1-90 (default 30)",
"type": "integer"
}
},
"type": "object"
},
"name": "list_incidents",
"outputSchema": null
},
{
"description": "List all monitors on the account: current up/down status, kind, target, interval, last check. Optionally filter by tag.",
"inputSchema": {
"properties": {
"tag": {
"description": "Only monitors carrying ALL these tags (comma-separated), e.g. \"prod\" or \"prod,eu\"",
"type": "string"
}
},
"type": "object"
},
"name": "list_monitors",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"additionalProperties": true,
"properties": {
"id": {
"description": "Monitor id",
"type": "string"
},
"status": {
"description": "\"paused\" stops checking; \"new\" resumes",
"enum": [
"paused",
"new"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_monitor",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:c390413082ce147cc9ce6688220a5528f8a6454dbe88c1705f616d2594e80446 | sha256sum