Hookpulse

net.hookpulse由 hookpulse.net 發布官方發布者v1.0.1更新於 Oct 24, 2026

Dead-man switch for cron and webhooks: ingest URL, miss detection, alerts and a status feed.

已驗證Streamable HTTP可網頁執行效率與工作流安全與監控

概覽

AI 產生的概覽

HookPulse 的遠端 MCP 伺服器,作為死信開關,在排程工作、Webhook、備份或排程工作流程未按時回報時發出告警。

可以做什麼
為各種例行工作建立與管理監控,支援 cron 或固定間隔、時區、寬限時間與最長執行時間,並可監控網站可用性、依主機限流手動檢查網站。把貼上的 crontab 先解析為建議方案,再一次套用建立監控。送出開始、成功、失敗或 shell 結束碼訊號,並用一個 ingest key 批次接入:某個名稱首次回報即自動建立監控。讀取監控狀態、最新回報事件,輪替 ingest key 或狀態訂閱權杖。發布公開的 JSON 與 RSS 狀態訂閱,查看告警範本,並聯絡產品團隊。
適用情境
當你希望助理為排程工作、備份、Webhook 或 GitHub Actions 工作流程建立或查看監控,並在例行工作漏報或失敗時透過電子郵件、Slack 或 Discord 收到告警時使用。也適合把現有 crontab 匯入為監控。
執行需求
遠端 Streamable HTTP 端點,啟動不需金鑰。需要 create_guest 回傳的訪客權杖才能保留對已建立監控的存取,除非已綁定電子郵件。需要連線至 hookpulse.net 的網路,監控名稱、排程與告警目的地會透過 HTTPS 傳送到該服務。
安裝前請注意
必須妥善保存訪客權杖,否則沒有電子郵件關聯就無法再存取這些監控。狀態訂閱連結任何持有者都能查看,應視為機密。ingest key 可建立監控,輪替後即失去該權限。刪除端點會將其移除。監控中繼資料會傳送到 hookpulse.net。十個監控免費;超過一個監控的電子郵件告警需一次性付費,但伺服器本身沒有購買工具。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Hookpulse,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/net.hookpulse%2Fhookpulse/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "hookpulse": {
      "type": "http",
      "url": "https://hookpulse.net/mcp"
    }
  }
}

README

HookPulse — skill and MCP server for AI agents

[HookPulse]

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:

yaml
permissions:  contents: read  id-token: writejobs:  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@hookpulse

Any agent that reads Agent Skills (Claude Code, Codex, Cursor, OpenCode and others):

bash
npx skills add wrpbr/hookpulse

Only the MCP server (remote, Streamable HTTP, no key needed to start):

bash
claude mcp add --transport http hookpulse 'https://hookpulse.net/mcp?checkout=site'   # Claude Codecodex mcp add hookpulse --url 'https://hookpulse.net/mcp?checkout=site'               # Codex
json
{ "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

O HookPulse avisa quando uma rotina agendada, um webhook, um backup ou um workflow agendado do GitHub Actions para de rodar. Cada rotina ganha um link de check-in; se ele não chega no horário, ou se a rotina avisa uma falha, o alerta sai por e-mail ou por webhook. Este repositório traz a skill e a conexão com o servidor MCP remoto. Instale com os comandos acima. Dez monitores são grátis. Os preços estão em https://hookpulse.net/pricing.

Files

FileWhat it is
skills/hookpulse/SKILL.mdThe skill: which tool answers which question, and the rules for alerts and limits
.mcp.jsonThe remote MCP server of the plugin
.claude-plugin/plugin.jsonThe plugin manifest
.claude-plugin/marketplace.jsonLets Claude Code add this repository as a plugin marketplace
server.jsonThe manifest in the official MCP registry (net.hookpulse/hookpulse)
glama.jsonThe maintainer for the Glama MCP directory

License and contact

The files in this repository are under the MIT-0 license. The HookPulse service is not part of this license: its use follows the terms of use and the privacy policy. For questions or problems, open an issue here or write to [email protected].

來源:README.md,提交 1dbdb27

工具

24

api_index

API index

Full index of the HookPulse API.

無需輸入參數。

health

Health

Liveness.

無需輸入參數。

create_guest

Create guest

Creates 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.

無需輸入參數。

list_endpoints

List endpoints

Lists the guest's/session's endpoints.

輸入參數guest_token必填

create_endpoint

Create endpoint

Create 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.

輸入參數tzcronname必填tagsalert_toalert_urlgrace_secguest_token必填interval_secpaused_untilalert_repeat_secmax_duration_sec

create_site

Create site

Monitor 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.

輸入參數nametagscheck必填alert_toalert_urlguest_token必填interval_secpaused_until

check_site

Check site

Check 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.

輸入參數id必填guest_token必填

list_sites

List sites

The state of every site you monitor (up, down, waiting, paused), with the last check.

輸入參數guest_token必填

import_crontab

Import crontab

Reads 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.

輸入參數applycrontab必填guest_token必填

get_endpoint

Get endpoint

Status 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.

輸入參數id必填tokenguest_token

delete_endpoint

Delete endpoint

Removes the owner's endpoint.

輸入參數id必填guest_token必填

list_events

List events

Latest ingest pings.

輸入參數id必填tokenguest_token

ping_ingest

Ping ingest

Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret.

輸入參數id必填

signal_start

Signal start

Says 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.

輸入參數id必填

signal_fail

Signal fail

Record 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.

輸入參數id必填

signal_exit_code

Signal exit code

The 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.

輸入參數id必填exit_code必填

ingest_key

Ingest key

Returns (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.

輸入參數guest_token

ingest_key_rotate

Ingest key rotate

Rotates 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.

輸入參數guest_token

ping_slug

Ping slug

Create 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.

輸入參數slug必填ingestKey必填

signal_slug

Signal slug

Send 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.

輸入參數slug必填signal必填ingestKey必填

status_feed_url

Status feed URL

Public 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.

輸入參數guest_token

status_feed_rotate

Status feed rotate

Rotates the status feed token; the previous URL stops working.

輸入參數guest_token

list_templates

List templates

Ingest 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.

無需輸入參數。

contact

Contact

Write 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.

輸入參數fusoname必填paissitetipoemail必填prazoespacoduracaoempresaformatomessage必填另有 6 個

版本歷史

2
  1. v1.0.1最新Oct 15, 2026
  2. v1.0.0Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分