StatOSS

MCP and agents

Two Model Context Protocol endpoints: a read-only one next to every page and a keyed one over the account.

Next to every page

https://<page>/mcp (and statoss.com/s/<address>/mcp) is a read-only MCP server with no key: get_status, list_incidents and get_error_budget. On a password-protected or private page it takes the page's key as ?key=.

Over the account

https://statoss.com/api/v1/mcp with an API key as a bearer token. Read keys get list_pages, get_status, list_monitors and list_incidents; write keys add create_monitor, open_incident, schedule_maintenance, post_update and record_deploy. The incident tools take what the REST API takes: a state per monitor, a start in the past, an incident that is already over, a window's reminders and repeat, and notify: false to leave subscribers out. Every tool answers with the same resources the REST API sends, and a key that reaches one page only sees that page.

Connecting a client

Both endpoints speak the Streamable HTTP transport, stateless: JSON-RPC by POST, JSON back, no session and no event stream. Claude Code, Cursor, Claude Desktop and most other clients take a remote server as a URL plus headers.

claude mcp add statoss https://statoss.com/api/v1/mcp \
  --transport http \
  --header "Authorization: Bearer sk_..."

Or, as a JSON entry for a client that reads one:

{
  "mcpServers": {
    "statoss": {
      "url": "https://statoss.com/api/v1/mcp",
      "headers": { "Authorization": "Bearer sk_..." }
    }
  }
}

llms.txt

https://<page>/llms.txt is a short text file that says what the page is, lists its monitors, and points at status.json, the feeds and the MCP endpoint, with a note on how to read status.json. It is what a language model should be handed instead of the HTML. The site's own llms.txt describes StatOSS itself.