Releases outpace monitors created by hand
Services, endpoints, and jobs go live every week. Follow one deploy through Perstat, from the pipeline to the availability record.
Skip the storyEvery release adds something to watch
order-api 2.16.0 adds a payments webhook. Of the last 8 deploys, 3 shipped an endpoint, a job, or a service without a monitor, because creating one was a separate task.
09-10 11:47search-indexer 1.9.3worker poolmonitored09-09 09:15auth-service 3.1.1token rotationmonitored09-08 10:05mail-relay 1.4.2patchmonitored09-05 15:30order-api 2.15.4patchmonitored09-05 08:12status-sync 0.3.0cron jobmonitored
3 of 8 deploys added something without a monitor
Put the monitor into the deploy
One step after the release job is enough. It calls the MCP endpoint with an organization API key. It fails the job on any error, unless the monitor already exists.
# after the release job: register the monitor- name: Register monitor run: | result=$(curl -sS --fail-with-body https://api.perstat.io/mcp \ -H "Authorization: Bearer $PERSTAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{ "name":"create_monitor","arguments":{"project_id":"prj_…", "name":"Order API","type":"http", "config":{"url":"https://orders.example.com/health"}}}}') echo "$result" | jq -e '.result.isError == false or (.result.content[0].text | contains("already runs exactly this check"))'One monitor, however often you deploy
The result returns the new monitor. The next run is refused as an exact repeat, and the step still passes. If the health path changes, update_monitor edits the existing monitor instead of adding a second one.
{ "created": true, "monitor": { "id": "mon_…", "archived": false, "name": "Order API", "type": "http", "project_id": "prj_…", "enabled": true, "interval_seconds": 300, "regions": ["na", "eu", "as", "sa", "af", "oce"], "status": "unknown", "severity": null }}`Order API` (mon_…) already runs exactly this check in this project: same type, identical config, every 300 s from 6 region(s).
Six regions start checking
Probe nodes on 6 continents run the check at its interval. Perstat stores every result with the region that measured it.

naNorth AmericasaSouth AmericaeuEuropeafAfricaasAsiaoceOceania
Two regions confirm the outage
A failure in one region is a quiet notice, not a page. When a second region reports a failure too, the default quorum confirms the outage and opens exactly one incident.
naewrNewarkOKFailedsagruSão PauloOKeufraFrankfurtOKafjnbJohannesburgOKassgpSingaporeOKFailedocesydSydneyOK
na (Newark) reports a failure: a quiet notice, nobody is paged yet.
as (Singapore) reports a failure too: quorum reached, incident opened at 02:41:12 UTC.
Alerts escalate until someone acknowledges
Perstat alerts iPhone and Apple Watch, and Slack, Teams, or PagerDuty through connectors. On-call escalation moves on to SMS and a phone call until someone acknowledges.
On-call escalation: Sentinel and above
On-call escalation until someone acknowledges- PushNative notification on iPhone and Apple Watch.
- SMSA timed stage of on-call escalation.
- Phone callThe last stage of on-call escalation, on any phone.
- AcknowledgedOwnership is visible, and the remaining devices go quiet.
Also through connectors- Slack
- Microsoft Teams
- Discord
- Google Chat
- PagerDuty
- Opsgenie
- Webhook
Personal SMS alerts without a rotation: Pulse and above
acknowledge_incidentOr from the terminal: your agent calls acknowledge_incident over MCP, attributed to the owner of the key.Customers see it on the status page
The incident opened by the quorum appears on the linked status page with its current phase, and the component switches to Down. Nobody has to copy it over by hand.
- Order APIDown
- StorefrontOperational
- SearchOperational
AcknowledgedOrder API02:41:12 UTCThe incident goes into the availability record
When the regions report recovery, the incident closes with its confirmed start, end, and duration. Announced maintenance is excluded for its window. Perstat calculates availability from the same record.
Order APIQ2 20262026-05-03 02:41:12Incident, confirmed by quorum00:07:122026-05-17 22:00:00Maintenance, announced and excluded01:30:00
- Availability, gross
- 99.925%
- After excluding announced maintenance
- 99.994%
Export: PDF report per monitor for 7 to 90 days. CSV with manifest on request.
Your customers see the state before they ask
Your status page on your own domain shows the state, like this scheduled database upgrade. The page and the badge on your site read from the record behind the availability figure.
Own domain: Sentinel and above

<img src="https://status.example.com/badge.svg" alt="Service status">The same badge on your site, served under your domain. It shows what the page shows.
