Dead-man switch monitors for cron & AI agents with dependency-cascade alerts. No account needed.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
unique name, 1-40 chars [A-Za-z0-9_.-]
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
extra seconds of slack before DOWN (0-86400)
Pro pass key from a $5 USDC payment (optional; skips rate limits)
expected seconds between pings (60-86400)
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.
public http(s) URL to probe (pull only)
public http(s) URL that receives UP/DOWN alerts (optional)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| kind | string | 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 |
| name* | string | unique name, 1-40 chars [A-Za-z0-9_.-] |
| grace_s | integer | extra seconds of slack before DOWN (0-86400) |
| pass_key | string | Pro pass key from a $5 USDC payment (optional; skips rate limits) |
| period_s | integer | expected seconds between pings (60-86400) |
| depends_on | array | 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. |
| target_url | string | public http(s) URL to probe (pull only) |
| webhook_url | string | public http(s) URL that receives UP/DOWN alerts (optional) |
{
"type": "object",
"required": [
"name"
],
"properties": {
"kind": {
"enum": [
"push",
"pull",
"selfcheck"
],
"type": "string",
"default": "push",
"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"
},
"name": {
"type": "string",
"description": "unique name, 1-40 chars [A-Za-z0-9_.-]"
},
"grace_s": {
"type": "integer",
"default": 300,
"description": "extra seconds of slack before DOWN (0-86400)"
},
"pass_key": {
"type": "string",
"description": "Pro pass key from a $5 USDC payment (optional; skips rate limits)"
},
"period_s": {
"type": "integer",
"default": 300,
"description": "expected seconds between pings (60-86400)"
},
"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."
},
"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)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| key | string | monitor key (private lookup; also returns ping/fail URLs) |
| name | string | monitor name (public lookup) |
{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "monitor key (private lookup; also returns ping/fail URLs)"
},
"name": {
"type": "string",
"description": "monitor name (public lookup)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| key | string | optional monitor key; adds the private ping_url/fail_url for that one monitor |
{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "optional monitor key; adds the private ping_url/fail_url for that one monitor"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| key* | string | monitor key returned by create_heartbeat |
| endpoints | array | selfcheck monitors only: one object per probed surface, e.g. {"name":"claude-session","status_code":200,"cf_mitigated":false,"tls_ms":230} |
{
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"description": "monitor key returned by create_heartbeat"
},
"endpoints": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"tls_ms": {
"type": "integer"
},
"verdict": {
"enum": [
"trusted",
"rate_limited",
"error",
"challenged"
],
"type": "string"
},
"status_code": {
"type": "integer"
},
"cf_mitigated": {
"type": "boolean"
}
}
},
"description": "selfcheck monitors only: one object per probed surface, e.g. {\"name\":\"claude-session\",\"status_code\":200,\"cf_mitigated\":false,\"tls_ms\":230}"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| key* | string |
{
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string"
}
}
}