// monitoring your tools — and your agents — can drive

An API, a CLI,
and an agent that reads it.

Everything in the dashboard is a REST call. Keep your monitors in git and reconcile from CI. Trigger checks on deploy and post them to pull requests. Connect Claude Code or Cursor and ask in plain English. One org-scoped key does all of it.

clean REST API · single self-hostable binary · your data, your rules

rest api

The whole product, over HTTP.

Monitors, groups, incidents, on-call, policies, channels, status pages, maintenance windows — all of it behind a clean, predictable REST API with org-scoped Bearer keys and team roles.

  • Create, read, update monitors of every check type — including browser flows.
  • List and acknowledge incidents; read who's on call right now.
  • Org-scoped keys with role-based access — mint and revoke from the dashboard.
  curl
# list your monitors
curl -H "Authorization: Bearer $KEY" \
  https://uptime.ooo/api/v1/monitors

# create one
curl -X POST -H "Authorization: Bearer $KEY" \
  -d '{"name":"api","type":"http",
       "target":"https://api.acme.com/health"}' \
  https://uptime.ooo/api/v1/monitors
config-as-code

Your monitors, in git.

Export the account to a JSON file, commit it, and reconcile from CI. apply creates and updates monitors to match the file — matched by name, idempotent, and it never deletes. Review changes in a pull request like any other code.

  • export dumps every monitor to an apply-able file.
  • apply converges the account; --dry-run shows the plan first.
  • Monitors absent from the file are left untouched — no surprise deletions.
  monitors as code
monitor export -o monitors.json   # commit this

monitor apply -f monitors.json --dry-run
  create checkout-flow  (browser …)
  update api-health     (http …)
  plan: 1 to create, 1 to update, 3 untouched

monitor apply -f monitors.json   ✓ applied
deploy hooks & pr checks

Verify the deploy, on the deploy.

Trigger a check the instant CI ships instead of waiting for the interval — and post the result straight onto the pull request as a commit status. A single monitor or a whole suite.

  • Run now from CI: one POST queues an immediate check.
  • Add a GitHub repo + commit and it becomes a PR status — pending, then pass/fail.
  • Suite runs roll a monitor group up into one aggregated check.
  PR check
curl -X POST -H "Authorization: Bearer $KEY" \
  -d '{"github":{"repo":"you/app",
       "sha":"'$GITHUB_SHA'"}}' \
  https://uptime.ooo/api/v1/groups/<id>/run

 uptime.ooo / release suite  pending
 uptime.ooo / release suite  all 4 checks passed
mcp — for ai agents

Monitoring your agent can read.

Connect Claude Code, Cursor, or any MCP client and ask about your monitors in plain English. The agent can read status, incidents, and who's on call — and act reversibly: run a check, pause, resume, acknowledge, open a monitor. There are no delete tools.

  • Nine tools over the same REST key — one config block to connect.
  • Ships in the binary: monitor mcp over stdio, no service to run.
  • Read freely; every action is reversible by design.
  .mcp.json
{
  "mcpServers": {
    "uptime": {
      "command": "monitor",
      "args": ["mcp"],
      "env": { "UPTIME_API_KEY": "mk_…" }
    }
  }
}
# "which monitors are down, and who's on call?"

run it your way

Hosted, or the exact same binary on your own boxes.

single self-hostable binary

The whole control plane — API, dashboard, scheduler, workers — is one Go binary plus Postgres. Docker Compose up and you're running.

multi-region probes

Run probe agents in any region and alert only when a quorum agrees it's down. Bring your own boxes; mix providers for ASN independence.

SSRF-guarded by default

Probes can't be turned against your internal network or cloud metadata. Self-hosters watching a LAN can opt in explicitly.

your data, your rules

No third-party analytics on your monitoring data. Two-factor auth, argon2id, org-scoped keys, and team roles built in.

$ grab an API key

your monitors belong in version control.

$ start free

free plan · full API access · self-host anytime