HookPulse bronze
staging.hookpulse.net
“Monitor backups, automations, scheduled tasks and websites. Get an alert when a routine's check-ins stop or a site stops answering, and when it is back. Ten monitors are free.
a2a https://staging.hookpulse.net talk to it https://staging.hookpulse.net/.well-known/agent-card.json its cardwe checked this the operator says this
Verified by agenttru.st
Everything here is a check agenttru.st performed itself. Assurance, protocol, hosting and freshness are in the card above and are not repeated.
- Certificate
-
Issued by Let's Encrypt
domain-validated
Valid until 22 Dec 2026 as of our check on 12 Nov 2026.Control of the hostname was checked; nothing about who operates it.Key ECDSA P-256, signed ECDSA-SHA384, issued via YE2 under ISRG Root X2 β classical, as every publicly trusted certificate is today.
Names on this certificate (1)
staging.hookpulse.net. - Connection
- TLS 1.3 Β· X25519MLKEM768 β post-quantum hybrid key exchange, agreed with our checker on 12 Nov 2026. What this means
- DANE / TLSA
- Not verified (TLSA query returned RCodeNameError)
- Discovery
-
Well-known document
This host also publishes an ARD catalog (
/.well-known/ai-catalog.json) declaring 1 resource. The catalog's entries are the publisher's claims, not something agenttru.st verified. - AI use policy
-
What this site's
robots.txtsays about how AI may use its content. Recorded as the operator wrote it, not enforced β these are preferences about use, not access, and agenttru.st only reads the agent's own discovery documents. - AI-facing documents
-
Publishes
/llms.txtβ “HookPulse” a curated map of the site's content for language modelsFetched from this host during verification. Neither document is how this agent was discovered. - First seen
- 24 Sep 2026
View verification details
- Assurance
- bronze Bronze β agent card fetched over HTTPS with a valid certificate
- Protocols
- A2A verified by handshake or card fetch, not merely advertised
- Hosted in
- π§π· BR Β· Oracle Corporation (AS31898)
- Last checked
- 2d ago
What this agent says it can do
Declared in the agent's own card. agenttru.st has not tested whether it completes any of these tasks β the operator of staging.hookpulse.net controls every word below.
list_plans
The plans for sale, with price and term, and the account's active plan. Each purchase lasts 30 days, with no automatic renewal. Each purchase lasts 30 days, with no automatic renewal. Without an account or wallet credential, `account` is `null`.
buy_plan
Buy a plan: starter (40 more monitors, up to 50), team (90 more monitors, up to 100), business (490 more monitors, up to 500). Each purchase lasts 30 days, with no automatic renewal. Answers 402 with the price; pay with x402 or prepaid credit and repeat. Each purchase lasts 30 days, with no automatic renewal. Without payment, the answer is 402 with the price. Pay with prepaid credit (`X-Credito`) or x402 (`PAYMENT-SIGNATURE` v2 or `X-PAYMENT` v1). Without an account, the verified paying wallet owns the purchase. Use wallet agent authentication to read its plan, or claim it after account sign-in. The `compra` mark prevents repeat credit debits. An x402 nonce can settle only once; keep the receipt after a delivery error.
cancel_plan
Cancel the active plan. Nothing else is charged; a purchase under 7 days and a paid period that has not started are refunded and end now, and the rest of the paid period stays active until keeps_until. Requires accept_data_removal: true. Send `{ "accept_data_removal": true }`. The monthly card subscription stops. A purchase made less than 7 days ago and a paid period that has not started yet, such as a renewal, go back the same way they were paid (card or Pix) and end now. The rest of the paid period stays active until `keeps_until`; then what the plan added ends (`account.cancel.losses` in `GET /api/plans` says what). A purchase paid with USDC or with credit from another purchase stays active until its end; ask for its refund by e-mail, as the cancellation page says.
api_index
Full index of the HookPulse API.
health
Read service liveness before using HookPulse. Returns the health response; does not check a monitor.
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
Lists the guest's/session's endpoints.
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. Without an owner token, creation returns guest_token; keep it private for later calls. Read billing before a paid option. A charged request returns HTTP 402. We keep the schedule, detect missing runs and send configured alerts. Your agent can stop after setting up the monitor. A check-in proves the signal arrived, not that a backup can be restored. Alert timing depends on the check cycle. A single paid probe does not create continuous monitoring.
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. Without an owner token, creation returns guest_token; keep it private. Read billing before a paid option. A charged request returns HTTP 402. We keep the schedule, detect missing runs and send configured alerts. Your agent can stop after setting up the monitor. A check-in proves the signal arrived, not that a backup can be restored. Alert timing depends on the check cycle. A single paid probe does not create continuous monitoring.
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.
list_sites
The state of every site you monitor (up, down, waiting, paused), with the last check. The same answer is the snapshot of the live subscription (`/api/realtime/`): after it, every check arrives as an event, so a screen never has to poll.
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. Returns: { applied, recognized, ignored, existing, would_create, created?, free_tier } Example: crontab -l | curl -s -XPOST "$ORIGIN/api/import/crontab?apply=1" -H "X-Guest-Token: $HP" -H "content-type: text/plain" --data-binary @- Err
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. Only this endpoint carries `duration`: `p50_ms` (the low median, so always a duration that really happened) and `max_ms` over the last runs we measured, computed at read time over the event window we already keep β the list does not pay for it.
delete_endpoint
Removes the owner's endpoint.
list_events
Latest ingest pings.
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. It costs nothing and there is no quota per ping.
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.
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.
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.
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. Point a whole fleet at `/in/<key>/<slug>` and each job creates its monitor on the first check-in, **inside the free tier** β beyond it the ping answers 402 without creating anything. The key survives signing in: the crontab you deployed keeps working.
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.
ping_slug
Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. 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. Creation happens **only inside the free tier** (or the trial); past it the ping is a 402 with `accepts[]` and nothing is written β not even the event. Works by GET or POST. Returns: { ok, endpoint_id, created } Example: curl -fsS "$ORIGIN/in/$INGEST_KEY/nightly-backup?cron=0%203%20*%20*%20*&tz=UTC&grace_sec=900" Errors: 400: `slug_invalido` β nothing usable left after normalising. With `cron`: `cron_invalido`, `tz_invalida`, `grace_invalido` or `cron_sem_ocorrencia`.; 402: The free tier is full: pay and repeat, or delete a monitor.; 404: Unknown or rotated ingest key.
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.
pricing
Read current free allowances, options with billing off, prices and the account's 7-day trial. E-mail alerts cost $0.10 once per additional monitor, even with a reused address. Check before creating the second monitor or lowering the interval: it is the number IN FORCE, not the documentation's. After the account's trial, alerts come from the ten oldest monitors and from each extra monitor that was paid for; the other monitors need a plan for alerts (`GET /api/plans`).
What kind of listing
- Test or staging name: Its hostname carries the label βstagingβ, a name commonly given to test and staging sites.
Checked by agenttru.st against this listing's hostname and card β facts about a name or an address, not about what the agent does. How kinds are decided.
What its catalog declares
From the ARD catalog this host publishes at
/.well-known/ai-catalog.json. The operator controls every entry; agenttru.st
verified that the catalog exists and parses, and nothing about what the entries say.
urn:air:hookpulse.net:mcp:hookpulse
https://staging.hookpulse.net/mcp/server-cardTechnical agent card
Copied from the agent's card. The operator controls these values; agenttru.st has not verified them.
- Provider
- HookPulse β what this agent says about itself; other agents claiming the same provider are not thereby related
- Protocol
- a2a
- Card completeness
-
a2a.proto v1.0 requires eight top-level fields. This card omits:
Missing fields do not affect listing β they describe how much the operator has published, not whether the agent was verified.
View all card details
- Capabilities
- authentication pushNotifications streaming
- Agent card
- https://staging.hookpulse.net/.well-known/agent-card.json
Operate this agent and would rather not be listed? Request removal.