Skip to content
Scalekit Docs

Betterstack MCP

Vendor MCP107 toolsOAuth 2.1/DCRMonitoringDeveloper Tools

Monitor uptime, manage logs, and respond to incidents with Better Stack's observability platform.

Betterstack MCP connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'betterstackmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Betterstack MCP:', link)
    process.stdout.write('Press Enter after authorizing...')
    await new Promise(r => process.stdin.once('data', r))
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'betterstackmcp_status_pages',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Update status page section, status page resource, status page — Rename a status page section or move it by setting its position
  • Roles team — List the roles defined in a Better Stack organization, including their role_id and system-role identifier (admin, billing_admin, team_lead, responder, member, or “custom”)
  • Members team — List the members of a Better Stack team, including pending invitations
  • Sections status page — List the sections (resource groups) of a status page
  • Variable set dashboard, remove dashboard — Create or update a dashboard template variable — a user-facing filter in the dashboard toolbar, referenced in chart SQL as {{name}} (required — the chart errors until it resolves to a value) or [[ AND col = {{name}} ]] (optional — the whole [[ .
  • Member remove team, invite team — Remove a member from a Better Stack team, or cancel a pending invitation

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

betterstackmcp_acknowledge_incident#Acknowledge an ongoing incident2 params

Acknowledge an ongoing incident

NameTypeRequiredDescription
idintegerrequiredThe ID of the incident to acknowledge
acknowledged_bystringoptionalUser email or identifier of who acknowledged the incident. Optional - when omitted, the action is attributed to the authenticated OAuth user (or "API" for team/organisation API tokens). Only pass this if the user has explicitly told you who acknowledged the incident on their behalf.
betterstackmcp_add_chart_to_dashboard#Add a new chart to a dashboard. Use the `section` parameter to organize charts into named sections — sections are auto-created if they don't exist, and charts are auto-positioned within them. **REQUIRED**: the `query` MUST contain `{{source}}` in the FROM clause — queries without a source variable are rejected. Dashboard chart queries run against the metrics collection: use `sum(logs_count)` (or the matching `sum(<row_type>_count)` for the source), `avgMerge(value_avg)`, `label('tag')`. Do NOT use `JSONExtract(raw, …)` — that is for live-tail charts and `query` only; dashboards have no `raw` column. Call `metrics_query_help` with the source ID **and `context: 'chart_query'`** for available metrics/labels and chart-query-style examples.9 params

Add a new chart to a dashboard. Use the `section` parameter to organize charts into named sections — sections are auto-created if they don't exist, and charts are auto-positioned within them. **REQUIRED**: the `query` MUST contain `{{source}}` in the FROM clause — queries without a source variable are rejected. Dashboard chart queries run against the metrics collection: use `sum(logs_count)` (or the matching `sum(<row_type>_count)` for the source), `avgMerge(value_avg)`, `label('tag')`. Do NOT use `JSONExtract(raw, …)` — that is for live-tail charts and `query` only; dashboards have no `raw` column. Call `metrics_query_help` with the source ID **and `context: 'chart_query'`** for available metrics/labels and chart-query-style examples.

NameTypeRequiredDescription
chart_typestringrequiredType of chart to create
dashboard_idintegerrequiredThe ID of the dashboard to add the chart to
namestringrequiredName/title for the chart
querystringrequiredSQL query. MUST contain {{source}} in FROM (hardcoded collection names are rejected). Use {{start_time}}/{{end_time}} in the time filter and {{time}} for bucketing.
explanationstringoptionalShort description of the chart.
heightintegeroptionalChart height in grid units (default: 8)
sectionstringoptionalSection name — chart is auto-placed within it. Section auto-created if it doesn't exist.
settingsobjectoptionalChart display settings
widthintegeroptionalChart width in grid units (1-12, default: 6)
betterstackmcp_add_dashboard_section#Add a section divider to a dashboard. Sections span the full width and help organize charts into groups. Charts and sections at or below the insertion point are shifted down to make room4 params

Add a section divider to a dashboard. Sections span the full width and help organize charts into groups. Charts and sections at or below the insertion point are shifted down to make room

NameTypeRequiredDescription
dashboard_idintegerrequiredThe ID of the dashboard
namestringrequiredSection title (e.g., 'Memory Metrics', 'Network')
yintegerrequiredY position (row) where section should appear
explanationstringoptionalShort description of the section, shown as a tooltip next to section name in the UI. Use rarely, when wanting to show more context for non-obvious sections.
betterstackmcp_application#Get comprehensive details of a specific application including its configuration, retention settings, ingestion details, custom bucket settings (if configured)1 param

Get comprehensive details of a specific application including its configuration, retention settings, ingestion details, custom bucket settings (if configured)

NameTypeRequiredDescription
idintegerrequiredThe ID of the application
betterstackmcp_applications#List all available applications in a paginated table format. Returns application ID, name, platform type, team, status (active/paused), data region, and creation date4 params

List all available applications in a paginated table format. Returns application ID, name, platform type, team, status (active/paused), data region, and creation date

NameTypeRequiredDescription
namestringoptionalFilter applications by name (case-insensitive partial match)
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
team_idintegeroptionalFilter applications by team ID (use teams to get team IDs)
betterstackmcp_available_incident_escalation_policies#Get available escalation policies for an incident3 params

Get available escalation policies for an incident

NameTypeRequiredDescription
idintegerrequiredThe ID of the incident
searchstringoptionalFilter options by text (searches in names, emails, and other text fields)
typestringoptionalFilter by escalation type. Possible values: user, team, policy, schedule, organisation
betterstackmcp_change_team_member_role#Change a team member's role. Identify the member by email or user_id (from team_members) and pass the target role_id (from team_roles). The admin role cannot be assigned, and an existing admin's role cannot be changed, via the API. Pending invitations can't have their role changed — cancel and re-invite instead. If the token can reach more than one team, pass team_id (or team_name).5 params

Change a team member's role. Identify the member by email or user_id (from team_members) and pass the target role_id (from team_roles). The admin role cannot be assigned, and an existing admin's role cannot be changed, via the API. Pending invitations can't have their role changed — cancel and re-invite instead. If the token can reach more than one team, pass team_id (or team_name).

NameTypeRequiredDescription
role_idintegerrequiredID of the role to assign (use team_roles to look up ids).
emailstringoptionalE-mail of the member whose role to change (alternative to user_id).
team_idintegeroptionalID of the team the member belongs to. Required when the token can access more than one team.
team_namestringoptionalName of the team (alternative to team_id).
user_idintegeroptionalID of the member whose role to change (alternative to email).
betterstackmcp_chart#Get detailed information about a specific chart including its SQL queries, configuration, and settings. Use dashboard first to find the chart ID1 param

Get detailed information about a specific chart including its SQL queries, configuration, and settings. Use dashboard first to find the chart ID

NameTypeRequiredDescription
idintegerrequiredThe ID of the chart to retrieve
betterstackmcp_chart_alert#Get detailed information about a specific chart alert including its configuration, SQL queries, status, and current incident info. Use chart_alerts first to find the alert ID1 param

Get detailed information about a specific chart alert including its configuration, SQL queries, status, and current incident info. Use chart_alerts first to find the alert ID

NameTypeRequiredDescription
idintegerrequiredThe ID of the chart alert to retrieve
betterstackmcp_chart_alert_help#Get instructions for creating and configuring chart alerts, including alert types, operators, configuration fields, supported chart types, and common mistakes. Call this before creating or editing chart alerts0 params

Get instructions for creating and configuring chart alerts, including alert types, operators, configuration fields, supported chart types, and common mistakes. Call this before creating or editing chart alerts

betterstackmcp_chart_alerts#List chart alerts with optional filtering by team, chart, or dashboard. Returns alert ID, name, type, chart, dashboard, and status4 params

List chart alerts with optional filtering by team, chart, or dashboard. Returns alert ID, name, type, chart, dashboard, and status

NameTypeRequiredDescription
chart_idintegeroptionalFilter to alerts on a specific chart
dashboard_idintegeroptionalFilter to alerts on charts in a specific dashboard
pageintegeroptionalPage number for pagination (default: 1, 25 per page)
team_idintegeroptionalFilter alerts by team ID (use teams to get team IDs)
betterstackmcp_chart_building_help#Get comprehensive instructions for building charts and dashboards, including chart types, units, axis settings, column mapping, legend placement, layout tips, and common mistakes. Call this before creating or editing charts0 params

Get comprehensive instructions for building charts and dashboards, including chart types, units, axis settings, column mapping, legend placement, layout tips, and common mistakes. Call this before creating or editing charts

betterstackmcp_clusters#List all available storage clusters for a specific team. Returns a table with cluster IDs, names, and regions. Used primarily for creating cloud connections to query logs and metrics data directly via ClickHouse1 param

List all available storage clusters for a specific team. Returns a table with cluster IDs, names, and regions. Used primarily for creating cloud connections to query logs and metrics data directly via ClickHouse

NameTypeRequiredDescription
team_idintegerrequiredThe ID of the team (use teams to get team IDs)
betterstackmcp_create_application#Create a new application in Better Stack. Returns the created application details including ID, ingestion token, ingesting host URL, retention settings, and platform-specific integration documentation links with next steps for configuration5 params

Create a new application in Better Stack. Returns the created application details including ID, ingestion token, ingesting host URL, retention settings, and platform-specific integration documentation links with next steps for configuration

NameTypeRequiredDescription
namestringrequiredThe name of the application
platformstringrequiredThe platform of the application
team_idintegerrequiredThe ID of the team to create the application in (use teams to get team IDs)
data_regionstringoptionalThe data region for the application. Use 'data_regions' tool to see available options for your organization. Common values for most plans: us_east, germany, singapore. Ask the user if unsure.
ingesting_pausedbooleanoptionalWhether to start with ingesting paused (default: false)
betterstackmcp_create_chart_alert#Create a new chart alert on an existing chart. The chart must support alerts (line_chart, bar_chart, number_chart, or tail_chart with time variables). Call chart_alert_help for configuration reference. Use chart or dashboard first to find the chart ID21 params

Create a new chart alert on an existing chart. The chart must support alerts (line_chart, bar_chart, number_chart, or tail_chart with time variables). Call chart_alert_help for configuration reference. Use chart or dashboard first to find the chart ID

NameTypeRequiredDescription
alert_typestringrequiredAlert type: 'threshold' (fixed value), 'relative' (percentage change), 'anomaly_rrcf' (ML-based anomaly detection)
chart_idintegerrequiredThe ID of the chart to add the alert to
namestringrequiredName of the alert
operatorstringrequiredComparison operator. For relative type also: increases_by, decreases_by, changes_by
aggregation_intervalintegeroptionalData range for threshold alerts on line/bar/number charts ('on data from' in UI, default: 60s)
anomaly_sensitivityintegeroptionalAnomaly significance threshold (1-10, default 5), shown as 'Significance' in the UI. Higher = larger deviation required to fire, so FEWER alerts; lower = more sensitive, more alerts. Only for anomaly_rrcf alerts
anomaly_training_range_daysintegeroptionalHow many days of data the anomaly model is first trained on (1-30, default 7), shown as 'Initial training data range' in the UI. A full week (7) captures daily and weekly pattern shifts. Only for anomaly_rrcf alerts
anomaly_triggerstringoptionalAnomaly trigger direction: 'any' (default), 'higher', 'lower'. Only for anomaly_rrcf alerts
callbooleanoptionalPhone notifications (default: false)
check_periodintegeroptionalHow often to run the alert check (seconds). Max 3600 for query-period-based alerts
confirmation_periodintegeroptionalHow long the condition must persist before creating an incident (seconds, default: 60)
emailbooleanoptionalEmail notifications (default: true)
escalation_targetstringoptional'current_team' (default) or a GID like gid://uptime/Policy/123 or gid://uptime/Team/456
pushbooleanoptionalPush notifications (default: false)
query_periodintegeroptionalSeconds to look back for relative alerts and tail/table charts
recovery_periodintegeroptionalHow long the condition must be resolved before auto-resolving (seconds, default: 60)
series_namesarrayoptionalSpecific series to monitor. Empty = all series. Mutually exclusive with series_names_except
series_names_exceptarrayoptionalSeries to exclude; alert fires on every other series. Mutually exclusive with series_names
shown_intervalintegeroptionalAnomaly chart aggregation interval (seconds). Only for anomaly_rrcf alerts
smsbooleanoptionalSMS notifications (default: false)
valuenumberoptionalThreshold value (required for threshold/relative types). For relative type, this is a percentage (e.g., 50 means 50%)
betterstackmcp_create_cloud_connection#Create a secure cloud connection for direct ClickHouse query access to logs, spans, and metrics data. Returns connection credentials (host, port, username, password), sample queries for each data type, and cURL command examples. Connections expire after 1 hour by default4 params

Create a secure cloud connection for direct ClickHouse query access to logs, spans, and metrics data. Returns connection credentials (host, port, username, password), sample queries for each data type, and cURL command examples. Connections expire after 1 hour by default

NameTypeRequiredDescription
team_idintegerrequiredThe ID of the team (use teams to get team IDs)
cluster_idintegeroptionalThe ID of the cluster to use (required, when source_id is empty)
notestringoptionalOptional note for the connection
source_idintegeroptionalThe ID of the source (required, when cluster_id is empty)
betterstackmcp_create_dashboard#Create a new dashboard. Optionally use a template to start with pre-configured charts. Call chart_building_help for guidance on dashboard structure and layout. Optionally specify a source_id to preconfigure the dashboard with that source. Returns the new dashboard ID which can be used with add_chart_to_dashboard to add charts5 params

Create a new dashboard. Optionally use a template to start with pre-configured charts. Call chart_building_help for guidance on dashboard structure and layout. Optionally specify a source_id to preconfigure the dashboard with that source. Returns the new dashboard ID which can be used with add_chart_to_dashboard to add charts

NameTypeRequiredDescription
namestringrequiredName for the new dashboard
team_idintegerrequiredThe ID of the team to create the dashboard in (use teams to get team IDs)
resource_group_namestringoptionalOptional resource group name to place the dashboard in. If a group with this name already exists for the team it will be reused; otherwise a new group is created.
source_idintegeroptionalOptional source ID to preconfigure dashboard with that source's metrics
template_idintegeroptionalOptional template ID to create dashboard from (use dashboard_templates to see available templates)
betterstackmcp_create_heartbeat#Create a new heartbeat that expects a periodic request from a cron job, worker, or other background task, and alerts when that request stops arriving. Provide a name for the heartbeat. The heartbeat reports down once no request is received within period seconds plus the grace window. Use the returned heartbeat URL as the endpoint your job pings on every successful run.18 params

Create a new heartbeat that expects a periodic request from a cron job, worker, or other background task, and alerts when that request stops arriving. Provide a name for the heartbeat. The heartbeat reports down once no request is received within period seconds plus the grace window. Use the returned heartbeat URL as the endpoint your job pings on every successful run.

NameTypeRequiredDescription
namestringrequiredHuman-friendly name for the heartbeat.
callbooleanoptionalCall the on-call person when the heartbeat goes down.
critical_alertbooleanoptionalSend critical push notifications that ignore the device mute switch and Do Not Disturb.
emailbooleanoptionalSend e-mail alerts when the heartbeat goes down.
graceintegeroptionalExtra seconds to wait after the period elapses before reporting the heartbeat as down. Defaults to 300.
heartbeat_group_idintegeroptionalID of the heartbeat group to add this heartbeat to.
maintenance_daysarrayoptionalDays the maintenance window applies to (e.g. ["mon", "tue", "wed"]).
maintenance_fromstringoptionalStart of a daily maintenance window during which alerts are paused (e.g. "01:00:00").
maintenance_timezonestringoptionalTimezone for the maintenance window (e.g. "UTC", "Europe/Berlin"). Defaults to UTC.
maintenance_tostringoptionalEnd of the daily maintenance window (e.g. "03:00:00").
pausedbooleanoptionalCreate the heartbeat in a paused state, so it expects no requests and raises no incidents until resumed.
periodintegeroptionalHow often you expect a request, in seconds. The heartbeat reports down if no request arrives within this window plus the grace period. Defaults to 86400 (one day).
policy_idintegeroptionalID of the escalation policy to use for alerting.
pushbooleanoptionalSend push notification alerts when the heartbeat goes down.
smsbooleanoptionalSend SMS alerts when the heartbeat goes down.
sort_indexintegeroptionalPosition of the heartbeat in the list, set to NULL to sort by creation date.
team_idintegeroptionalThe ID of the team to create the heartbeat in (use list_heartbeats to see team IDs). Required only when the API token has access to multiple teams.
team_waitintegeroptionalSeconds to wait before escalating to the whole team.
betterstackmcp_create_incident#Create a new incident providing a summary of the issue, requester email, and other optional details12 params

Create a new incident providing a summary of the issue, requester email, and other optional details

NameTypeRequiredDescription
summarystringrequiredBrief incident summary
team_idintegerrequiredThe ID of the team (use teams to get team IDs)
callbooleanoptionalCall on-call person
critical_alertbooleanoptionalSend critical push notification
descriptionstringoptionalFull incident description
emailbooleanoptionalSend email to on-call person
metadataobjectoptionalAdditional incident key-value metadata
namestringoptionalShort incident name
policy_idstringoptionalEscalation policy ID
requester_emailstringoptionalEmail of the incident requester. Optional when authenticated via OAuth - defaults to the OAuth user. Required when using a team or organisation API token.
smsbooleanoptionalSend SMS to on-call person
team_waitintegeroptionalSeconds to wait before escalating to team
betterstackmcp_create_incident_comment#Create a comment on an incident2 params

Create a comment on an incident

NameTypeRequiredDescription
contentstringrequiredThe content of the comment (Markdown is supported for formatting)
incident_idintegerrequiredThe ID of the incident to comment on
betterstackmcp_create_metric_expression#Create a new metric expression (extract-metrics-from-logs rule) on a source. `sql_expression` runs against each log row; log fields live inside the `raw` JSON column — use `JSONExtract(raw, 'path', 'Nullable(Type)')`. The `Nullable(...)` wrapper is required. Nested paths use positional args: `JSONExtract(raw, 'request', 'headers', 'user-agent', 'Nullable(String)')`. Call `source_fields` to see what fields exist. Pass `aggregations` (e.g. `["avg", "count"]`) for an aggregated metric, or omit / pass `[]` for a label (group-by column). Prefer `build_type: new_data` (default). `historical_logs` re-runs the rule over every stored log — expensive; only when the user explicitly asks.6 params

Create a new metric expression (extract-metrics-from-logs rule) on a source. `sql_expression` runs against each log row; log fields live inside the `raw` JSON column — use `JSONExtract(raw, 'path', 'Nullable(Type)')`. The `Nullable(...)` wrapper is required. Nested paths use positional args: `JSONExtract(raw, 'request', 'headers', 'user-agent', 'Nullable(String)')`. Call `source_fields` to see what fields exist. Pass `aggregations` (e.g. `["avg", "count"]`) for an aggregated metric, or omit / pass `[]` for a label (group-by column). Prefer `build_type: new_data` (default). `historical_logs` re-runs the rule over every stored log — expensive; only when the user explicitly asks.

NameTypeRequiredDescription
namestringrequiredMetric name. Letters, numbers, and underscores only
source_idintegerrequiredThe ID of the source (use sources to get source IDs)
sql_expressionstringrequiredClickHouse SQL expression evaluated against each log row (e.g. "JSONExtractInt(raw, 'status')")
typestringrequiredClickHouse storage type for the extracted value
aggregationsarrayoptionalAggregations to compute for this metric (e.g. ['avg', 'count']). Omit or pass [] to store the value as a label (group-by column) instead of an aggregated metric
build_typestringoptionalHow to process existing data: 'new_data' (default, cheap) only applies to new logs; 'historical_logs' rebuilds metrics from existing logs
betterstackmcp_create_monitor#Create a new monitor that tracks the availability of a website, host, or service. Provide the `url` to monitor. For ping, TCP, UDP, SMTP, POP, IMAP, and DNS monitors this is the host (e.g. `example.com`) rather than a full URL. The monitor starts checking immediately unless `paused` is set to true.26 params

Create a new monitor that tracks the availability of a website, host, or service. Provide the `url` to monitor. For ping, TCP, UDP, SMTP, POP, IMAP, and DNS monitors this is the host (e.g. `example.com`) rather than a full URL. The monitor starts checking immediately unless `paused` is set to true.

NameTypeRequiredDescription
urlstringrequiredURL to monitor (e.g. https://example.com). For ping, TCP, UDP, SMTP, POP, IMAP, and DNS monitors, provide the host instead (e.g. example.com).
callbooleanoptionalCall the on-call person when the monitor goes down.
check_frequencyintegeroptionalHow often to check the monitor, in seconds (e.g. 30, 180).
confirmation_periodintegeroptionalSeconds to wait and re-check before confirming the monitor is down.
critical_alertbooleanoptionalSend critical push notifications that ignore the device mute switch and Do Not Disturb.
emailbooleanoptionalSend e-mail alerts when the monitor goes down.
expected_status_codesarrayoptionalHTTP status codes considered healthy. Used with the expected_status_code monitor type.
follow_redirectsbooleanoptionalFollow HTTP redirects when checking the monitor.
http_methodstringoptionalHTTP method to use for the check (e.g. get, post, head).
monitor_group_idintegeroptionalID of the monitor group to add this monitor to.
monitor_typestringoptionalWhat kind of check to run. Defaults to 'status' (HTTP up/down).
pausedbooleanoptionalCreate the monitor in a paused state, so it performs no checks until resumed.
policy_idintegeroptionalID of the escalation policy to use for alerting.
portintegeroptionalPort to check. Used for tcp, udp, smtp, pop, and imap monitors.
pronounceable_namestringoptionalHuman-friendly name for the monitor. Defaults to the URL host.
pushbooleanoptionalSend push notification alerts when the monitor goes down.
recovery_periodintegeroptionalSeconds the monitor must stay healthy before a related incident is resolved.
regionsarrayoptionalRegions to check from (e.g. ["us", "eu", "as", "au"]).
request_bodystringoptionalRequest body to send with the check.
request_headersarrayoptionalCustom request headers to send with the check.
request_timeoutintegeroptionalHow long to wait for a response before the check times out, in seconds.
required_keywordstringoptionalKeyword to search for in the response body. Required for the keyword and keyword_absence monitor types.
smsbooleanoptionalSend SMS alerts when the monitor goes down.
team_idintegeroptionalThe ID of the team to create the monitor in. Required only when the API token has access to multiple teams.
team_waitintegeroptionalSeconds to wait before escalating to the whole team.
verify_sslbooleanoptionalVerify the SSL certificate when checking HTTPS URLs.
betterstackmcp_create_source#Create a new log source in Better Stack. Returns the created source details including ID, ingestion token, ingesting host URL, retention settings, and platform-specific integration documentation links with next steps for configuration6 params

Create a new log source in Better Stack. Returns the created source details including ID, ingestion token, ingesting host URL, retention settings, and platform-specific integration documentation links with next steps for configuration

NameTypeRequiredDescription
namestringrequiredThe name of the source
platformstringrequiredThe platform for the source (e.g., nginx, docker, kubernetes, http, vector)
team_idintegerrequiredThe ID of the team to create the source in (use teams to get team IDs)
data_regionstringoptionalThe data region for the source. Use 'data_regions' tool to see available options for your organization. Common values for most plans: us_east, germany, singapore. Ask the user if unsure.
ingesting_pausedbooleanoptionalWhether to start with ingesting paused (default: false)
logs_retentionintegeroptionalLog retention in days (default: 30)
betterstackmcp_create_status_page_report#Create a new status page report10 params

Create a new status page report

NameTypeRequiredDescription
messagestringrequiredThe initial status update message
status_page_idintegerrequiredThe ID of the status page
titlestringrequiredThe title of the status report
affected_resourcesarrayoptionalArray of affected resources with status_page_resource_id and status
ends_atstringoptionalEnd time for the report (ISO 8601 format, required for maintenance reports)
notify_subscribersbooleanoptionalWhether to notify subscribers via email (default: false)
published_atstringoptionalWhen the report should be published (ISO 8601 format, default: now)
report_typestringoptionalType of report - manual (incident) or maintenance (default: manual)
starts_atstringoptionalStart time for the report (ISO 8601 format)
team_idintegeroptionalOptional team ID (use teams to get team IDs). Status pages belong to organizations, so this is only needed to narrow the lookup to one team's organization
betterstackmcp_create_status_page_report_update#Create a new status update for an existing status page report6 params

Create a new status update for an existing status page report

NameTypeRequiredDescription
affected_resourcesarrayrequiredArray of affected resources with status_page_resource_id and status
report_idintegerrequiredThe ID of the status report
status_page_idintegerrequiredThe ID of the status page
messagestringoptionalThe status update message
notify_subscribersbooleanoptionalWhether to notify subscribers via email (default: false)
published_atstringoptionalWhen the update should be published (ISO 8601 format, default: now)
betterstackmcp_create_status_page_resource#Add a resource (monitor, heartbeat, or group) to a status page. Provide the resource_type and resource_id of the thing to display, plus a public_name shown to visitors (usually the resource's own name). Use status_page_sections to find the section to place it in; when omitted the resource is added to the status page's first section.9 params

Add a resource (monitor, heartbeat, or group) to a status page. Provide the resource_type and resource_id of the thing to display, plus a public_name shown to visitors (usually the resource's own name). Use status_page_sections to find the section to place it in; when omitted the resource is added to the status page's first section.

NameTypeRequiredDescription
public_namestringrequiredName shown to visitors, usually the resource name
resource_idintegerrequiredThe ID of the monitor, heartbeat, or group to add
resource_typestringrequiredWhat kind of resource to add
status_page_idintegerrequiredThe ID of the status page
explanationstringoptionalOptional description shown under the resource
positionintegeroptionalZero-based position of the resource within its section
status_page_section_idintegeroptionalThe ID of the section to add the resource to (use status_page_sections to list them). Defaults to the first section.
team_idintegeroptionalThe ID of the team that owns the status page. Required only when the API token has access to multiple teams.
widget_typestringoptionalHow the resource is displayed. "history" shows the daily uptime bar, "plain" hides it.
betterstackmcp_create_status_page_section#Create a section (resource group) on a status page to group resources under a heading.4 params

Create a section (resource group) on a status page to group resources under a heading.

NameTypeRequiredDescription
namestringrequiredThe section heading shown to visitors
status_page_idintegerrequiredThe ID of the status page
positionintegeroptionalZero-based position of the section on the status page
team_idintegeroptionalThe ID of the team that owns the status page. Required only when the API token has access to multiple teams.
betterstackmcp_dashboard#Get detailed information about a specific dashboard including its charts, sections, layout, and configuration. Use this to understand a dashboard structure before modifying it1 param

Get detailed information about a specific dashboard including its charts, sections, layout, and configuration. Use this to understand a dashboard structure before modifying it

NameTypeRequiredDescription
idintegerrequiredThe ID of the dashboard to retrieve
betterstackmcp_dashboard_query_help#Get instructions for writing a ClickHouse query to use inside a Better Stack Dashboard chart (or chart alert). The query uses template variables (`{{source}}`, `{{time}}`, `{{start_time}}`, `{{end_time}}`) and runs against the source's metrics collection — it is meant to be saved as a dashboard chart via `add_chart_to_dashboard` / `edit_chart`, NOT run directly. To instead write an ad-hoc query you will run directly via `query` or `render_chart`, use `metrics_query_help`.1 param

Get instructions for writing a ClickHouse query to use inside a Better Stack Dashboard chart (or chart alert). The query uses template variables (`{{source}}`, `{{time}}`, `{{start_time}}`, `{{end_time}}`) and runs against the source's metrics collection — it is meant to be saved as a dashboard chart via `add_chart_to_dashboard` / `edit_chart`, NOT run directly. To instead write an ad-hoc query you will run directly via `query` or `render_chart`, use `metrics_query_help`.

NameTypeRequiredDescription
idintegerrequiredThe source ID
betterstackmcp_dashboard_templates#List all available dashboard templates in a paginated table format. Returns template ID, name, description, and other metadata2 params

List all available dashboard templates in a paginated table format. Returns template ID, name, description, and other metadata

NameTypeRequiredDescription
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
betterstackmcp_dashboards#List all available dashboards in a paginated table format. Returns dashboard ID, name, creation date, and last updated date3 params

List all available dashboards in a paginated table format. Returns dashboard ID, name, creation date, and last updated date

NameTypeRequiredDescription
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
team_idintegeroptionalFilter dashboards by team ID (use teams to get team IDs)
betterstackmcp_data_regions#List all available data regions and clusters for application and source creation. Returns a table with region IDs (to use when creating applications or sources), display names, types (Region or Cluster), and geographical locations. Includes usage instructions for both standard regions and custom clusters0 params

List all available data regions and clusters for application and source creation. Returns a table with region IDs (to use when creating applications or sources), display names, types (Region or Cluster), and geographical locations. Includes usage instructions for both standard regions and custom clusters

betterstackmcp_delete_chart_alert#Delete a chart alert permanently. This will also clean up any associated incidents and anomaly models. This action cannot be undone. Use chart_alerts or chart_alert first to find the alert ID1 param

Delete a chart alert permanently. This will also clean up any associated incidents and anomaly models. This action cannot be undone. Use chart_alerts or chart_alert first to find the alert ID

NameTypeRequiredDescription
idintegerrequiredThe ID of the chart alert to delete
betterstackmcp_delete_metric_expression#Delete a metric expression from a source. This action cannot be undone. Call `metric_expressions` first to get the ID. `build_type: new_data` (default) stops the rule from applying to future logs but leaves already-extracted data. `build_type: historical_logs` also rebuilds the source's metrics without this rule — expensive.3 params

Delete a metric expression from a source. This action cannot be undone. Call `metric_expressions` first to get the ID. `build_type: new_data` (default) stops the rule from applying to future logs but leaves already-extracted data. `build_type: historical_logs` also rebuilds the source's metrics without this rule — expensive.

NameTypeRequiredDescription
idstringrequiredThe metric expression ID returned by metric_expressions, e.g. "m-123" or "g-456"
source_idintegerrequiredThe ID of the source (use sources to get source IDs)
build_typestringoptionalHow to process existing data: 'new_data' (default) only stops new data; 'historical_logs' also rebuilds historical metrics without this rule
betterstackmcp_documentation#Search for relevant documentation articles and return their contents2 params

Search for relevant documentation articles and return their contents

NameTypeRequiredDescription
querystringoptionalThe search query to find relevant documentation articles
urlstringoptionalDirect URL to a specific documentation article
betterstackmcp_edit_application#Edit an existing application in Better Stack — rename it, pause or resume ingesting, or set its VRL transformations, including the exception grouping program. Only provide the fields you want to change. Use applications or application first to find the application ID.8 params

Edit an existing application in Better Stack — rename it, pause or resume ingesting, or set its VRL transformations, including the exception grouping program. Only provide the fields you want to change. Use applications or application first to find the application ID.

NameTypeRequiredDescription
idintegerrequiredThe ID of the application to edit
ingesting_pausedbooleanoptionalSet to true to temporarily pause data ingesting for this application, false to resume it
namestringoptionalNew name for the application
vrl_transformation_exceptionsstringoptionalVRL transformation applied to exceptions during ingestion. This is what controls how exceptions are grouped into errors: it should set the ._pattern grouping key. Set to an empty string to remove a custom program, omit to leave unchanged.
vrl_transformation_logsstringoptionalVRL transformation applied to logs during ingestion. Set to an empty string to remove, omit to leave unchanged.
vrl_transformation_replaysstringoptionalVRL transformation applied to session replays during ingestion. Set to an empty string to remove, omit to leave unchanged.
vrl_transformation_spansstringoptionalVRL transformation applied to traces (spans) during ingestion. Set to an empty string to remove, omit to leave unchanged.
vrl_transformation_web_eventsstringoptionalVRL transformation applied to web events (page views and web vitals) during ingestion. Set to an empty string to remove, omit to leave unchanged.
betterstackmcp_edit_chart#Edit an existing chart name, query, type, or settings. Only provide the fields you want to change. If changing the query: the new query MUST contain `{{source}}` in the FROM clause (queries without a source variable are rejected). Dashboard chart queries run against the metrics collection: use `sum(logs_count)` (or the matching `sum(<row_type>_count)` for the source), `avgMerge(value_avg)`, `label('tag')`. `JSONExtract(raw, …)` only works in live-tail charts — dashboards have no `raw` column. Verify the new query with `render_chart` or `query` before saving. Call `chart_building_help` for chart/settings reference.8 params

Edit an existing chart name, query, type, or settings. Only provide the fields you want to change. If changing the query: the new query MUST contain `{{source}}` in the FROM clause (queries without a source variable are rejected). Dashboard chart queries run against the metrics collection: use `sum(logs_count)` (or the matching `sum(<row_type>_count)` for the source), `avgMerge(value_avg)`, `label('tag')`. `JSONExtract(raw, …)` only works in live-tail charts — dashboards have no `raw` column. Verify the new query with `render_chart` or `query` before saving. Call `chart_building_help` for chart/settings reference.

NameTypeRequiredDescription
idintegerrequiredThe ID of the chart to edit
chart_typestringoptionalNew chart type
explanationstringoptionalShort description of the chart. Set to empty string to clear.
heightintegeroptionalNew height in grid units (1-50).
namestringoptionalNew name for the chart
querystringoptionalNew SQL query. MUST contain {{source}} in FROM (hardcoded collection names are rejected). Use {{start_time}}/{{end_time}} in the time filter and {{time}} for bucketing.
settingsobjectoptionalChart display settings
widthintegeroptionalNew width in grid units (1-12). Grid is 12 columns wide.
betterstackmcp_edit_chart_alert#Edit an existing chart alert configuration. Only provide the fields you want to change. Call chart_alert_help for configuration reference. Use chart_alerts or chart_alert first to find the alert ID22 params

Edit an existing chart alert configuration. Only provide the fields you want to change. Call chart_alert_help for configuration reference. Use chart_alerts or chart_alert first to find the alert ID

NameTypeRequiredDescription
idintegerrequiredThe ID of the chart alert to edit
aggregation_intervalintegeroptionalData range for threshold alerts ('on data from' in UI)
alert_typestringoptionalNew alert type
anomaly_sensitivityintegeroptionalAnomaly significance threshold (1-10, default 5), shown as 'Significance' in the UI. Higher = larger deviation required to fire, so FEWER alerts; lower = more sensitive, more alerts
anomaly_training_range_daysintegeroptionalHow many days of data the anomaly model is first trained on (1-30, default 7), shown as 'Initial training data range' in the UI
anomaly_triggerstringoptionalAnomaly trigger: 'any', 'higher', 'lower'
callbooleanoptionalPhone notifications
check_periodintegeroptionalHow often to run the alert check (seconds)
confirmation_periodintegeroptionalHow long the condition must persist before creating an incident (seconds)
emailbooleanoptionalEmail notifications
escalation_targetstringoptional'current_team' or a GID like gid://uptime/Policy/123 or gid://uptime/Team/456
incident_per_seriesbooleanoptionalWhen true, each alerting series opens its own incident instead of one shared incident
namestringoptionalNew name for the alert
operatorstringoptionalNew comparison operator
pushbooleanoptionalPush notifications
query_periodintegeroptionalSeconds to look back for relative alerts
recovery_periodintegeroptionalHow long the condition must be resolved before auto-resolving (seconds)
series_namesarrayoptionalSpecific series to monitor. Mutually exclusive with series_names_except
series_names_exceptarrayoptionalSeries to exclude; alert fires on every other series. Mutually exclusive with series_names
shown_intervalintegeroptionalAnomaly chart aggregation interval (seconds)
smsbooleanoptionalSMS notifications
valuenumberoptionalNew threshold value
betterstackmcp_edit_dashboard#Edit an existing dashboard's name or source eligibility. Only provide the fields you want to change. Use dashboard first to find the dashboard ID.3 params

Edit an existing dashboard's name or source eligibility. Only provide the fields you want to change. Use dashboard first to find the dashboard ID.

NameTypeRequiredDescription
idintegerrequiredThe ID of the dashboard to edit
namestringoptionalNew name for the dashboard
source_eligibility_sqlstringoptionalSource eligibility SQL — the ClickHouse query that decides which sources (and services) the dashboard applies to.
betterstackmcp_edit_dashboard_section#Edit an existing dashboard section. Only provide the fields you want to change. Use dashboard first to find the section ID4 params

Edit an existing dashboard section. Only provide the fields you want to change. Use dashboard first to find the section ID

NameTypeRequiredDescription
idintegerrequiredThe ID of the section to edit
collapsedbooleanoptionalWhether the section is collapsed (true = folded, false = expanded)
explanationstringoptionalShort description shown as a tooltip next to the section name. Pass an empty string to clear it.
namestringoptionalNew section title
betterstackmcp_error#Get comprehensive details of a specific error including its type, message, call site information, first occurrence, current state (unhandled, unresolved, ignored, resolved, or reoccurred), and linked Linear/Jira issues2 params

Get comprehensive details of a specific error including its type, message, call site information, first occurrence, current state (unhandled, unresolved, ignored, resolved, or reoccurred), and linked Linear/Jira issues

NameTypeRequiredDescription
application_idintegerrequiredThe ID of the application
patternstringrequiredThe error pattern identifier
betterstackmcp_errors#List error patterns for an application with occurrence counts, affected users, current state, and links. Defaults to unresolved errors and supports filtering by state. For specialized error analytics or custom SQL, use errors_query_help instead.9 params

List error patterns for an application with occurrence counts, affected users, current state, and links. Defaults to unresolved errors and supports filtering by state. For specialized error analytics or custom SQL, use errors_query_help instead.

NameTypeRequiredDescription
application_idintegerrequiredThe ID of the application
end_timestringoptionalEnd of time range (e.g. 'now'). Default: 'now'
environmentstringoptionalFilter by environment (for example, 'production' or 'staging')
order_bystringoptionalSort order. Default: 'last_seen'
pageintegeroptionalPage number for pagination (starts at 1)
querystringoptionalSearch by error type or message
releasestringoptionalFilter by release version
start_timestringoptionalStart of time range (e.g. 'now-3d', '2024-01-01T00:00:00Z'). Default: 'now-3d'
statestringoptionalFilter by error state. Defaults to 'unresolved'. 'unresolved' includes reoccurred errors and errors not yet triaged.
betterstackmcp_errors_query_help#Get comprehensive instructions for building SQL ClickHouse queries for error tracking, including both error patterns (metrics) and individual exceptions. Explains when to use each source and provides examples for common use cases1 param

Get comprehensive instructions for building SQL ClickHouse queries for error tracking, including both error patterns (metrics) and individual exceptions. Explains when to use each source and provides examples for common use cases

NameTypeRequiredDescription
application_idintegerrequiredThe application (source) ID
betterstackmcp_escalate_incident#Escalate an ongoing incident to a user, team, schedule, or policy13 params

Escalate an ongoing incident to a user, team, schedule, or policy

NameTypeRequiredDescription
escalation_typestringrequiredType of escalation: User, Team, Schedule, Policy, or Organization
idintegerrequiredThe ID of the incident to escalate
callbooleanoptionalSend phone call notification
critical_alertbooleanoptionalSend as critical alert
emailbooleanoptionalSend email notification
policy_idintegeroptionalDefine which escalation policy to escalate to. Required when escalating to Policy.
pushbooleanoptionalSend push notification
schedule_idintegeroptionalDefine which on-call calendar to escalate to. Required when escalating to Schedule.
smsbooleanoptionalSend SMS notification
team_idintegeroptionalDefine which team to escalate to. Either team_name or team_id required when escalating to Team.
team_namestringoptionalDefine which team to escalate to. Either team_name or team_id required when escalating to Team.
user_emailstringoptionalDefine which team member to escalate to. Either user_email or user_id required when escalating to User.
user_idintegeroptionalDefine which team member to escalate to. Either user_email or user_id required when escalating to User.
betterstackmcp_escalation_policies#List all escalation policies with their steps and configuration3 params

List all escalation policies with their steps and configuration

NameTypeRequiredDescription
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
team_idintegeroptionalFilter by team ID (use teams to get team IDs)
betterstackmcp_escalation_policy#Get detailed information about a specific escalation policy1 param

Get detailed information about a specific escalation policy

NameTypeRequiredDescription
idintegerrequiredThe ID of the escalation policy
betterstackmcp_explore_logs_query_help#Get instructions for writing a ClickHouse query to use inside the Better Stack Explore logs page (and live-tail charts) for log and span data. The query uses template variables and reads fields from the raw JSON column — it is meant to be used in the Explore UI, NOT run directly. To instead write an ad-hoc logs/spans query you will run directly via query, use query_help.2 params

Get instructions for writing a ClickHouse query to use inside the Better Stack Explore logs page (and live-tail charts) for log and span data. The query uses template variables and reads fields from the raw JSON column — it is meant to be used in the Explore UI, NOT run directly. To instead write an ad-hoc logs/spans query you will run directly via query, use query_help.

NameTypeRequiredDescription
idintegerrequiredThe source ID
source_typestringoptionalType of source data to query (default: logs)
betterstackmcp_export_dashboard#Export a dashboard configuration as JSON. Returns the complete dashboard data structure including charts, sections, presets, and settings1 param

Export a dashboard configuration as JSON. Returns the complete dashboard data structure including charts, sections, presets, and settings

NameTypeRequiredDescription
idintegerrequiredThe ID of the dashboard or dashboard template to export
betterstackmcp_heartbeat#Get details of a specific heartbeat1 param

Get details of a specific heartbeat

NameTypeRequiredDescription
idintegerrequiredThe ID of the heartbeat
betterstackmcp_heartbeat_availability#Get availability summary for a specific heartbeat3 params

Get availability summary for a specific heartbeat

NameTypeRequiredDescription
idintegerrequiredThe ID of the heartbeat
fromstringoptionalStart date (YYYY-MM-DD format)
tostringoptionalEnd date (YYYY-MM-DD format)
betterstackmcp_heartbeats#List all heartbeats with filtering and pagination options5 params

List all heartbeats with filtering and pagination options

NameTypeRequiredDescription
namestringoptionalFilter by heartbeat name
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
statusstringoptionalFilter by status (paused, pending, up, down)
team_idintegeroptionalFilter by team ID (use teams to get team IDs)
betterstackmcp_import_dashboard#Import a dashboard from JSON configuration. Creates a new dashboard with the provided data structure3 params

Import a dashboard from JSON configuration. Creates a new dashboard with the provided data structure

NameTypeRequiredDescription
datastringrequiredThe dashboard data as a JSON string (can be obtained from export_dashboard)
namestringrequiredThe name for the new dashboard
team_idintegerrequiredThe ID of the team to import the dashboard into (use teams to get team IDs)
betterstackmcp_incident#Get detailed information about a specific incident1 param

Get detailed information about a specific incident

NameTypeRequiredDescription
idintegerrequiredThe ID of the incident to retrieve
betterstackmcp_incident_comments#Get comments for an incident1 param

Get comments for an incident

NameTypeRequiredDescription
incident_idintegerrequiredThe ID of the incident
betterstackmcp_incident_timeline#Get the timeline of events for an incident1 param

Get the timeline of events for an incident

NameTypeRequiredDescription
idintegerrequiredThe ID of the incident
betterstackmcp_incidents#List incidents with filtering and pagination options20 params

List incidents with filtering and pagination options

NameTypeRequiredDescription
acknowledgedbooleanoptionalList only acknowledged incidents (true) or unacknowledged incidents (false).
causestringoptionalFilter by a substring of the incident cause (case-insensitive).
escalation_policy_idsarrayoptionalFilter to incidents associated with any of these escalation policies.
fromstringoptionalReturn incidents from a specific date (ISO 8601 format)
has_commentsbooleanoptionaltrue: only incidents with comments; false: only incidents without comments.
has_jira_taskbooleanoptionaltrue: only incidents linked to a Jira issue; false: only those without.
has_linear_taskbooleanoptionaltrue: only incidents linked to a Linear issue; false: only those without.
has_postmortembooleanoptionaltrue: only incidents with a post-mortem comment; false: only those without.
heartbeat_idintegeroptionalFilter incidents for a specific heartbeat
incident_group_idintegeroptionalFilter to incidents within a specific incident group.
max_duration_minutesintegeroptionalOnly incidents that lasted shorter than this many minutes.
metadataobjectoptionalFilter by metadata key/value.
min_duration_minutesintegeroptionalOnly incidents that lasted longer than this many minutes.
monitor_idintegeroptionalFilter incidents for a specific monitor
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 10, max: 50)
resolvedbooleanoptionalList only resolved incidents (true) or unresolved incidents (false).
statusarrayoptionalFilter by current lifecycle status. Pass an array to match any of them.
team_idintegeroptionalFilter by team ID (use teams to get team IDs)
tostringoptionalReturn incidents until a specific date (ISO 8601 format)
betterstackmcp_invite_team_member#Invite someone to a Better Stack team by e-mail address. Optionally set their role by system-role name (role: responder, member, team_lead, billing_admin) or by role_id (use team_roles to look up ids). Defaults to responder. The admin role cannot be assigned via the API. Someone who already belongs to the organization is added to the team directly, with no invitation to accept; an organization-wide role they hold (Admin, Billing admin) is kept. If the token can reach more than one team, pass team_id (or team_name).5 params

Invite someone to a Better Stack team by e-mail address. Optionally set their role by system-role name (role: responder, member, team_lead, billing_admin) or by role_id (use team_roles to look up ids). Defaults to responder. The admin role cannot be assigned via the API. Someone who already belongs to the organization is added to the team directly, with no invitation to accept; an organization-wide role they hold (Admin, Billing admin) is kept. If the token can reach more than one team, pass team_id (or team_name).

NameTypeRequiredDescription
emailstringrequiredE-mail address of the person to invite.
rolestringoptionalSystem-role name: responder, member, team_lead, or billing_admin. Defaults to responder. 'admin' is not allowed.
role_idintegeroptionalID of the role to assign (alternative to role; supports custom roles). Use team_roles to look up ids.
team_idintegeroptionalID of the team to invite into. Required when the token can access more than one team.
team_namestringoptionalName of the team to invite into (alternative to team_id).
betterstackmcp_metric#Get comprehensive details about a specific metric. Returns metric overview (data points, active series, available aggregations), definition (SQL expression or JSON path), example queries for different aggregation functions, and Prometheus tags (for pure metrics). Essential for understanding how to query and use a metric2 params

Get comprehensive details about a specific metric. Returns metric overview (data points, active series, available aggregations), definition (SQL expression or JSON path), example queries for different aggregation functions, and Prometheus tags (for pure metrics). Essential for understanding how to query and use a metric

NameTypeRequiredDescription
metric_namestringrequiredThe name of the metric
source_idintegerrequiredThe ID of the source
betterstackmcp_metric_expressions#List the metric expressions (extract-metrics-from-logs rules) on a source. Returns the rule ID, name, kind (metric vs label), ClickHouse type, SQL expression, and aggregations. IDs use a short prefixed form that feeds straight into update_metric_expression / delete_metric_expression3 params

List the metric expressions (extract-metrics-from-logs rules) on a source. Returns the rule ID, name, kind (metric vs label), ClickHouse type, SQL expression, and aggregations. IDs use a short prefixed form that feeds straight into update_metric_expression / delete_metric_expression

NameTypeRequiredDescription
source_idintegerrequiredThe ID of the source (use sources to get source IDs)
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
betterstackmcp_metrics_query_help#Get instructions for building SQL ClickHouse queries for metrics (available metrics, aggregations, examples) to run directly via the query tools (query / render_chart), using concrete remote(...) / s3Cluster(...) collection names and explicit time filters. To instead write a query for use inside a Dashboard chart, use dashboard_query_help. Pass context: 'chart_query' when the query will be saved as a dashboard chart or chart alert.2 params

Get instructions for building SQL ClickHouse queries for metrics (available metrics, aggregations, examples) to run directly via the query tools (query / render_chart), using concrete remote(...) / s3Cluster(...) collection names and explicit time filters. To instead write a query for use inside a Dashboard chart, use dashboard_query_help. Pass context: 'chart_query' when the query will be saved as a dashboard chart or chart alert.

NameTypeRequiredDescription
idintegerrequiredThe source ID
contextstringoptionalWhere the query will run. 'direct_query' (default) — running directly via query or render_chart; prompt uses concrete remote()/s3Cluster() collection names and explicit time filters. 'chart_query' — query will be saved as a dashboard chart or chart alert; prompt uses {{source}}/{{time}}/{{start_time}}/{{end_time}} template variables throughout.
betterstackmcp_metrics_schema#Get metrics and cardinality for a source. Returns a paginated table of available metrics (user-defined and ingested) ordered by active series (highest cardinality first), with their names, types, storage layout, data points count, and active series count. Sources with many metrics are paginated — use the page argument to read the rest3 params

Get metrics and cardinality for a source. Returns a paginated table of available metrics (user-defined and ingested) ordered by active series (highest cardinality first), with their names, types, storage layout, data points count, and active series count. Sources with many metrics are paginated — use the page argument to read the rest

NameTypeRequiredDescription
idintegerrequiredThe ID of the source
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
betterstackmcp_monitor#Get details of a specific monitor1 param

Get details of a specific monitor

NameTypeRequiredDescription
idintegerrequiredThe ID of the monitor
betterstackmcp_monitor_availability#Get availability (SLA) summary for a specific monitor3 params

Get availability (SLA) summary for a specific monitor

NameTypeRequiredDescription
idintegerrequiredThe ID of the monitor
fromstringoptionalStart date (YYYY-MM-DD format)
tostringoptionalEnd date (YYYY-MM-DD format)
betterstackmcp_monitor_response_times#Get response time metrics for a specific monitor1 param

Get response time metrics for a specific monitor

NameTypeRequiredDescription
idintegerrequiredThe ID of the monitor
betterstackmcp_monitors#List monitors with optional filtering and pagination5 params

List monitors with optional filtering and pagination

NameTypeRequiredDescription
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
pronounceable_namestringoptionalFilter monitors by name
team_idintegeroptionalFilter by team ID (use teams to get team IDs)
urlstringoptionalFilter monitors by URL
betterstackmcp_move_charts#Move one or more charts to new positions on a dashboard. Validates the final layout for overlaps, allowing swaps and complex rearrangements. All moves are applied atomically - if any move is invalid, none are applied. Grid is 12 columns wide2 params

Move one or more charts to new positions on a dashboard. Validates the final layout for overlaps, allowing swaps and complex rearrangements. All moves are applied atomically - if any move is invalid, none are applied. Grid is 12 columns wide

NameTypeRequiredDescription
dashboard_idintegerrequiredThe ID of the dashboard
movesarrayrequiredArray of chart moves
betterstackmcp_on_call#Get detailed information about a specific on-call calendar or the default calendar2 params

Get detailed information about a specific on-call calendar or the default calendar

NameTypeRequiredDescription
datestringoptionalISO-8601 formatted date/time to look up who is on-call at that time
idstringoptionalThe ID of the on-call calendar (use "default" for team's default calendar)
betterstackmcp_on_call_event#Get detailed information about a specific on-call event2 params

Get detailed information about a specific on-call event

NameTypeRequiredDescription
calendar_idstringrequiredThe ID of the on-call calendar (use "default" for team's default calendar)
event_idintegerrequiredThe ID of the event to retrieve
betterstackmcp_on_call_events#List all on-call schedule events for a specific calendar1 param

List all on-call schedule events for a specific calendar

NameTypeRequiredDescription
idstringrequiredThe ID of the on-call calendar (use "default" for team's default calendar)
betterstackmcp_on_call_rotation#Get on-call rotation configuration for a specific calendar1 param

Get on-call rotation configuration for a specific calendar

NameTypeRequiredDescription
idstringrequiredThe ID of the on-call calendar (use "default" for team's default calendar)
betterstackmcp_on_calls#List all on-call calendars for the team3 params

List all on-call calendars for the team

NameTypeRequiredDescription
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
team_idintegeroptionalFilter by team ID (use teams to get team IDs)
betterstackmcp_query#Execute a ClickHouse SQL query to retrieve logs, traces/spans, errors, and metrics from telemetry data. - **IMPORANT**: Use `query_help` to get instructions on how to create the correct query for logs and spans - **IMPORANT**: Use `errors_query_help` to get instructions on how to create the correct query for errors - **IMPORANT**: Use `metrics_query_help` to get instructions on how to create the correct query for metrics6 params

Execute a ClickHouse SQL query to retrieve logs, traces/spans, errors, and metrics from telemetry data. - **IMPORANT**: Use `query_help` to get instructions on how to create the correct query for logs and spans - **IMPORANT**: Use `errors_query_help` to get instructions on how to create the correct query for errors - **IMPORANT**: Use `metrics_query_help` to get instructions on how to create the correct query for metrics

NameTypeRequiredDescription
querystringrequiredThe SQL query to execute
source_idnumberrequiredSource ID
tablestringrequiredTable name, ie. `t123.my_source`
hoststringoptionalClickHouse host URL.
passwordstringoptionalPassword for ClickHouse authentication.
usernamestringoptionalUsername for ClickHouse authentication.
betterstackmcp_query_help#Get instructions for building SQL ClickHouse queries for logs and spans (fields, aggregations, examples) to run directly via the query tools (query / render_chart) against the ClickHouse proxy. To instead write a query for use inside the Explore logs UI, use explore_logs_query_help.2 params

Get instructions for building SQL ClickHouse queries for logs and spans (fields, aggregations, examples) to run directly via the query tools (query / render_chart) against the ClickHouse proxy. To instead write a query for use inside the Explore logs UI, use explore_logs_query_help.

NameTypeRequiredDescription
idintegerrequiredThe source ID
source_typestringrequiredThe type of source (logs or spans)
betterstackmcp_releases#List all releases for a specific application in a paginated table format. Returns release reference, environments, first seen, and last seen timestamps4 params

List all releases for a specific application in a paginated table format. Returns release reference, environments, first seen, and last seen timestamps

NameTypeRequiredDescription
application_idintegerrequiredThe ID of the application to list releases for
orderstringoptionalSort order: 'asc' or 'desc' (default: 'desc')
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
betterstackmcp_remove_chart#Remove a chart from its dashboard permanently. This action cannot be undone and will also remove any alerts associated with the chart. Use dashboard first to find the chart ID1 param

Remove a chart from its dashboard permanently. This action cannot be undone and will also remove any alerts associated with the chart. Use dashboard first to find the chart ID

NameTypeRequiredDescription
idintegerrequiredThe ID of the chart to remove
betterstackmcp_remove_dashboard#Remove a dashboard permanently. This action cannot be undone1 param

Remove a dashboard permanently. This action cannot be undone

NameTypeRequiredDescription
idintegerrequiredThe ID of the dashboard to remove
betterstackmcp_remove_dashboard_section#Remove a section divider from a dashboard permanently. This action cannot be undone. Charts are not affected - only the section header is removed. Use dashboard first to find the section ID1 param

Remove a section divider from a dashboard permanently. This action cannot be undone. Charts are not affected - only the section header is removed. Use dashboard first to find the section ID

NameTypeRequiredDescription
idintegerrequiredThe ID of the section to remove
betterstackmcp_remove_dashboard_variable#Remove a dashboard template variable by name. Cannot remove the automatic variables source, start_time, end_time, or time. A chart still referencing a removed variable as a required {{name}} errors until it is redefined (the next chart save auto-creates it again, empty). Use dashboard first to see the defined variables.2 params

Remove a dashboard template variable by name. Cannot remove the automatic variables source, start_time, end_time, or time. A chart still referencing a removed variable as a required {{name}} errors until it is redefined (the next chart save auto-creates it again, empty). Use dashboard first to see the defined variables.

NameTypeRequiredDescription
dashboard_idintegerrequiredThe ID of the dashboard
namestringrequiredName of the variable to remove
betterstackmcp_remove_status_page_resource#Remove a resource from a status page.2 params

Remove a resource from a status page.

NameTypeRequiredDescription
resource_idintegerrequiredThe ID of the status page resource to remove (from status_page_resources)
status_page_idintegerrequiredThe ID of the status page
betterstackmcp_remove_status_page_section#Remove a section from a status page. Resources in the section are removed with it.2 params

Remove a section from a status page. Resources in the section are removed with it.

NameTypeRequiredDescription
section_idintegerrequiredThe ID of the section to remove (from status_page_sections)
status_page_idintegerrequiredThe ID of the status page
betterstackmcp_remove_team_member#Remove a member from a Better Stack team, or cancel a pending invitation. Identify them by email or user_id (from team_members). Admins cannot be removed via the API, and the organization's last member cannot be removed. If the token can reach more than one team, pass team_id (or team_name). This permanently removes the person's access to the team.4 params

Remove a member from a Better Stack team, or cancel a pending invitation. Identify them by email or user_id (from team_members). Admins cannot be removed via the API, and the organization's last member cannot be removed. If the token can reach more than one team, pass team_id (or team_name). This permanently removes the person's access to the team.

NameTypeRequiredDescription
emailstringoptionalE-mail of the member to remove, or of a pending invitation to cancel (alternative to user_id).
team_idintegeroptionalID of the team to remove from. Required when the token can access more than one team.
team_namestringoptionalName of the team (alternative to team_id).
user_idintegeroptionalID of the member to remove, or of a pending invitation to cancel — the id column from team_members (alternative to email).
betterstackmcp_render_chart#Execute a ClickHouse SQL query and visualize the result as a chart. Use `chart_type` to choose the visualization: - `line` (default) — trends over time. Alias columns as `time`, `value`, and optional `series`. - `bar` — magnitude over time or across buckets. Uses the same columns as `line`; set `stacked: true` to stack the series. - `pie` — share of a total across categories. Alias a categorical column `AS series` (the slice label) and a numeric column `AS value` (the slice size).9 params

Execute a ClickHouse SQL query and visualize the result as a chart. Use `chart_type` to choose the visualization: - `line` (default) — trends over time. Alias columns as `time`, `value`, and optional `series`. - `bar` — magnitude over time or across buckets. Uses the same columns as `line`; set `stacked: true` to stack the series. - `pie` — share of a total across categories. Alias a categorical column `AS series` (the slice label) and a numeric column `AS value` (the slice size).

NameTypeRequiredDescription
querystringrequiredThe SQL query to execute
source_idnumberrequiredSource ID
tablestringrequiredTable name, ie. `t123.my_source`
chart_typestringoptionalHow to visualize the result: `line` (trends over time, default), `bar` (magnitude over time or across buckets), or `pie` (share of a total across categories).
hoststringoptionalClickHouse host URL.
namestringoptionalChart name or title.
passwordstringoptionalPassword for ClickHouse authentication.
stackedbooleanoptionalStack the series on top of each other. Applies to `line` and `bar` charts.
usernamestringoptionalUsername for ClickHouse authentication.
betterstackmcp_reopen_incident#Reopen a resolved incident (must be within 24 hours of resolution)2 params

Reopen a resolved incident (must be within 24 hours of resolution)

NameTypeRequiredDescription
idintegerrequiredThe ID of the incident to reopen
reopened_bystringoptionalUser email or identifier of who reopened the incident.
betterstackmcp_replays_query_help#Get comprehensive instructions for building SQL ClickHouse queries for session replays. Explains data structure, provides examples for listing replays, finding replays linked to errors, and filtering by user/environment1 param

Get comprehensive instructions for building SQL ClickHouse queries for session replays. Explains data structure, provides examples for listing replays, finding replays linked to errors, and filtering by user/environment

NameTypeRequiredDescription
application_idintegerrequiredThe application (source) ID
betterstackmcp_resolve_incident#Resolve an ongoing incident2 params

Resolve an ongoing incident

NameTypeRequiredDescription
idintegerrequiredThe ID of the incident to resolve
resolved_bystringoptionalUser email or identifier of who resolved the incident.
betterstackmcp_set_dashboard_variable#Create or update a dashboard template variable — a user-facing filter in the dashboard toolbar, referenced in chart SQL as {{name}} (required — the chart errors until it resolves to a value) or [[ AND col = {{name}} ]] (optional — the whole [[ ... ]] clause is dropped while the variable is empty). Saving a chart auto-creates a plain text variable (or a source variable when the name contains 'source') for any undefined required {{name}}, but it starts empty — use this tool to give it a typed definition or a default value so the chart resolves without manual input. Fields per type: select_value (Static list) uses default_values (first = default selection); select_with_sql (Dynamic list) uses an option-yielding expression in sql_definition, e.g. label('_host'); both list types accept allow_multiple_values to let users pick several options at once; select_predefined_sql (Query per value) uses named full-query SQL filters in `filters`, default picked via selected_label; string/number/boolean use default_values as [default]; sql_expression uses default_values as [raw SQL] spliced unescaped; source uses source_ids to pick which sources the variable resolves to; date/datetime use an ISO date in default_values. SQL-backed types are validated at save time by running their SQL against the dashboard's source. The names source, start_time, end_time, and time are reserved.9 params

Create or update a dashboard template variable — a user-facing filter in the dashboard toolbar, referenced in chart SQL as {{name}} (required — the chart errors until it resolves to a value) or [[ AND col = {{name}} ]] (optional — the whole [[ ... ]] clause is dropped while the variable is empty). Saving a chart auto-creates a plain text variable (or a source variable when the name contains 'source') for any undefined required {{name}}, but it starts empty — use this tool to give it a typed definition or a default value so the chart resolves without manual input. Fields per type: select_value (Static list) uses default_values (first = default selection); select_with_sql (Dynamic list) uses an option-yielding expression in sql_definition, e.g. label('_host'); both list types accept allow_multiple_values to let users pick several options at once; select_predefined_sql (Query per value) uses named full-query SQL filters in `filters`, default picked via selected_label; string/number/boolean use default_values as [default]; sql_expression uses default_values as [raw SQL] spliced unescaped; source uses source_ids to pick which sources the variable resolves to; date/datetime use an ISO date in default_values. SQL-backed types are validated at save time by running their SQL against the dashboard's source. The names source, start_time, end_time, and time are reserved.

NameTypeRequiredDescription
dashboard_idintegerrequiredThe ID of the dashboard
namestringrequiredVariable name used as {{name}} in chart queries
variable_typestringrequiredThe variable type
allow_multiple_valuesbooleanoptionalselect_value / select_with_sql: let users pick several options at once; the variable then interpolates as a quoted regex used with match(), never IN. Ignored for other types.
default_valuesarrayoptionalselect_value: the options (first = default). string/number/boolean: [default]. sql_expression: [raw SQL]. date/datetime: [ISO date], e.g. ['2026-07-23T14:30:00Z'].
filtersarrayoptionalselect_predefined_sql: named SQL filters. Unlike sql_definition, each sql is a FULL query returning one column, whose rows are injected into the chart as an IN-list. Filter time with dt BETWEEN {{start_time}} AND {{end_time}}, never {{time}}.
selected_labelstringoptionalselect_predefined_sql: the default filter label.
source_idsarrayoptionalsource: the source IDs this variable resolves to (must be accessible to the dashboard's team). Ignored for other types.
sql_definitionstringoptionalselect_with_sql / multi_select_with_sql: an expression (NOT a full query) yielding the option values — interpolated as SELECT DISTINCT <sql_definition> AS option FROM {{source}} WHERE dt BETWEEN {{start_time}} AND {{end_time}} LIMIT 50. Example: label('_host').
betterstackmcp_severities#List all severities (urgency levels) with their notification settings3 params

List all severities (urgency levels) with their notification settings

NameTypeRequiredDescription
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
team_idintegeroptionalFilter by team ID (use teams to get team IDs)
betterstackmcp_severity#Get detailed information about a specific severity (urgency level)1 param

Get detailed information about a specific severity (urgency level)

NameTypeRequiredDescription
idintegerrequiredThe ID of the severity
betterstackmcp_source#Get comprehensive details of a specific source including its configuration, retention settings, ingestion details, custom bucket settings (if configured)1 param

Get comprehensive details of a specific source including its configuration, retention settings, ingestion details, custom bucket settings (if configured)

NameTypeRequiredDescription
idintegerrequiredThe ID of the source
betterstackmcp_source_fields#Get complete field catalog for a logs or spans source. Returns a table of all queryable fields with their paths and data types. Essential for understanding what fields can be queried for building custom queries2 params

Get complete field catalog for a logs or spans source. Returns a table of all queryable fields with their paths and data types. Essential for understanding what fields can be queried for building custom queries

NameTypeRequiredDescription
idintegerrequiredThe ID of the source
source_typestringoptionalType of source data to query (default: logs)
betterstackmcp_sources#List all available sources in a paginated table format. Returns source ID, name, platform type, team, status (active/paused), data region, and creation date4 params

List all available sources in a paginated table format. Returns source ID, name, platform type, team, status (active/paused), data region, and creation date

NameTypeRequiredDescription
namestringoptionalFilter sources by name (case-insensitive partial match)
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
team_idintegeroptionalFilter sources by team ID (use teams to get team IDs)
betterstackmcp_status_page#Get details of a specific status page1 param

Get details of a specific status page

NameTypeRequiredDescription
idintegerrequiredThe ID of the status page
betterstackmcp_status_page_report_update#Get details of a specific status page report update3 params

Get details of a specific status page report update

NameTypeRequiredDescription
report_idintegerrequiredThe ID of the status report
status_page_idintegerrequiredThe ID of the status page
update_idintegerrequiredThe ID of the status update
betterstackmcp_status_page_report_updates#List status updates for a specific status report4 params

List status updates for a specific status report

NameTypeRequiredDescription
report_idintegerrequiredThe ID of the status report
status_page_idintegerrequiredThe ID of the status page
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
betterstackmcp_status_page_reports#List status reports (incidents/maintenance) for a specific status page4 params

List status reports (incidents/maintenance) for a specific status page

NameTypeRequiredDescription
status_page_idintegerrequiredThe ID of the status page
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
team_idintegeroptionalFilter by team ID (use teams to get team IDs)
betterstackmcp_status_page_resources#Get resources (monitors/heartbeats) for a specific status page3 params

Get resources (monitors/heartbeats) for a specific status page

NameTypeRequiredDescription
status_page_idintegerrequiredThe ID of the status page
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
betterstackmcp_status_page_sections#List the sections (resource groups) of a status page.3 params

List the sections (resource groups) of a status page.

NameTypeRequiredDescription
status_page_idintegerrequiredThe ID of the status page
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
betterstackmcp_status_pages#List all status pages with filtering and pagination options2 params

List all status pages with filtering and pagination options

NameTypeRequiredDescription
pageintegeroptionalPage number for pagination (starts at 1)
per_pageintegeroptionalNumber of results per page (default: 50, max: 250)
betterstackmcp_team_members#List the members of a Better Stack team, including pending invitations. Returns each member's email, name, role and the mobile app platforms they have signed in on. Supports the same email filter and pagination as the REST team-members API. If the token can reach more than one team, pass team_id (or team_name) to pick one; call it without a team first to see the list of accessible teams. Useful for auditing who has access — e.g. offboarding.5 params

List the members of a Better Stack team, including pending invitations. Returns each member's email, name, role and the mobile app platforms they have signed in on. Supports the same email filter and pagination as the REST team-members API. If the token can reach more than one team, pass team_id (or team_name) to pick one; call it without a team first to see the list of accessible teams. Useful for auditing who has access — e.g. offboarding.

NameTypeRequiredDescription
emailstringoptionalReturn only the member or pending invitation with this exact email address.
pageintegeroptionalPage number (1-based). Defaults to 1.
per_pageintegeroptionalResults per page. Defaults to 50, maximum 250.
team_idintegeroptionalID of the team to list members for. Required when the token can access more than one team.
team_namestringoptionalName of the team to list members for (alternative to team_id).
betterstackmcp_team_roles#List the roles defined in a Better Stack organization, including their role_id and system-role identifier (admin, billing_admin, team_lead, responder, member, or "custom"). Use this to discover valid role_id values for interpreting team member roles. If the token can reach more than one team/organization, pass team_id (or team_name) to choose one.2 params

List the roles defined in a Better Stack organization, including their role_id and system-role identifier (admin, billing_admin, team_lead, responder, member, or "custom"). Use this to discover valid role_id values for interpreting team member roles. If the token can reach more than one team/organization, pass team_id (or team_name) to choose one.

NameTypeRequiredDescription
team_idintegeroptionalID of a team in the target organization. Required when the token can access more than one team.
team_namestringoptionalName of a team in the target organization (alternative to team_id).
betterstackmcp_teams#List all available teams in Better Stack Logs. Returns a table with team IDs and names, grouped by organization1 param

List all available teams in Better Stack Logs. Returns a table with team IDs and names, grouped by organization

NameTypeRequiredDescription
searchstringoptionalFilter teams by name (case-insensitive partial match)
betterstackmcp_toggle_chart_alert_pause#Pause or unpause a chart alert. When paused, the alert will not trigger any incidents2 params

Pause or unpause a chart alert. When paused, the alert will not trigger any incidents

NameTypeRequiredDescription
idintegerrequiredThe ID of the chart alert
pausedbooleanrequiredSet to true to pause, false to unpause
betterstackmcp_update_error_state#Update the state of a specific error (mark as resolved, ignored, or unresolved)6 params

Update the state of a specific error (mark as resolved, ignored, or unresolved)

NameTypeRequiredDescription
application_idintegerrequiredThe ID of the application
patternstringrequiredThe error pattern identifier
statestringrequiredThe target state
ignore_next_countintegeroptionalNumber of next occurrences to ignore (only valid when state is 'ignored'). Must be 1, 10, 100, or 1000
notify_every_exceptionbooleanoptionalWhether to notify for every occurrence of this error
resolve_in_releasestringoptionalPin the resolution to the application's latest release. The error will only re-open if it appears in a strictly newer release. Only valid when state is 'resolved'.
betterstackmcp_update_metric_expression#Update an existing metric expression. Call `metric_expressions` first to get the ID. At least one of `name`, `sql_expression`, `type`, `aggregations` must be provided — `build_type` alone is not a change and will be rejected. Prefer `build_type: new_data` (default). `historical_logs` re-runs the rule over every stored log — expensive; only when the user explicitly asks.7 params

Update an existing metric expression. Call `metric_expressions` first to get the ID. At least one of `name`, `sql_expression`, `type`, `aggregations` must be provided — `build_type` alone is not a change and will be rejected. Prefer `build_type: new_data` (default). `historical_logs` re-runs the rule over every stored log — expensive; only when the user explicitly asks.

NameTypeRequiredDescription
idstringrequiredThe metric expression ID returned by metric_expressions, e.g. "m-123" or "g-456"
source_idintegerrequiredThe ID of the source (use sources to get source IDs)
aggregationsarrayoptionalNew set of aggregations. Pass [] to convert to a label (group-by column)
build_typestringoptionalHow to process existing data: 'new_data' (default) only applies to new logs; 'historical_logs' rebuilds metrics from existing logs
namestringoptionalNew metric name. Letters, numbers, and underscores only
sql_expressionstringoptionalNew ClickHouse SQL expression
typestringoptionalNew ClickHouse storage type
betterstackmcp_update_status_page#Update the settings of a status page (company name, contact URL, theme, layout, and more).13 params

Update the settings of a status page (company name, contact URL, theme, layout, and more).

NameTypeRequiredDescription
idintegerrequiredThe ID of the status page
announcementstringoptionalAnnouncement banner text shown at the top of the page
company_namestringoptionalCompany name shown as the status page title
company_urlstringoptionalURL the company name links to
contact_urlstringoptionalURL or mailto link for the contact/support button
custom_domainstringoptionalCustom CNAME domain for the status page
hide_from_search_enginesbooleanoptionalHide the status page from search engines
layoutstringoptionalResource layout
publishedbooleanoptionalWhether the status page is published (publicly visible)
subdomainstringoptionalSubdomain the page is served on (e.g. "acme" for acme.betteruptime.com)
subscribablebooleanoptionalWhether visitors can subscribe to updates
themestringoptionalColor theme
timezonestringoptionalTimezone used to display times (e.g. "Europe/Prague")
betterstackmcp_update_status_page_resource#Update a resource on a status page. Change its public name, description, widget type (e.g. show or hide the uptime history), or move it by setting position (zero-based) and/or status_page_section_id. Use status_page_resources to find resource IDs.7 params

Update a resource on a status page. Change its public name, description, widget type (e.g. show or hide the uptime history), or move it by setting position (zero-based) and/or status_page_section_id. Use status_page_resources to find resource IDs.

NameTypeRequiredDescription
resource_idintegerrequiredThe ID of the status page resource to update (from status_page_resources)
status_page_idintegerrequiredThe ID of the status page
explanationstringoptionalDescription shown under the resource
positionintegeroptionalZero-based position of the resource within its section
public_namestringoptionalName shown to visitors
status_page_section_idintegeroptionalMove the resource to this section (use status_page_sections to list them)
widget_typestringoptionalHow the resource is displayed. "history" shows the daily uptime bar, "plain" hides it.
betterstackmcp_update_status_page_section#Rename a status page section or move it by setting its position.4 params

Rename a status page section or move it by setting its position.

NameTypeRequiredDescription
section_idintegerrequiredThe ID of the section to update (from status_page_sections)
status_page_idintegerrequiredThe ID of the status page
namestringoptionalThe section heading shown to visitors
positionintegeroptionalZero-based position of the section on the status page