UptimeRobot Management
Operate UptimeRobot from evidence, keep credentials out of output, and make every mutation deliberate and reviewable.
Choose the interface
- Prefer the official UptimeRobot CLI for routine monitor, incident, group, maintenance-window, alert-contact, integration, tag, and status-page work. It provides schemas, redaction, structured output, dry runs, and delete confirmations.
- Prefer the official remote MCP server at
https://mcp.uptimerobot.com/mcp when an MCP-capable client is already connected. Use OAuth when practical; use an API key only when OAuth is unavailable.
- Use
scripts/manage_uptimerobot.py for credential-safe context checks, current OpenAPI operation discovery, repeatable request previews, constrained API escape hatches, or bounded cursor pagination.
- Use the dashboard for visual confirmation, OAuth setup, policy/account settings not exposed by the other interfaces, and final human review. Do not infer hidden state from a screenshot.
Read references/command-guide.md for exact commands and references/api-reference.md for API, authentication, pagination, rate-limit, and redaction details.
Establish context
- Identify the intended account, monitor or resource IDs, environment, and time range. Do not assume similarly named monitors are interchangeable.
- Run
python scripts/manage_uptimerobot.py context. Report credential presence and source names only, never values.
- For read-only work, prefer
UPTIMEROBOT_READ_ONLY_API_KEY. Fall back to UPTIMEROBOT_API_KEY only when necessary.
- For mutations, require the main account key in
UPTIMEROBOT_API_KEY or an OAuth-authorized MCP session. A monitor-specific or read-only key is insufficient.
- Keep both configured helper credentials exclusive to the generated
Authorization header. Credential values must contain at least eight characters. Reject either active value at semantic boundaries in request paths, queries, or bodies even when percent-encoded, form-encoded, or repeatedly encoded.
- Confirm whether the user asked for inspection, a proposed change, or execution. Inspection never implies mutation.
Inspect before changing
- Capture the target resource and its current state with normalized JSON.
- Correlate monitor status with incidents, response-time or uptime statistics, maintenance windows, alert contacts, integrations, and status-page visibility as relevant.
- Distinguish an active outage from a paused monitor, scheduled maintenance, notification delivery failure, stale status-page data, or a monitor configuration defect.
- Record IDs, status, timestamps, affected destinations, filters, pagination bounds, and source interface. Redact credential-like monitor fields, heartbeat
url/pingUrl capability URLs, webhook destinations, integration capability values, cookies, passphrases/private keys, configured POST values, and nested request/response headers. Preserve ordinary monitor URLs and non-secret values.
- If a result is paginated, follow only validated same-origin cursors that retain the exact normalized collection endpoint path, preserve repeated filter pairs, reject malformed or repeated links, and state the page and byte caps used.
Apply safe mutations
- Restate the exact resource, requested end state, user-visible impact, and rollback or compensating action.
- Preview first. Use CLI
--dry-run where supported, omit helper --send, or present the MCP tool arguments before invoking a mutating tool.
- Obtain explicit authorization for the specific mutation when the current request does not already authorize it. Treat delete, bulk pause/start/update, incident publication, integration changes, status-page publication, and credential-bearing monitor edits as high impact. The helper additionally requires its reported exact
--confirm value for deletes and bulk monitor operations; that value binds the operation ID when available, method, normalized path, encoded query, and canonical JSON body digest.
- Execute once. Do not automatically retry a mutation after a timeout, transport loss, transient server failure, or response-consumption failure. Treat write-side HTTP
500, 502, 503, and 504, transport loss, and any post-attempt response read/size/UTF-8/strict-JSON failure as indeterminate: the mutation may have succeeded, so re-read the exact target before any manual retry. Treat a successfully consumed definitive 4xx, including 429, as definitive.
- Re-read the resource and adjacent state. Verify the intended fields, monitor runtime status, incident/status-page effect, and notification routing rather than trusting only the write response.
- Report the before/after state, interface used, verification evidence, and any unresolved warnings.
Triage common requests
Monitor outage or flapping
Inspect the monitor, current and recent incidents, activity/alerts, response-time and uptime statistics, maintenance overlap, and relevant integrations. Do not reset statistics or pause the monitor merely to clear a noisy dashboard.
Monitor creation or update
Use uptimerobot monitors schema <type> before authoring a request. Confirm URL/host, interval, timeout, regions, HTTP method, expected status, keyword/JSON checks, authentication, SSL behavior, alert contacts, group, and tags. Keep secrets in supported secret inputs or environment variables and verify with a follow-up get while retaining default redaction.
Integrations and alert contacts
Inventory both resources and map which monitors or account policies use them. Test or replace routing deliberately; deleting an integration or contact can silently reduce outage notification coverage.
Maintenance windows
Check timezone, recurrence, scope, start/end, and overlap. Verify affected monitors after creation or update. Do not use maintenance windows as a permanent suppression mechanism.
Public status pages and incidents
Separate internal monitor state from public communication. Review page monitors, visibility, custom domain, subscriber behavior, active incidents, announcements, and pinned content. Publishing or resolving a public incident is an external communication and requires explicit intent.
Bulk operations
Resolve the exact group/tag filters and enumerate the projected monitor set before a bulk pause, start, or update. Set an explicit safety bound and verify every per-monitor result.
MCP rules
- Configure
https://mcp.uptimerobot.com/mcp as a streamable HTTP server and prefer OAuth authorization.
- Treat MCP and API/CLI calls as sharing the account quota.
- Keep a read-only API key read-only; do not replace it with the main key merely to make a mutation succeed.
- OAuth client revocation may require UptimeRobot support. Disconnecting a client locally or rotating an API key does not necessarily revoke an OAuth grant.
- Apply the same preview, authorization, single-write, and post-write verification rules to MCP tools.
Output contract
Return:
- account/resource scope and interface used;
- findings with IDs, status, timestamps, and filters;
- redacted preview for proposed mutations;
- execution and post-write verification evidence when authorized;
- pagination/rate-limit bounds and any incomplete coverage;
- risks, rollback guidance, and next actions.
Never print API keys, authorization headers, monitor passwords, custom HTTP headers, cookies, heartbeat or known-provider path-token webhook capability URLs, integration values, configured POST values, passphrases/private keys, configured credential values or their encoded forms, or other credential-like values. Repeatedly decode structured key names before classifying them. Keep ordinary monitor URLs—including generic /hooks/status paths on ordinary hosts—and non-secret fields visible so findings remain useful.
1---2name: uptimerobot-management3description: Inspect and manage UptimeRobot monitors, incidents, integrations, alert contacts, maintenance windows, groups, public status pages, tags, API v3, CLI, and MCP access. Use whenever the user mentions UptimeRobot, uptime monitoring, outages, status pages, notification routing, API or CLI automation, or asks to audit or safely change UptimeRobot state.4---56# UptimeRobot Management78Operate UptimeRobot from evidence, keep credentials out of output, and make every mutation deliberate and reviewable.910## Choose the interface1112- Prefer the official UptimeRobot CLI for routine monitor, incident, group, maintenance-window, alert-contact, integration, tag, and status-page work. It provides schemas, redaction, structured output, dry runs, and delete confirmations.13- Prefer the official remote MCP server at `https://mcp.uptimerobot.com/mcp` when an MCP-capable client is already connected. Use OAuth when practical; use an API key only when OAuth is unavailable.14- Use `scripts/manage_uptimerobot.py` for credential-safe context checks, current OpenAPI operation discovery, repeatable request previews, constrained API escape hatches, or bounded cursor pagination.15- Use the dashboard for visual confirmation, OAuth setup, policy/account settings not exposed by the other interfaces, and final human review. Do not infer hidden state from a screenshot.1617Read [references/command-guide.md](references/command-guide.md) for exact commands and [references/api-reference.md](references/api-reference.md) for API, authentication, pagination, rate-limit, and redaction details.1819## Establish context20211. Identify the intended account, monitor or resource IDs, environment, and time range. Do not assume similarly named monitors are interchangeable.222. Run `python scripts/manage_uptimerobot.py context`. Report credential presence and source names only, never values.233. For read-only work, prefer `UPTIMEROBOT_READ_ONLY_API_KEY`. Fall back to `UPTIMEROBOT_API_KEY` only when necessary.244. For mutations, require the main account key in `UPTIMEROBOT_API_KEY` or an OAuth-authorized MCP session. A monitor-specific or read-only key is insufficient.255. Keep both configured helper credentials exclusive to the generated `Authorization` header. Credential values must contain at least eight characters. Reject either active value at semantic boundaries in request paths, queries, or bodies even when percent-encoded, form-encoded, or repeatedly encoded.266. Confirm whether the user asked for inspection, a proposed change, or execution. Inspection never implies mutation.2728## Inspect before changing29301. Capture the target resource and its current state with normalized JSON.312. Correlate monitor status with incidents, response-time or uptime statistics, maintenance windows, alert contacts, integrations, and status-page visibility as relevant.323. Distinguish an active outage from a paused monitor, scheduled maintenance, notification delivery failure, stale status-page data, or a monitor configuration defect.334. Record IDs, status, timestamps, affected destinations, filters, pagination bounds, and source interface. Redact credential-like monitor fields, heartbeat `url`/`pingUrl` capability URLs, webhook destinations, integration capability values, cookies, passphrases/private keys, configured POST values, and nested request/response headers. Preserve ordinary monitor URLs and non-secret values.345. If a result is paginated, follow only validated same-origin cursors that retain the exact normalized collection endpoint path, preserve repeated filter pairs, reject malformed or repeated links, and state the page and byte caps used.3536## Apply safe mutations37381. Restate the exact resource, requested end state, user-visible impact, and rollback or compensating action.392. Preview first. Use CLI `--dry-run` where supported, omit helper `--send`, or present the MCP tool arguments before invoking a mutating tool.403. Obtain explicit authorization for the specific mutation when the current request does not already authorize it. Treat delete, bulk pause/start/update, incident publication, integration changes, status-page publication, and credential-bearing monitor edits as high impact. The helper additionally requires its reported exact `--confirm` value for deletes and bulk monitor operations; that value binds the operation ID when available, method, normalized path, encoded query, and canonical JSON body digest.414. Execute once. Do not automatically retry a mutation after a timeout, transport loss, transient server failure, or response-consumption failure. Treat write-side HTTP `500`, `502`, `503`, and `504`, transport loss, and any post-attempt response read/size/UTF-8/strict-JSON failure as indeterminate: the mutation may have succeeded, so re-read the exact target before any manual retry. Treat a successfully consumed definitive `4xx`, including `429`, as definitive.425. Re-read the resource and adjacent state. Verify the intended fields, monitor runtime status, incident/status-page effect, and notification routing rather than trusting only the write response.436. Report the before/after state, interface used, verification evidence, and any unresolved warnings.4445## Triage common requests4647### Monitor outage or flapping4849Inspect the monitor, current and recent incidents, activity/alerts, response-time and uptime statistics, maintenance overlap, and relevant integrations. Do not reset statistics or pause the monitor merely to clear a noisy dashboard.5051### Monitor creation or update5253Use `uptimerobot monitors schema <type>` before authoring a request. Confirm URL/host, interval, timeout, regions, HTTP method, expected status, keyword/JSON checks, authentication, SSL behavior, alert contacts, group, and tags. Keep secrets in supported secret inputs or environment variables and verify with a follow-up `get` while retaining default redaction.5455### Integrations and alert contacts5657Inventory both resources and map which monitors or account policies use them. Test or replace routing deliberately; deleting an integration or contact can silently reduce outage notification coverage.5859### Maintenance windows6061Check timezone, recurrence, scope, start/end, and overlap. Verify affected monitors after creation or update. Do not use maintenance windows as a permanent suppression mechanism.6263### Public status pages and incidents6465Separate internal monitor state from public communication. Review page monitors, visibility, custom domain, subscriber behavior, active incidents, announcements, and pinned content. Publishing or resolving a public incident is an external communication and requires explicit intent.6667### Bulk operations6869Resolve the exact group/tag filters and enumerate the projected monitor set before a bulk pause, start, or update. Set an explicit safety bound and verify every per-monitor result.7071## MCP rules7273- Configure `https://mcp.uptimerobot.com/mcp` as a streamable HTTP server and prefer OAuth authorization.74- Treat MCP and API/CLI calls as sharing the account quota.75- Keep a read-only API key read-only; do not replace it with the main key merely to make a mutation succeed.76- OAuth client revocation may require UptimeRobot support. Disconnecting a client locally or rotating an API key does not necessarily revoke an OAuth grant.77- Apply the same preview, authorization, single-write, and post-write verification rules to MCP tools.7879## Output contract8081Return:8283- account/resource scope and interface used;84- findings with IDs, status, timestamps, and filters;85- redacted preview for proposed mutations;86- execution and post-write verification evidence when authorized;87- pagination/rate-limit bounds and any incomplete coverage;88- risks, rollback guidance, and next actions.8990Never print API keys, authorization headers, monitor passwords, custom HTTP headers, cookies, heartbeat or known-provider path-token webhook capability URLs, integration values, configured POST values, passphrases/private keys, configured credential values or their encoded forms, or other credential-like values. Repeatedly decode structured key names before classifying them. Keep ordinary monitor URLs—including generic `/hooks/status` paths on ordinary hosts—and non-secret fields visible so findings remain useful.