betterstack
Read monitors, incidents, heartbeats, on-call and status pages; acknowledge or resolve incidents.
Should I use this
Quality & Safety
Findings (2)
- HIGH
- MEDIUMin list_monitors
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"betterstack": {
"url": "https://betterstack.usefulapi.io/mcp"
}
}
}Remote endpoints
https://betterstack.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (9)
🟢list_monitors(url, pronounceable_name, team_name, page, per_page)
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.
Input Schema
{
"type": "object",
"properties": {
"url": {
"description": "Filter monitors by their monitored URL.",
"type": "string"
},
"pronounceable_name": {
"description": "Filter monitors by their pronounceable name.",
"type": "string"
},
"team_name": {
"description": "Filter by team name (only when using a global API token).",
"type": "string"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_monitor(monitor_id)
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}.
Input Schema
{
"type": "object",
"properties": {
"monitor_id": {
"type": "string",
"description": "The monitor id (from list_monitors)."
}
},
"required": [
"monitor_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_incidents(from, to, monitor_id, heartbeat_id, resolved, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"from": {
"description": "Start date yyyy-mm-dd (inclusive).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"description": "End date yyyy-mm-dd (inclusive).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"monitor_id": {
"description": "Only incidents for this monitor id.",
"type": "string"
},
"heartbeat_id": {
"description": "Only incidents for this heartbeat id.",
"type": "string"
},
"resolved": {
"description": "true = only resolved, false = only unresolved.",
"type": "boolean"
},
"acknowledged": {
"description": "true = only acknowledged, false = only unacknowledged.",
"type": "boolean"
},
"team_name": {
"description": "Filter by team name (only when using a global API token).",
"type": "string"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_incident(incident_id)
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}.
Input Schema
{
"type": "object",
"properties": {
"incident_id": {
"type": "string",
"description": "The incident id (from list_incidents)."
}
},
"required": [
"incident_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_heartbeats(team_name, page, per_page)
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.
Input Schema
{
"type": "object",
"properties": {
"team_name": {
"description": "Filter by team name (only when using a global API token).",
"type": "string"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_on_call(team_name, page, per_page)
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.
Input Schema
{
"type": "object",
"properties": {
"team_name": {
"description": "Filter by team name (only when using a global API token).",
"type": "string"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_status_pages(team_name, page, per_page)
List public/private status pages with company name, subdomain, aggregate_state, and published flag. Uptime API: GET /api/v2/status-pages.
Input Schema
{
"type": "object",
"properties": {
"team_name": {
"description": "Filter by team name (only when using a global API token).",
"type": "string"
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡acknowledge_incident(incident_id, acknowledged_by)
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.
Input Schema
{
"type": "object",
"properties": {
"incident_id": {
"type": "string",
"description": "The incident id to acknowledge (from list_incidents)."
},
"acknowledged_by": {
"type": "string",
"description": "User e-mail or a custom identifier of who is acknowledging the incident."
}
},
"required": [
"incident_id",
"acknowledged_by"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡resolve_incident(incident_id, resolved_by)
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.
Input Schema
{
"type": "object",
"properties": {
"incident_id": {
"type": "string",
"description": "The incident id to resolve (from list_incidents)."
},
"resolved_by": {
"type": "string",
"description": "User e-mail or a custom identifier of who is resolving the incident."
}
},
"required": [
"incident_id",
"resolved_by"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Recommended Prompts
get_monitorget_monitorlist_monitorslist_monitorslist_monitorsget_monitorCommunity
Evidence