undownable

The uptime monitoring MCP server

Updated Aug 19, 2026

Undownable ships a first-party MCP server, so an agent can run your uptime monitoring instead of describing it to you: fifteen tools behind one authenticated HTTP endpoint, scoped to your team and governed by the same permissions as the dashboard.

What MCP is, briefly

The Model Context Protocol is a JSON-RPC convention for handing an LLM client a typed set of callable tools. The client asks the server what it offers (tools/list), the server answers with names, descriptions, and a JSON Schema for every argument, and the model makes structured calls instead of guessing its way around a web UI. Undownable speaks it over the streamable HTTP transport at undownable.com/mcp, authenticated with an Authorization: Bearer header and rate limited to 60 requests a minute per token. Nothing to install: the server is part of the application, so what the agent reads is what the check engine wrote a moment ago.

What the server exposes

Fifteen tools, all team scoped. Each defaults to the token's team and accepts an optional team argument naming any other team the owner belongs to. Monitor and window IDs are the ULIDs the list tools return.

Area Tools
Teams list-teams
Monitors list-monitors, get-monitor, create-monitor, update-monitor, pause-monitor, resume-monitor, delete-monitor
Incidents list-incidents
Status pages list-status-pages, create-status-page
Maintenance windows list-maintenance-windows, create-maintenance-window, end-maintenance-window, delete-maintenance-window

create-monitor covers all eight check types: http, keyword, json, ssl, tcp, dns, ping, and heartbeat. get-monitor returns 24 hour, 7 day, and 30 day uptime alongside the five most recent incidents, usually everything an agent needs before it starts theorising about a cause. There is no update-status-page tool yet, so an agent creates a page with its monitors already attached.

Setting it up in Claude Code

Create the token first: log in, open API tokens in the dashboard sidebar, name it after the agent that will hold it, and copy the value immediately because it is shown exactly once. Then one command:

claude mcp add --transport http undownable https://undownable.com/mcp \
  --header "Authorization: Bearer YOUR_TOKEN"

That is the whole setup. The agent discovers the tools by itself; you never name one.

Setting it up in Claude Desktop

Claude Desktop reaches a remote HTTP server through mcp-remote. Add this to the mcpServers section of claude_desktop_config.json (Settings, then Developer, then Edit Config) and restart the app:

"undownable": {
  "command": "npx",
  "args": [
    "mcp-remote", "https://undownable.com/mcp",
    "--header", "Authorization: Bearer YOUR_TOKEN"
  ]
}

Any other MCP client

Point it at the same URL over the HTTP (streamable) transport and send the bearer header with every request. Most clients take a config shaped like this:

{
  "url": "https://undownable.com/mcp",
  "headers": { "Authorization": "Bearer YOUR_TOKEN" }
}

Underneath it is plain JSON-RPC over HTTP, so you can prove a token works before wiring up any client at all:

curl -s https://undownable.com/mcp \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

The full setup reference, including the current tool table, lives at undownable.com/docs/mcp.

Scope the token before you hand it over

A token is a personal access token that acts as you. The token page narrows it in two independent ways, and both are worth using:

One honest caveat: there is no read-only MCP token. The mcp ability opens the whole server and every tool there can write, so a token that lists monitors over MCP can also delete them. For an agent that cannot change anything, use monitors:read and incidents:read on the REST API and leave mcp off.

Things worth saying out loud

You talk to the agent, not to the tools. Prompts that land cleanly:

Why this beats screen-scraping a dashboard

The alternative pattern (point a browser-driving agent at a monitoring dashboard and let it click) fails in ways this does not:

Plan limits apply to agents exactly as they do to you: 10 monitors and 5 minute checks on the free plan, 50 monitors and 1 minute checks on Pro, with every alert channel (email, ntfy, Telegram, Slack, Discord, webhooks) on both.

Is my token safe in an MCP client?

It is stored by the client the way any other API key is: in the Claude Code config, or in claude_desktop_config.json on your machine. The safety comes from what the token can do rather than where it sits, so scope its abilities, pin it to one team, and revoke it when the agent is done.

What can a read-only token do?

Over the REST API, plenty: monitors:read lists monitors and reads one in detail, incidents:read pulls outage history, fleet-status:read returns a health rollup. Over MCP, nothing, because that endpoint is gated by a single mcp ability which grants every tool on the server.

Does it work with MCP clients other than Claude?

Yes. It is a standard streamable HTTP MCP server with bearer auth, so any client supporting remote HTTP servers can use it. Clients that only speak stdio reach it through mcp-remote, as the Claude Desktop config above does.

Is there a plain REST API too?

Yes, a versioned one at /api/v1, documented at undownable.com/docs/api. It mirrors the MCP tools endpoint for endpoint and takes the same tokens. Use MCP for conversational agents and REST for cron jobs, deploy scripts, and anything needing a token that cannot write.

Related reading

Monitoring that watches from the outside

Free plan with 10 monitors, plus a 14-day Pro trial. No credit card required.

Start free