Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,537Letters: 14Defects: 1,323counted 4 min ago
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:c390413082ce147cc9ce6688220a5528f8a6454dbe88c1705f616d2594e80446 | sha256sum