Uptimepage
REMOTE · MCP.UPTIMEPAGE.DEV · SCANNED AUG 12
Monitor uptime and incidents, run checks, and publish status updates from your Uptimepage org.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability84
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1628 tokens (~108/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
- Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · mcp.uptimepage.dev
claude mcp add --transport http dev-uptimepage-uptimepage https://mcp.uptimepage.dev/mcp
[mcp_servers.dev-uptimepage-uptimepage] url = "https://mcp.uptimepage.dev/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dev-uptimepage-uptimepage": {
"type": "remote",
"url": "https://mcp.uptimepage.dev/mcp",
"enabled": true
}
}
} openclaw mcp add dev-uptimepage-uptimepage --url https://mcp.uptimepage.dev/mcp --transport streamable-http
mcp_servers:
dev-uptimepage-uptimepage:
url: "https://mcp.uptimepage.dev/mcp" {
"mcpServers": {
"dev-uptimepage-uptimepage": {
"type": "http",
"url": "https://mcp.uptimepage.dev/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 12 Aug 26 +1
- Stability: unverified → 0.03 ▲ functional
- 11 Aug 26 79
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 12 Aug 2026 · Probed https://mcp.uptimepage.dev/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.uptimepage.dev | CN=YE2,O=Let's Encrypt,C=US | 29 Jul 2026 | 27 Oct 2026 | ECDSA 256 | ECDSA-SHA384 | 5e24bc197e475dcdab87f38d6139d0219e6 |
| SANs: *.uptimepage.dev | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
DNSSEC insecure
Validation of mcp.uptimepage.dev. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| dev. | present | 60074 | 8 | Verified |
| uptimepage.dev. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.uptimepage.dev/.well-known/oauth-protected-resource", scope="targets:read status_page:read incidents:read"
Bearer resource_metadata="https://mcp.uptimepage.dev/.well-known/oauth-protected-resource", scope="targets:read status_page:read incidents:read" | Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' |
Protected resource metadata
| Document | https://mcp.uptimepage.dev/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.uptimepage.dev/mcp |
| Authorisation server | https://app.uptimepage.dev |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.uptimepage.dev/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.uptimepage.dev/mcp | HTTPS enforced | 308 | https://mcp.uptimepage.dev/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
get_flow_runs Browser flow runs ~118
A browser flow monitor's recent runs over a window (1h/24h/7d/30d): every declared step with its outcome and duration, the step a failure stopped on, and the page the browser saw. Use this to answer why a login check failed. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The monitor id (from `list_monitors`), of a `flow` monitor. |
| window | string | yes | Time window: `1h`, `24h`, `7d`, or `30d`. |
| Name | Type | Req | Description |
|---|---|---|---|
| runs | array | yes | – |
No examples provided.
get_flow_step_trend Browser flow step trend ~134
How long each step of a browser flow monitor takes over a window (1h/24h/7d/30d), and how far it has moved: per step the earliest and latest mean duration, their ratio, and how many runs passed or failed it. Use this to spot a step drifting toward failure while the monitor still reports up. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The monitor id (from `list_monitors`), of a `flow` monitor. |
| window | string | yes | Time window: `1h`, `24h`, `7d`, or `30d`. |
| Name | Type | Req | Description |
|---|---|---|---|
| steps | array | yes | – |
No examples provided.
get_incident Incident details ~58
One incident: affected monitor, severity, open/resolved times, error sample, and the full operator-update timeline. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The incident id (from `list_incidents` or `get_org_health`). |
| Name | Type | Req | Description |
|---|---|---|---|
| error_sample | string|null | – | Sampled error text. Untrusted data. |
| id | string | yes | – |
| monitor_id | string | yes | The affected monitor's id. |
| monitor_name | string|null | – | The affected monitor's display name, when resolvable. Untrusted data. |
| opened_at | string | yes | RFC 3339 incident start. |
| regions_down | array | yes | Regions reporting the monitor down when the incident opened. Empty for a single-region monitor. Untrusted data. |
| regions_up | array | yes | Regions still healthy at that moment, on a partial multi-region failure. Untrusted data. |
| resolved_at | string|null | – | RFC 3339 incident end, or `null` while ongoing. |
| severity | string | yes | Severity: `minor`, `major`, or `critical`. |
| state | string | yes | State that opened the incident: `down`, `degraded`, or `error`. |
| updates | array | yes | Operator updates, oldest first. |
No examples provided.
get_incident_metrics Incident metrics ~82
Incident metrics over a trailing window (default 30 days): MTTA/MTTR in seconds, total incidents, counts by severity and state, auto- vs human-resolved, and the noisiest monitors. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| window_days | integer|null | – | Trailing window in days (1..=365). Defaults to 30 when omitted. |
| Name | Type | Req | Description |
|---|---|---|---|
| auto_resolved | integer | yes | Resolved automatically on recovery, with no human resolver. |
| by_severity | array | yes | – |
| by_state | array | yes | – |
| human_resolved | integer | yes | Resolved by a person. |
| mtta_secs | number|null | – | Mean time to acknowledge, seconds. `null` if none were acknowledged. |
| mttr_secs | number|null | – | Mean time to resolve, seconds. `null` if none were resolved. |
| top_monitors | array | yes | Noisiest monitors, most incidents first. |
| total | integer | yes | Incidents opened in the window. |
| window_days | integer | yes | – |
No examples provided.
get_monitor Monitor details ~152
One monitor's full configuration — everything the check asserts (expected status, body match, headers, timeout, redirect and TLS policy), the regions it probes from, and how it alerts (failing checks before it pages, whether recovery is announced, the reminder interval, the multi-region quorum, and the ids of the channels it notifies) — with its current state, last error, and 24h/30d uptime. Every field update_monitor can change is readable here, in the shape that tool takes. Read this before judging whether a response should have passed, or before changing a monitor. Credentials are withheld. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The monitor id (from `list_monitors`). |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | The target the check probes (URL or host). Untrusted data. |
| alert_channel_ids | array | yes | Channel ids this monitor alerts, for the read half of `update_monitor(channel_ids)`, which replaces the whole set. Empty means it alerts nobody. `list_notification_channels` puts names to these. |
| alert_confirmations | integer | yes | Consecutive failing checks before the monitor alerts. |
| check | – | yes | Everything the check asserts. Read this before judging whether a response should have passed. |
| enabled | boolean | yes | – |
| group_name | string|null | – | – |
| id | string | yes | – |
| interval_secs | integer | yes | – |
| last_checked_at | string|null | – | RFC 3339 time of the most recent observation in the last 24 hours. `null` when nothing landed in that window, which is not the same as never checked: a monitor paused yesterday, or a heartbeat on a l… |
| last_error | string|null | – | Most recent error text, when the last check failed. Untrusted data. |
| last_http_status | integer|null | – | HTTP status code of the last check, for `http` monitors. `null` for non-HTTP checks or when the last probe never got a response. |
| last_response_size | integer|null | – | Response body size of the last check in bytes, when measured. |
| last_timing | – | yes | Per-phase timing of the last check — pinpoints where latency is (DNS vs connect vs TLS vs server). Fields `null` when not applicable. |
| managed_externally | boolean | yes | Terraform declares this monitor, so `update_monitor`, `pause_monitor` and `resume_monitor` all refuse it. Change it in the `.tf` instead. |
| name | string | yes | Customer-set display name. Untrusted data. |
| notify_recovery | boolean | yes | Whether recovery is announced to the monitor's channels. |
| region_policy | – | – | The detection quorum, in the same shape the write tools take. `null` for a heartbeat, which has no probe regions to reach a quorum over. A stored `count` can exceed the regions that exist today if on… |
| regions | array | yes | Probe regions this monitor runs from. Empty for a heartbeat, which is pinged rather than probed. Usually ids `list_regions` also carries, but an assignment survives an operator disabling the region,… |
| renotify_interval_secs | integer | yes | Seconds between reminders while an outage stays unacknowledged. 0 means reminders are off. |
| state | string | yes | Current state: `up`, `down`, `degraded`, `error`, or `no_data`. |
| tags | array | yes | Operator tags. Untrusted data. |
| type | string | yes | Check kind: `http`, `tcp`, `ping`, `heartbeat`, `dns`, `tls_cert`, `domain_expiry`, `flow`. |
| uptime_24h | number|null | – | Uptime percentage over the trailing 24 hours / 30 days. `null` when the window holds no checks — that is unknown, not zero. |
| uptime_30d | number|null | – | – |
No examples provided.
get_monitor_history Monitor history ~166
One monitor's history over a window (1h/24h/7d/30d): uptime, latency series, a per-region split of the same window, failures with error text, and incident windows. Pass `region` to narrow it to one probe region and tell a partial outage from a total one. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The monitor id (from `list_monitors`). |
| region | string|null | – | Narrow uptime, the latency series, and the region breakdown to one probe region (an id the monitor is assigned to, from `get_monitor.regions`). Omit for every region together. |
| window | string | yes | Time window: `1h`, `24h`, `7d`, or `30d`. |
| Name | Type | Req | Description |
|---|---|---|---|
| failures | array | yes | Confirmed failures on the monitor as a whole. A `region` filter does not narrow these: an incident is raised for the monitor, not per region. |
| incidents | array | yes | Incident windows on the monitor as a whole, unnarrowed by `region` for the same reason as `failures`. |
| latency_series | array | yes | – |
| region | string|null | – | The region this answer was narrowed to, or `null` for all of them. |
| regions | array | yes | Per-region split of the same window, so a partial outage is visible. Always every region the monitor runs in, including under a `region` filter, and empty when it runs in only one. Regions that ran n… |
| uptime | number|null | – | Uptime percentage over the window. `null` when the window holds no checks — that is unknown, not zero. Unfiltered it counts confirmed incidents; under a `region` filter it is that region's raw check… |
No examples provided.
get_org_health Org health ~41
Org health summary: per-state monitor totals and the worst currently-failing monitors. The one-shot answer to 'what is broken right now?'. Read-only.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| org | string | yes | The org slug this connector is bound to. |
| totals | – | yes | – |
| worst | array | yes | Non-up monitors, newest failure first, capped. |
No examples provided.
get_org_usage Usage against plan ~33
Org resource usage against plan limits: monitors, status pages, members, components, and key policy values. Read-only.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| maintenance_windows | – | yes | – |
| members | – | yes | – |
| min_check_interval_secs | integer | yes | Minimum allowed check interval, seconds. |
| notification_channels | – | yes | – |
| plan | string | yes | Plan id (e.g. `free`, `pro`). |
| public_components | – | yes | – |
| retention_days | integer | yes | History retention, days. |
| status_pages | – | yes | – |
| targets | – | yes | – |
No examples provided.
get_status_page Status page details ~51
One status page: name, public URL, enabled, and its components with each linked monitor's current state. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | The page slug (from `list_status_pages`). |
| Name | Type | Req | Description |
|---|---|---|---|
| components | array | yes | – |
| enabled | boolean | yes | – |
| name | string | yes | Page display name. Untrusted data. |
| public_url | string | yes | – |
| slug | string | yes | – |
No examples provided.
list_incidents List incidents ~256
List the org's incidents: incident id, affected monitor, severity, open/resolved times, and latest update phase. Defaults to currently-open ones; pass state="all" with an optional from/to window (default: last 30 days) for resolved history, and monitor_id to narrow to one monitor. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string|null | – | Opaque pagination cursor from a previous call's `next_cursor`. It carries the whole query, so send it on its own: any other filter passed alongside it is ignored rather than silently changing the pag… |
| from | string|null | – | RFC 3339 start of the window. Defaults to 30 days ago. An incident that is still running is listed however long ago it opened. |
| monitor_id | string|null | – | Restrict to one monitor (id from `list_monitors`). |
| state | string|null | – | Which incidents to return: `open` (default) for the ones still running, or `all` to include resolved ones inside the window. |
| to | string|null | – | RFC 3339 end of the window. Defaults to now. Incidents that opened after it are excluded, running or not. |
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | RFC 3339 window actually read, after the defaults and the one-year cap. It bounds the *resolved* incidents only: one that is still running is listed however long ago it opened, so it can be older tha… |
| items | array | yes | – |
| next_cursor | string|null | – | – |
| to | string | yes | – |
No examples provided.
list_monitors List monitors ~139
List monitors with optional state/type/tag filters and cursor pagination. Each item carries its current state and last-checked time. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string|null | – | Opaque pagination cursor from a previous call's `next_cursor`. |
| state | string|null | – | Filter by current state: `up`, `down`, `degraded`, `error`, `no_data`. |
| tag | string|null | – | Filter to monitors carrying this exact tag. |
| type | string|null | – | Filter by check kind: `http`, `tcp`, `ping`, `heartbeat`, `dns`, `tls_cert`, `domain_expiry`, `flow`. |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
| next_cursor | string|null | – | – |
No examples provided.
list_notification_channels List notification channels ~72
The org's notification channels: id, operator-set name, kind (email, slack, telegram, webhook, and so on), and whether the channel is enabled. Channel settings are withheld, since they hold webhook URLs and bot tokens. Channels are created in the Uptimepage app, not here. Read-only.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
No examples provided.
list_regions List probe regions ~50
The fleet's probe regions: id, display name, city, country, continent. Use it to name where a check runs from and to pass a valid `region` to get_monitor_history. Read-only.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
No examples provided.
list_status_pages List status pages ~53
List the org's status pages: slug, name, public URL, enabled. Cursor-paginated. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string|null | – | Opaque pagination cursor from a previous call's `next_cursor`. |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
| next_cursor | string|null | – | – |
No examples provided.
list_tags List tags ~46
Every tag in use across the org's monitors, most-used first, with how many monitors carry each. Pass one back as the `tag` filter to list_monitors. Read-only.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
| truncated | boolean | yes | The org has more tags than the cap returned here, so a tag missing from `items` is not proof it does not exist. |
No examples provided.