UpButler runs a remote MCP server. All 94 tools map one-to-one to REST operations, so your coding agent can monitor services, run status pages and handle incidents from the conversation.
No key yet? Connect without the header and call agent_bootstrap. It returns a key, and you reconnect with it. People create keys in the dashboard under /app/settings/api-keys. Agents can mint their own with keys_create and an agent name, so incident timelines show which agent acted.
On initialize, the server gives your model this primer:
UpButler monitors services and runs status pages. Typical flows:- Start monitoring + publish: services_add {name, url, statusPage}.- Your own jobs: services_add with periodSec to get a heartbeat URL, then call it after each run.- Report problems you detect: incidents_create; post progress with incidents_update; finish with incidents_resolve.- React to other services: public_subscribe with a webhook URL, or poll events_list with after=<last id>.- Many components at once: pages_push {pageId, statuses:{key: status}}.No API key yet? Call agent_bootstrap to get one, then reconnect with Authorization: Bearer <key>.
Generated from the server's operation registry. Arguments are the same as the REST endpoint's path, query and body fields, merged into one object, and each tool advertises its full JSON Schema in tools/list. Tool annotations mark GET tools readOnlyHint and DELETE tools destructiveHint.
A successful call returns the REST response twice: as structuredContent, and as pretty-printed JSON in a text content block. A failing call returns isError: true with the standard error envelope, including hint, as text. That makes errors easy for a model to act on.
GET https://upbutler.com/mcp returns a small JSON description of the endpoint. Batched JSON-RPC requests are supported. Sessions aren't required: every request is authenticated on its own.