Hookpulse MCP server
online · 100% uptimenet.hookpulse/hookpulse·v1.0.1Dead-man switch for cron and webhooks: ingest URL, miss detection, alerts and a status feed.
0 stars
Reviews
Write oneNobody has reviewed Hookpulse yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Hookpulse tools (24, 7 write)
write = sends, deletes, buys or postsapi_indexFreeFull index of the HookPulse API.
check_siteFreeCheck a site monitor now. One call every 10 seconds per destination host. One call every 10 seconds per destination host, for everyone: the button cannot hammer a site. The first state of a new site comes from here, without an alert — you are looking at it. After that, the state and the alerts come from the check that runs every minute.
contactwrite actionFreeWrite to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. One route for a question and for a sponsorship, partnership or ad proposal (`tipo`, with the placements of `GET /api/partners`). One message every 10 seconds per network: one that arrives sooner waits its turn and then goes out — no error. The message reaches the team by e-mail, with `email` as the reply address. For voice, send multipart/form-data: `dados` is this JSON (up to 32 KiB), and `audio` is one WebM, Ogg or M4A audio file (up to 2 MB). Audio can replace message. The browser records up to two minutes. Audio is attached to the owner's e-mail.
create_endpointwrite actionFreeCreate a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open run that exceeds its time limit. With `check` the monitor is a site: HookPulse calls `check.url` every `interval_sec` (default 300) and alerts when it goes down — two failed checks in a row, one minute apart, from a server whose own connection is proven — and when it answers again. `{"check":{"url":"https://example.com/"}}` is enough; the name defaults to the host. A site has no `cron`, no `max_duration_sec` and no ingest URL. This response is the only one that shows the monitor's `token` and the `templates` — keep them. A miss alerts at most once per 24h — or per `alert_repeat_sec`, or per interval, whichever is longer. Send `cron`+`tz`+`grace_sec` instead of `interval_sec` for a real schedule: a 03:00 backup is late at 03:01:30, not 24 hours later. `max_duration_sec` catches the other failure: a run that starts and hangs, which plain silence detection only notices at the next scheduled time.
create_guestwrite actionFreeCreates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail.
create_sitewrite actionFreeMonitor a website: HookPulse calls check.url every interval_sec (default 300) and alerts when it goes down and when it is back. With `check` the monitor is a site: HookPulse calls `check.url` every `interval_sec` (default 300) and alerts when it goes down — two failed checks in a row, one minute apart, from a server whose own connection is proven — and when it answers again. `{"check":{"url":"https://example.com/"}}` is enough; the name defaults to the host. A site has no `cron`, no `max_duration_sec` and no ingest URL. This response is the only one that shows the monitor's `token` and the `templates` — keep them. A miss alerts at most once per 24h — or per `alert_repeat_sec`, or per interval, whichever is longer. Send `cron`+`tz`+`grace_sec` instead of `interval_sec` for a real schedule: a 03:00 backup is late at 03:01:30, not 24 hours later. `max_duration_sec` catches the other failure: a run that starts and hangs, which plain silence detection only notices at the next scheduled time.
delete_endpointwrite actionFreeRemoves the owner's endpoint.
get_endpointFreeStatus of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handing over the owner's credential. With a schedule it is here that `next_expected_at` says when the next run is due.
healthFreeLiveness.
import_crontabFreeReads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the command are redacted. The body is the crontab itself, as `text/plain`. Without `?apply=1` **nothing is written**: you get the proposal — what would become a monitor, what was ignored and why, and what still fits in the free tier. With `apply=1` it is all or nothing, under the same rules as `POST /api/endpoints`. Comments, variables and `@reboot` are ignored (there is no way to know when to expect a reboot); `@daily` and friends become the equivalent expression. The command becomes the monitor name, with passwords and tokens redacted first — the name travels in the alert e-mail, in the public dashboard and in the badge.
ingest_keyFreeReturns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setup call per job. One key per owner. The key survives signing in: the crontab you deployed keeps working.
ingest_key_rotateFreeRotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the power to create new ones.
list_endpointsFreeLists the guest's/session's endpoints.
list_eventsFreeLatest ingest pings.
list_sitesFreeThe state of every site you monitor (up, down, waiting, paused), with the last check.
list_templatesFreeIngest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies that arrive at your `alert_url`. Slack and Discord receive only the field they read.
ping_ingestFreeSimulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret.
ping_slugwrite actionFreeCreate a monitor on its first check-in. The same slug uses the same monitor. A rejected creation writes no monitor or event. The slug becomes the monitor name and its identity: the same slug always means the same monitor, so a retry never creates a second one. Normalised to lowercase, `[a-z0-9-]`, 40 chars. Works by GET or POST.
signal_exit_codeFreeThe shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. `0` behaves exactly like a plain ping; 1 to 255 record the code and leave the failure for the cron.
signal_failFreeRecord a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hours. Failing is not proof of life either: the clock keeps running. The ingest never sends e-mail and never calls out — it records `alert_pending` and the cron turns it into an alert with `reason: "fail"` within 5 minutes, under the same one-per-24h cap. Works by GET or POST.
signal_slugwrite actionFreeSend start, fail or an exit code by name, with the ingest key; the first signal of a new name creates its monitor. The same signals as `/in/:id/start`, `/in/:id/fail` and `/in/:id/:exit_code`, for a fleet that only knows the ingest key: the job sends its name, not the monitor id. The first signal of a new name creates the monitor, with the same rules and the same `cron`, `tz` and `grace_sec` as the plain ping by name.
signal_startFreeSays the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is not proof of life: it does not move `last_event_at` and does not clear the miss counter, so a routine that starts and hangs still becomes a miss at the right time. The next success closes the run and records `last_duration_ms` — pass `?rid=` on both ends when runs can overlap, or the duration is measured against the wrong start. With `max_duration_sec` set on the monitor, a run left open past that ceiling alerts with `reason: "too_long"` on the next 5-minute check. Works by GET or POST.
status_feed_rotateFreeRotates the status feed token; the previous URL stops working.
status_feed_urlFreePublic URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the link sees the dashboard — treat it as a secret.
Public scan report
scanner v0.1.10 · 2026-10-16 · same rubric, same numbers if you re-run it
- –Code scanremote-only server, no package to scann/a
- Live reliabilityremote reachable in 1646ms20/20
- Tool poisoning24 tool descriptions checked15/15
- Auth qualityopen endpoint exposes 7 write-action tools with no auth3/15
- Maintenancelast push 2 days ago15/15
- Maintainer identityendpoint served from the registry-verified namespace domain8/10
Findings (1)
- highWrite-action tools reachable without authentication
auth.open-write
How Hookpulse compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 81/100
- higher than 62% of 48,243 servers
- Tools
- 24
- the typical server has 7
- Tools that change things
- 29%
- typical: 0%. Fewer write tools means less an agent can break
- Uptime
- 100%
- of our recent checks; the typical remote server answers 100%
- Response time
- 595 ms
- faster than 27% of 30,027 servers
What its tools let an agent do: 16 read · 4 create · 3 change · 1 delete
Release history: 2 versions in the registry since 2026-09-05, latest 2026-10-15, typically one every 40 days.
Install Hookpulse in Claude Code, Cursor or VS Code
claude mcp add --transport http hookpulse https://hookpulse.net/mcp
What the publisher says
From the Hookpulse repository's README, as published. We do not edit it. Read it on GitHub
HookPulse — skill and MCP server for AI agents
HookPulse tells you when a cron job, webhook, backup or scheduled GitHub Actions workflow stops running. Each routine gets a check-in link. If the check-in does not arrive by the expected time, or the routine reports a failure, HookPulse sends an alert by e-mail or to a webhook such as Slack or Discord, and it tells you when the routine comes back. This repository packages the HookPulse skill and the connection to its remote MCP server for Claude Code, Codex, Cursor and other agents.
Site: https://hookpulse.net · MCP server: https://hookpulse.net/mcp?checkout=site · Prices: https://hookpulse.net/pricing · API docs: https://hookpulse.net/developers
What your agent can do
- Create a monitor for a routine, with an interval or a cron schedule, a time zone and an allowed delay.
- Import a crontab: see the proposed monitors first, then create them in one call.
- Give each run a start, a success or a failure signal, with the shell exit code.
- Instrument a whole fleet with one setup key: the first check-in of each name creates its monitor.
- Read the state of every monitor, the latest check-ins and the public status page.
Try: "Import my crontab into HookPulse and show me what it would create." or "Create a monitor for the nightly backup that runs at 03:00 São Paulo time."
GitHub Actions
A scheduled workflow gets a monitor with one step and no secret. The job's identity token tells HookPulse which repository and workflow it is; the first run creates the monitor with the workflow's schedule:
permissions:
contents: read
id-token: write
jobs:
backup:
runs-on: ubuntu-latest
steps:
- run: ./backup.sh
- uses: wrpbr/hookpulse-action@v1
if: always()
with:
status: ${{ job.status }}See wrpbr/hookpulse-action for alerts and options. Without changing any workflow, install the HookPulse GitHub App: a missed or failed scheduled run opens an issue in the repository, and the next good run closes it.
Install
Claude Code, as a plugin with the skill and the MCP server:
/plugin marketplace add wrpbr/hookpulse
/plugin install hookpulse@hookpulseAny agent that reads Agent Skills (Claude Code, Codex, Cursor, OpenCode and others):
npx skills add wrpbr/hookpulseOnly the MCP server (remote, Streamable HTTP, no key needed to start):
claude mcp add --transport http hookpulse 'https://hookpulse.net/mcp?checkout=site' # Claude Code
codex mcp add hookpulse --url 'https://hookpulse.net/mcp?checkout=site' # Codex{ "mcpServers": { "hookpulse": { "url": "https://hookpulse.net/mcp?checkout=site" } } }The JSON above goes in .cursor/mcp.json for Cursor and in the MCP settings of most other clients. The GitHub Copilot coding agent takes it in the repository settings, under Copilot → MCP servers, with "type": "http" and the tools you allow.
Price
Ten monitors are free, and check-ins have no charge. E-mail alerts on one monitor are free; e-mail alerts on each additional monitor cost a one-time fee. Alerts to webhooks have no alert charge. You buy credit on the site, and nothing renews automatically. The plugin never pays: with checkout=site, the MCP server has no purchase tool and no payment argument. The current prices are at https://hookpulse.net/pricing.
What the plugin sends
The skill tells the agent to call the HookPulse API at hookpulse.net. The MCP server also runs at hookpulse.net. The names, schedules and alert destinations of your monitors go to hookpulse.net over HTTPS. The plugin runs no local program and reads no local file; the crontab import reads only the text you paste.
Em português
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Grade history
- 2026-10-16restoreC → Bscore 81: Write-action tools reachable without authentication
Hookpulse: common questions
- Is Hookpulse MCP server safe?
- Mostly: it is graded B (81/100). Read the Hookpulse safety report
- How do I install Hookpulse?
- It runs remotely at hookpulse.net. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does Hookpulse need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Hookpulse maintained?
- The last commit was 22 days ago (2026-10-15). The latest release is v1.0.1.
- Is Hookpulse up?
- 100% of our last 28 checks got an answer. We check remote servers about four times a day.
- What can I use instead of Hookpulse?
- Servers from other publishers that do the same job: Netdata MCP server.
- How does Hookpulse compare with other MCP servers?
- safety score 81/100 (higher than 62% of 48,243 servers); tools 24 (the typical server has 7); tools that change things 29% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Hookpulse
Same job from other publishers: the closest match first, then the best rated.
- NetdataReal-time infrastructure monitoring with metrics, logs, alerts, and ML-based anomaly detection.not reviewedWidely usedA