Better Stack API Patterns · git:20260301.5d3417a · 2026-03-01 · sha256 770a27bcc1fdf2db
Better Stack API Patterns git:20260301.5d3417aB
Immutable. This exact content is served forever at /api/v1/blob/770a27bcc1fdf2db.
--- description: > Use this skill when working with BetterStack MCP tools - authentication, hosted MCP connection details, complete tool reference across 8 categories (monitoring, on-call, incidents, status pages, telemetry, dashboards, error tracking), cursor-based pagination, tool filtering headers, and rate limits. BetterStack covers Uptime and Telemetry products in a single MCP server. triggers: - betterstack api - betterstack mcp - betterstack token - betterstack authentication - betterstack tools - betterstack connection - betterstack pagination - betterstack rate limit - betterstack credentials - betterstack uptime api - betterstack telemetry api --- # BetterStack MCP Tools & API Patterns ## Overview BetterStack provides an official hosted MCP server at `mcp.betterstack.com` covering three products in one server: **Uptime** (monitors, on-call, incidents, status pages), **Telemetry** (logs, metrics, ClickHouse SQL, dashboards), and **Error Tracking** (exceptions, releases). When accessed through the MCP Gateway, the Bearer token is injected automatically. The server supports tool allowlist/blocklist filtering via gateway-injected headers — useful for restricting tenant access to specific product areas. ## Authentication ### Header Format ``` Authorization: Bearer <api-token> ``` ### Token Types | Token Type | Scope | Where to Generate | |------------|-------|-------------------| | **Global API Token** | All products, all teams | Better Stack → API tokens → Global API tokens | | **Uptime API Token** | Uptime product only, team-scoped | Better Stack → API tokens → (select team) → Uptime API tokens | Use the **Global API Token** for full MCP access across Uptime, Telemetry, and Error Tracking. ### How the Gateway Injects Credentials The MCP Gateway stores your token as an org credential and automatically forwards: ``` Authorization: Bearer <stored-api-token> ``` ## Tool Filtering (Gateway Feature) BetterStack's MCP server supports per-request tool filtering via custom headers. The gateway can inject these to restrict access per tenant: ``` X-MCP-Tools-Only: list_monitors,get_monitor,list_incidents X-MCP-Tools-Except: create_monitor,delete_monitor,update_monitor ``` This is useful for giving read-only access to certain teams without building separate credentials. ## Complete MCP Tool Reference (8 categories) ### Monitoring Tools | Tool | Description | |------|-------------| | `list_monitors` | List all monitors with status and uptime metrics | | `get_monitor` | Get monitor details (URL, threshold, check interval) | | `create_monitor` | Create a new uptime monitor | | `update_monitor` | Update monitor settings | | `delete_monitor` | Delete a monitor | | `pause_monitor` | Pause monitoring (during maintenance) | | `resume_monitor` | Resume a paused monitor | ### Heartbeat Monitoring | Tool | Description | |------|-------------| | `list_heartbeats` | List all heartbeats | | `get_heartbeat` | Get heartbeat details | | `create_heartbeat` | Create a heartbeat monitor | | `update_heartbeat` | Update heartbeat settings | | `delete_heartbeat` | Delete a heartbeat | ### Incident Management | Tool | Description | |------|-------------| | `list_incidents` | List incidents with status and severity filters | | `get_incident` | Get incident details | | `create_incident` | Create a manual incident | | `acknowledge_incident` | Acknowledge an active incident | | `resolve_incident` | Resolve an incident | ### On-Call Scheduling | Tool | Description | |------|-------------| | `list_on_call_schedules` | List all on-call schedules | | `get_on_call_schedule` | Get schedule details with rotation | | `create_on_call_schedule` | Create a new schedule | | `update_on_call_schedule` | Update schedule settings | | `delete_on_call_schedule` | Delete a schedule | | `list_schedule_policies` | List escalation/notification policies | ### Status Pages | Tool | Description | |------|-------------| | `list_status_pages` | List all status pages | | `get_status_page` | Get status page details | | `create_status_page` | Create a new status page | | `update_status_page` | Update status page settings | | `list_status_page_sections` | List sections on a status page | | `create_status_page_incident` | Post an incident update to status page | ### Query Execution (Telemetry) | Tool | Description | |------|-------------| | `execute_query` | Run ClickHouse SQL against log/metric data | | `list_saved_queries` | List saved query templates | | `get_saved_query` | Get a saved query | ### Dashboards (Telemetry) | Tool | Description | |------|-------------| | `list_dashboards` | List all dashboards | | `get_dashboard` | Get dashboard details and panels | | `create_dashboard` | Create a new dashboard | | `list_dashboard_panels` | List panels on a dashboard | ### Applications (Error Tracking) | Tool | Description | |------|-------------| | `list_applications` | List error tracking applications | | `get_application` | Get application error tracking details | | `list_releases` | List application releases | | `create_release` | Register a new release (for error tracking) | ## Pagination BetterStack uses cursor-based pagination: | Parameter | Description | |-----------|-------------| | `per_page` | Results per page (max 50) | | `page[after]` | Cursor from previous response to fetch next page | **Pattern:** 1. Call tool with `per_page=50` 2. Check `pagination.next` in response — if present, it contains the cursor URL 3. Extract the `page[after]` cursor and pass to the next call 4. Continue until `pagination.next` is null ## Error Handling | HTTP Code | Cause | Resolution | |-----------|-------|------------| | 401 | Invalid token | Verify token; check it's a Global or Uptime API token | | 403 | Token lacks permissions | Global token needed for Telemetry/Error Tracking | | 404 | Resource not found | Verify ID with a list call | | 422 | Validation error | Check required fields in the request | | 429 | Rate limited | Back off 30 seconds; retry | | 503 | BetterStack maintenance | Check status.betterstack.com | ## Best Practices 1. **Use Global API Token** — Required for Telemetry and Error Tracking tools; Uptime-only tokens return 403 on those endpoints 2. **Use `X-MCP-Tools-Only` header** — Restrict tenants to only the tools they need 3. **Paginate large monitor lists** — Large accounts can have hundreds of monitors 4. **Prefer ClickHouse SQL for log analysis** — `execute_query` is more powerful than browsing the UI for log patterns 5. **Pause monitors during maintenance** — Prevents false-positive incident creation and on-call pages ## Related Skills - [Uptime Monitoring](../uptime/SKILL.md) — Monitors, heartbeats, incidents, status pages - [On-Call Management](../oncall/SKILL.md) — Schedules, escalation, incident workflows