Read monitors, incidents, heartbeats, on-call and status pages; acknowledge or resolve incidents.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Acknowledge an ongoing incident, signalling that someone is looking into it (stops further escalation). Idempotent-ish: acknowledging an already-acknowledged incident returns HTTP 409. Uptime API: POST /api/v3/incidents/{id}/acknowledge.
The incident id to acknowledge (from betterstack_list_incidents).
User e-mail or a custom identifier of who is acknowledging the incident.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Acknowledge an ongoing incident, signalling that someone is looking into it (stops further escalation). Idempotent-ish: acknowledging an already-acknowledged incident returns HTTP 409. Uptime API: POST /api/v3/incidents/{id}/acknowledge.
| Argument | Type | Description |
|---|---|---|
| incident_id* | string | The incident id to acknowledge (from betterstack_list_incidents). |
| acknowledged_by* | string | User e-mail or a custom identifier of who is acknowledging the incident. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"incident_id",
"acknowledged_by"
],
"properties": {
"incident_id": {
"type": "string",
"description": "The incident id to acknowledge (from betterstack_list_incidents)."
},
"acknowledged_by": {
"type": "string",
"description": "User e-mail or a custom identifier of who is acknowledging the incident."
}
}
}Get a single incident by id, including cause, status, timeline timestamps (started/acknowledged/resolved), who acknowledged/resolved it, and the related monitor. Uptime API: GET /api/v3/incidents/{id}.
| Argument | Type | Description |
|---|---|---|
| incident_id* | string | The incident id (from betterstack_list_incidents). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"incident_id"
],
"properties": {
"incident_id": {
"type": "string",
"description": "The incident id (from betterstack_list_incidents)."
}
}
}Get a single monitor by id, including current status, last_checked_at, SSL/HTTP settings, regions, and alerting configuration. Uptime API: GET /api/v2/monitors/{id}.
| Argument | Type | Description |
|---|---|---|
| monitor_id* | string | The monitor id (from betterstack_list_monitors). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"monitor_id"
],
"properties": {
"monitor_id": {
"type": "string",
"description": "The monitor id (from betterstack_list_monitors)."
}
}
}List heartbeats (cron/background-job monitors that expect a periodic ping), with period, grace, and status (up/down/paused/pending). Uptime API: GET /api/v2/heartbeats.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (default 1). |
| per_page | integer | Results per page. |
| team_name | string | Filter by team name (only when using a global API token). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number for pagination (default 1).",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 250,
"description": "Results per page.",
"exclusiveMinimum": 0
},
"team_name": {
"type": "string",
"description": "Filter by team name (only when using a global API token)."
}
}
}List incidents (alerts triggered by monitors/heartbeats), filterable by date range, monitor, and acknowledged/resolved state. Each incident carries cause, started_at, acknowledged_at, resolved_at. Uptime API: GET /api/v3/incidents.
| Argument | Type | Description |
|---|---|---|
| to | string | End date yyyy-mm-dd (inclusive). |
| from | string | Start date yyyy-mm-dd (inclusive). |
| page | integer | Page number for pagination (default 1). |
| per_page | integer | Results per page. |
| resolved | boolean | true = only resolved, false = only unresolved. |
| team_name | string | Filter by team name (only when using a global API token). |
| monitor_id | string | Only incidents for this monitor id. |
| acknowledged | boolean | true = only acknowledged, false = only unacknowledged. |
| heartbeat_id | string |
List uptime monitors with their status (up/down/paused/pending/maintenance/validating), check frequency, and alert settings. Good first call to discover what is being monitored. Uptime API: GET /api/v2/monitors.
| Argument | Type | Description |
|---|---|---|
| url | string | Filter monitors by their monitored URL. |
| page | integer | Page number for pagination (default 1). |
| per_page | integer | Results per page. |
| team_name | string | Filter by team name (only when using a global API token). |
| pronounceable_name | string | Filter monitors by their pronounceable name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"url": {
"type": "string",
"description": "Filter monitors by their monitored URL."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number for pagination (default 1).",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 250,
"description": "Results per page.",
"exclusiveMinimum": 0
},
"team_name": {
"type": "string",
"description": "Filter by team name (only when using a global API token)."
},
"pronounceable_name": {
"type": "string",
"description": "Filter monitors by their pronounceable name."
}
}
}List on-call calendars/schedules and the users currently on call for escalation. Useful to see who gets paged. Uptime API: GET /api/v2/on-calls.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (default 1). |
| per_page | integer | Results per page. |
| team_name | string | Filter by team name (only when using a global API token). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number for pagination (default 1).",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 250,
"description": "Results per page.",
"exclusiveMinimum": 0
},
"team_name": {
"type": "string",
"description": "Filter by team name (only when using a global API token)."
}
}
}List public/private status pages with company name, subdomain, aggregate_state, and published flag. Uptime API: GET /api/v2/status-pages.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (default 1). |
| per_page | integer | Results per page. |
| team_name | string | Filter by team name (only when using a global API token). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number for pagination (default 1).",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 250,
"description": "Results per page.",
"exclusiveMinimum": 0
},
"team_name": {
"type": "string",
"description": "Filter by team name (only when using a global API token)."
}
}
}Resolve an ongoing incident, marking it as handled/closed. Idempotent-ish: resolving an already-resolved incident returns HTTP 409. Uptime API: POST /api/v3/incidents/{id}/resolve.
| Argument | Type | Description |
|---|---|---|
| incident_id* | string | The incident id to resolve (from betterstack_list_incidents). |
| resolved_by* | string | User e-mail or a custom identifier of who is resolving the incident. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"incident_id",
"resolved_by"
],
"properties": {
"incident_id": {
"type": "string",
"description": "The incident id to resolve (from betterstack_list_incidents)."
},
"resolved_by": {
"type": "string",
"description": "User e-mail or a custom identifier of who is resolving the incident."
}
}
}| Only incidents for this heartbeat id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date yyyy-mm-dd (inclusive)."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date yyyy-mm-dd (inclusive)."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number for pagination (default 1).",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 250,
"description": "Results per page.",
"exclusiveMinimum": 0
},
"resolved": {
"type": "boolean",
"description": "true = only resolved, false = only unresolved."
},
"team_name": {
"type": "string",
"description": "Filter by team name (only when using a global API token)."
},
"monitor_id": {
"type": "string",
"description": "Only incidents for this monitor id."
},
"acknowledged": {
"type": "boolean",
"description": "true = only acknowledged, false = only unacknowledged."
},
"heartbeat_id": {
"type": "string",
"description": "Only incidents for this heartbeat id."
}
}
}