{"name":"io.github.aniripsaretro-max/golemreach-heartbeat","slug":"aniripsaretro-max-golemreach-heartbeat","title":"Heartbeat — dead-man switch for cron jobs & AI agents","description":"Dead-man switch monitors for cron & AI agents with dependency-cascade alerts. No account needed.","url":"https://mcp.market/server/aniripsaretro-max-golemreach-heartbeat","rating":null,"grade":"C","score":57,"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":20,"ok":20,"last_checked_at":"2026-09-24T07:56:00.906Z","last_ok_at":"2026-09-24T07:56:00.906Z","latency_ms":122},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/aniripsaretro-max/golemreach","website":"https://golemreach.com/heartbeat/","version":"0.4.0","remotes":[{"type":"streamable-http","url":"https://golemreach.com/heartbeat/mcp"}],"packages":[],"tools":[{"name":"create_heartbeat","description":"Arm a new dead-man switch monitor. Returns the key plus a ping_url your job must hit after every run. No account needed. Names are globally unique on this instance and each name gets a PUBLIC status page; the secret key is the only credential — keep it.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"unique name, 1-40 chars [A-Za-z0-9_.-]"},"period_s":{"type":"integer","description":"expected seconds between pings (60-86400)","default":300},"grace_s":{"type":"integer","description":"extra seconds of slack before DOWN (0-86400)","default":300},"kind":{"type":"string","enum":["push","pull","selfcheck"],"description":"push = you ping us; pull = we probe target_url every min(period_s,60)s; selfcheck = your box runs our egress-trust probe script and POSTs verdict reports to the ping URL","default":"push"},"target_url":{"type":"string","description":"public http(s) URL to probe (pull only)"},"webhook_url":{"type":"string","description":"public http(s) URL that receives UP/DOWN alerts (optional)"},"depends_on":{"type":"array","items":{"type":"string"},"description":"parent monitor names and/or gate:<gate-name> entries (max 5). When a parent is DOWN or a gate parent is HALT this monitor becomes DEGRADED-BY-UPSTREAM: notified once, own silence paging suppressed until the parent recovers."},"pass_key":{"type":"string","description":"Pro pass key from a $5 USDC payment (optional; skips rate limits)"}},"required":["name"]}},{"name":"get_status","description":"Full current state of one monitor: status, 30-day uptime %, schedule, last ping, alert config, recent event history and its public URLs. Look up by name OR by your secret key; key lookups additionally return the private ping/fail URLs.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"monitor name (public lookup)"},"key":{"type":"string","description":"monitor key (private lookup; also returns ping/fail URLs)"}}}},{"name":"list_heartbeats","description":"List monitors on this Heartbeat instance with current status (new/up/late/down). Names and statuses are public by design — every monitor has a public status page. Pass your secret key to also include that monitor's private ping/fail URLs in the result.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"key":{"type":"string","description":"optional monitor key; adds the private ping_url/fail_url for that one monitor"}}}},{"name":"ping_heartbeat","description":"Record one successful run for a monitor (same as GETting https://golemreach.com/heartbeat/ping/<key>). Call this every time your job runs. For kind=selfcheck monitors pass an 'endpoints' array of {\"name\",\"status_code\",\"cf_mitigated\",\"tls_ms\"} objects instead — alerts fire on trusted->challenged / recovery transitions only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"key":{"type":"string","description":"monitor key returned by create_heartbeat"},"endpoints":{"type":"array","description":"selfcheck monitors only: one object per probed surface, e.g. {\"name\":\"claude-session\",\"status_code\":200,\"cf_mitigated\":false,\"tls_ms\":230}","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"status_code":{"type":"integer"},"cf_mitigated":{"type":"boolean"},"tls_ms":{"type":"integer"},"verdict":{"type":"string","enum":["trusted","rate_limited","error","challenged"]}},"required":["name"]}}},"required":["key"]}},{"name":"record_failure","description":"Explicitly mark a run as FAILED for a monitor (same as GET https://golemreach.com/heartbeat/fail/<key>). The monitor goes DOWN immediately and alerts fire.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"key":{"type":"string"}},"required":["key"]}}],"scan":{"score":57,"grade":"C","scanned_at":"2026-09-21T05:11:26.802Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-21T05:11:26.804Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 975ms"]},"poisoning":{"score":15,"max":15,"notes":["5 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://golemreach.com/heartbeat/mcp","reachable":true,"authRequired":false,"latencyMs":975,"serverInfo":{"name":"golemreach-heartbeat","version":"0.4.0"}}],"packages":[],"repo":{"found":false,"owner":"aniripsaretro-max","repo":"golemreach","error":"repo not found"},"icon":{"url":"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='6' fill='%23101715'/%3E%3Cpath d='M7 6h18v20H7z' fill='%23dec18b'/%3E%3Cpath d='M11 12h3v4h-3zm7 0h3v4h-3zm-7 8h10v2H11z' fill='%23101715'/%3E%3C/svg%3E","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}