What it is
RealUptime runs a standalone Model Context Protocol server at https://mcp.realuptime.io/mcp, a stateless HTTP endpoint (JSON-RPC 2.0, no session state) that exposes nine tools mirroring the REST API exactly. Point any MCP client at that URL with a bearer key, and it can list your monitors, pull a check's live status, create or update checks, and open, update, and read incidents, the same data and the same rules as the dashboard, just callable by an agent instead of a human clicking around.
Read access is free: any account can generate a key and call the four read tools below. Write access (creating or changing a check, or opening and updating an incident) requires a Growth or Scale plan, the same rule the REST API enforces for every endpoint, reads included. See the full API reference for authentication, rate limits, and every REST endpoint the MCP tools mirror.
The nine tools
| Tool | Equivalent to | Scope required | Arguments |
|---|---|---|---|
list_checks | GET /checks | read | none |
get_check_status | GET /checks/:id | read | checkId (uuid) |
create_check | POST /checks | read_write | name, url, intervalSeconds?, regions? |
update_check_regions | PATCH /checks/:id | read_write | checkId (uuid), regions |
delete_check | DELETE /checks/:id | read_write | checkId (uuid) |
list_status_pages | GET /status-pages | read | none |
list_incidents | GET /incidents | read | limit? (1 to 500) |
create_incident | POST /incidents | read_write | statusPageId (uuid), checkId (uuid), region, title, body |
add_incident_update | POST /incidents/:id/updates | read_write | incidentId (uuid), status, body |
list_checks: List every monitor on the account: id, name, url, and check interval.get_check_status: The current per-region status and aggregate status for one monitor. Same staleness-aware aggregation as the public status page: operational, degraded, down, stale, or unknown.create_check: Add a new monitor. Enforces the account's tier limit and the same target-safety validation as the dashboard and REST API.update_check_regions: Change which of the 4 live regions probe an existing monitor. At least one region is required.delete_check: Remove a monitor and its history.list_status_pages: List the account's public status page(s), including slug and URL path.list_incidents: List recent incidents across every monitor on the account, newest first.create_incident: Open a new incident against one of the account's own status pages and monitors. Inserts with status "investigating", writes the opening timeline update in the same transaction, and emails the page's confirmed subscribers.add_incident_update: Post a staged update (investigating, identified, monitoring, resolved) against an existing incident, advancing its lifecycle status in the same call. Emails the page's confirmed subscribers unless deduped as a double-submit.
Every tool returns the same JSON shape as its REST equivalent, as a text content block. A not-found, over-limit, unsafe-target, or rate-limited condition sets isError: true on the tool result rather than throwing, so a client sees a clean, structured failure instead of a crash.
Authentication and permission scopes
The MCP server uses the same bearer API key as the REST API, generated from the dashboard's API & MCP access section. Every key has a scope: read can call the four read-only tools above; read_write can also call create_check, update_check_regions, delete_check, create_incident, and add_incident_update. A read key calling a write tool gets a clean isError: true result, not a crash or a silent no-op. This scope is a separate setting from the account-tier rule below: a free account's key is always read, since the write tools require a paid plan regardless of a key's own scope. Full detail, including rate limits (120 reads/min, 30 writes/min, shared with the REST API) and request-size limits, is in the API reference.
Tier requirements
Free accounts get read-only MCP access: list_checks, get_check_status, list_status_pages, and list_incidents all work with a free-tier key. The other tools (creating, updating, or deleting a check, and opening or updating an incident) require a Growth or Scale plan; a free-tier key calling one of them gets a clean upgrade message instead of running. This is different from the REST API, which stays a Growth and Scale feature end to end, reads included: a free-tier key is rejected there before any route runs. See pricing for what each plan includes.
Setup
Claude Code
claude mcp add --transport http realuptime https://mcp.realuptime.io/mcp \
--header "Authorization: Bearer ru_live_..."Claude Desktop, or any MCP client using a JSON config
Add an entry to your client's MCP server configuration:
{
"mcpServers": {
"realuptime": {
"url": "https://mcp.realuptime.io/mcp",
"headers": {
"Authorization": "Bearer ru_live_..."
}
}
}
}Any other MCP client
Point it at https://mcp.realuptime.io/mcp over HTTP, with theAuthorization: Bearer ru_live_... header set on every request. A client library normally handles the initialize to tools/list to tools/call sequence for you; the request below is only useful as a manual sanity check that the server is reachable and your key works.
curl -X POST https://mcp.realuptime.io/mcp \
-H "Authorization: Bearer ru_live_..." \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}'Getting a key
Generate an API key from the dashboard's API & MCP access section, on any plan. A free account can only create a read-only key; Growth and Scale accounts can choose read-only or read-write. The key is shown once, at creation, stored hashed server-side; if you lose it, generate a new one and revoke the old.