MCP Reference
StatiBeat exposes one customer MCP surface: Hosted MCP. It uses remote HTTP transport, OAuth consent, multi-page discovery, explicit page scoping, existing page permissions, audited writes, and product-managed connector revocation.
Use Hosted MCP for setup and rollout guidance.
Endpoint and OAuth discovery
The Hosted MCP admin screen publishes the resource URL for the current environment. Clients use:
/mcpfor JSON-RPC MCP transport/.well-known/oauth-protected-resourcefor protected-resource metadata/.well-known/oauth-authorization-serverfor authorization-server metadata/mcp/oauth/authorizefor browser authorization and consent/mcp/oauth/tokenfor authorization-code and refresh-token exchange/mcp/oauth/revokefor token revocation
Authorization uses code plus PKCE S256, does not use a client secret, and supports authorization_code and refresh_token grants. Authorization codes expire after 10 minutes, access tokens after 1 hour, and refresh tokens after 30 days.
The product also uses browser-session management routes at /api/v1/admin/hosted-mcp/settings and /api/v1/admin/hosted-mcp/connections/{id}/revoke. Those are UI management endpoints, not API-token automation endpoints.
Resources
Hosted MCP always exposes:
statibeat://me
With mcp.pages.read:
statibeat://pagesstatibeat://pages/{page_id}/summarystatibeat://pages/{page_id}/status-definitionsstatibeat://pages/{page_id}/lifecycle/stagesstatibeat://pages/{page_id}/maintenance-lifecycle/stagesstatibeat://pages/{page_id}/hierarchy/treestatibeat://pages/{page_id}/embeds
With mcp.subscribers.read:
statibeat://pages/{page_id}/subscribers/summary
With mcp.incidents.read:
statibeat://pages/{page_id}/incidents/activestatibeat://pages/{page_id}/incidents/resolved?limit={limit}statibeat://pages/{page_id}/incidents/{incident_id}statibeat://pages/{page_id}/incidents/{incident_id}/updates?limit={limit}
With mcp.maintenances.read:
statibeat://pages/{page_id}/maintenances/activestatibeat://pages/{page_id}/maintenances/upcomingstatibeat://pages/{page_id}/maintenances?filter={filter}statibeat://pages/{page_id}/maintenances/{maintenance_id}statibeat://pages/{page_id}/maintenances/{maintenance_id}/updates?limit={limit}
The maintenance filter accepts active, upcoming, past, or scheduled.
With mcp.analytics.read:
statibeat://pages/{page_id}/analytics/summary?window_days={window_days}
With mcp.beats.read:
statibeat://pages/{page_id}/beatsstatibeat://pages/{page_id}/beat-groupsstatibeat://pages/{page_id}/beats/pending-actionsstatibeat://pages/{page_id}/beats/recent-failures?limit={limit}statibeat://pages/{page_id}/beats/{monitor_id}/recent-events?limit={limit}
Timeline limit parameters default to 20 and cap at 200. Analytics window_days defaults to 30 and caps at 90.
Scopes and page permissions
| OAuth scope | Page permission requirement |
|---|---|
mcp.pages.read | Page read plus the relevant catalog, hierarchy, settings, or embed read permission |
mcp.beats.read | Synthetic monitor read; pending Beat actions additionally require synthetic monitor manage |
mcp.beats.write | Synthetic monitor manage |
mcp.incidents.read | Incident read |
mcp.incidents.write | Incident manage |
mcp.maintenances.read | Maintenance read |
mcp.maintenances.write | Maintenance manage |
mcp.analytics.read | Analytics read |
mcp.subscribers.read | Subscriber read |
OAuth consent does not override existing StatiBeat permissions. Page-bound resources, prompts, and tools require an explicit page_id.
Prompts
Hosted prompts are scope-gated:
draft_customer_incidentdraft_incident_updateedit_incidentresolve_incidentreview_existing_incident_stateplan_maintenance_windowdraft_maintenance_updatesummarize_current_beat_healthinvestigate_beat_failurereview_pending_beat_actionreview_beat_action
Tools
With any Hosted MCP write scope:
draft_changevalidate_changeapply_changecancel_change
The typed change workflow supports every Hosted MCP write action listed below. It validates the selected page, OAuth scope, page permission, target record, and action fields before returning a deterministic draft ID. apply_change rejects the request until the caller sends both the unchanged draft and explicit confirmation.
With mcp.incidents.write:
create_incidentbackfill_incidentupdate_incidentadd_incident_updateacknowledge_incidentresolve_incidentreopen_incidentdelete_incident
With mcp.maintenances.write:
schedule_maintenanceupdate_maintenanceadd_maintenance_updatecomplete_maintenancecancel_maintenancedelete_maintenance
With mcp.beats.write:
run_beatapprove_beat_actionreject_beat_action
Every write tool requires an explicit page_id, the matching OAuth scope, and the signed-in user's existing page permission. Destructive tools are marked as destructive in MCP metadata, and writes carry Hosted MCP rate-limit and audit context.
backfill_incident posts a historical incident that has already been resolved. It requires the incident title, description, started_at, and resolved_at; it also accepts affected scope, acknowledged_at, and timestamped timeline updates. It writes resolved history without replaying live subscriber or Slack notifications for the past event.
Direct operational tools remain available for clients that implement their own confirmation UX. Clients without a trusted confirmation interface should use the typed change workflow.