Staygreen: Uptime and Incident Monitoring
Uptime and incident monitoring for apps built with coding agents. Ask your agent what's broken: it reads status, uptime, response times, incident evidence and SSL and domain expiry. It can scan an app, set up its checks, status page and cron heartbeats in one call, add a monitor, pause monitors, and draft an incident update for you to publish. Sign in with OAuth or use a workspace API token.
Hosted MCP Server
npx add-mcp 'https://staygreen.io/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Staygreen
Uptime and incident monitoring for apps built with coding agents: checks from more than one location, incidents with the evidence attached, and a public status page for each app. Free plan at staygreen.io.
This repository is Staygreen's public issue tracker, the home of its MCP server's listing, and the source of the staygreen command-line package and local MCP server (CLI.md), under the Apache 2.0 license. The rest of Staygreen's code opens here in November 2026.
Connect an agent (MCP)
Staygreen's MCP server is at https://staygreen.io/mcp (streamable HTTP). Every call requires sign-in; there is no anonymous tool.
Sign in: no token to handle
Add https://staygreen.io/mcp to an MCP client that supports signing in (OAuth), then sign in with your Staygreen account and choose the workspace. If you don't have an account yet, signing up there creates a Free workspace; you don't need to open the dashboard first. The connection can read and change that workspace's monitors, and you must be an administrator of it.
Claude Code:
claude mcp add --transport http staygreen https://staygreen.io/mcp
Then run /mcp, choose staygreen and Authenticate. In Claude, add it as a custom connector with the same URL.
With an API token (CI and scripts)
An administrator creates a token in the dashboard under Agents and API: read-only or read-and-write, shown once. Send it as Authorization: Bearer <token>. The same token works on the MCP server and on the REST API (https://staygreen.io/api/v1/<tool>).
claude mcp add --transport http staygreen https://staygreen.io/mcp \
--header "Authorization: Bearer $STAYGREEN_API_TOKEN"
Local server (npm)
The staygreen package runs the same tools as a local stdio server and calls the REST API with a workspace API token. Node 22 or later.
claude mcp add staygreen -e STAYGREEN_API_TOKEN=… -- npx -y staygreen mcp
Without a token only scan_app works. Configuration for Claude Desktop, Cursor and VS Code, and the package's scan and provision commands, are in CLI.md.
Tools
| Tool | What it does |
|---|---|
get_status | Current status of one app or every app: monitors, page components and open incidents |
list_monitors | Monitors in your workspace, filtered by app, type or state, with each one's last check |
get_uptime | Measured uptime, downtime minutes, incident counts and daily history. Unmeasured time is no data, not 100% |
get_response_times | Response-time series for a monitor, by city and country |
get_incidents | Incident evidence and timelines: failing assertions, locations and masked snippets |
get_ssl_and_domain_expiry | Certificate and domain expiry dates for monitored hosts |
scan_app | A one-time scan of a public app URL. Optional keys are used once and never stored. Creates nothing |
provision_app | Sets up an app's website check, SSL and domain check, status page and cron heartbeats in one call |
create_monitor | Adds one monitor to an app, with the dashboard's own checks and plan limits |
pause | Pauses one monitor or one app's monitors for up to 24 hours, then resumes them |
draft_incident_update | Saves an incident note as a draft. It appears publicly only once you publish it in the dashboard |
Writes take a request_id UUID: repeat it with the same inputs to retry safely. Deleting, alert channels, teammates, billing and publishing are not available to agents. Calls share your workspace's budget: 30 a minute on Free, 120 on Builder.
Report a bug or suggest a feature
Open an issue. Say what you did, what you expected, and what happened instead; the monitor type and the screen help.
Issues are public. Never paste a heartbeat URL, an API token, a header value, or anything else your monitors keep secret. A heartbeat URL is the only credential for that heartbeat: anyone holding it can ping it. If you posted one by mistake, rotate it from the heartbeat's page.
For a security problem, don't open an issue: use private vulnerability reporting instead.
Pull requests aren't accepted until the code opens.