account_get
Get account profile
Returns the profile of the current account: `id`, email, name, status, avatar, creation date, password-change date, timezone and the AI-assistant flag. Plan/limit info is not here — use `current_plan_get`.
无需输入参数。
io.github.statuser-cloud由 GitHub 账号 statuser-cloud 发布v0.6.1更新于 Nov 8, 2026
Monitor services, manage incidents and status pages in Statuser.cloud from your AI assistant.
把 AI 助手连接到 Statuser.cloud 账户,用于监控服务、排查故障并发布状态页更新。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/io.github.statuser-cloud%2Fmcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"statuser": {
"type": "http",
"url": "https://mcp.statuser.cloud/",
"headers": {
"Authorization": "Bearer <YOUR_TOKEN>"
}
}
}
}[npm version] [License: MIT] [MCP]
MCP-сервер для управления Statuser из ИИ-клиента — Claude Code, Cursor, VS Code, Windsurf, Claude Desktop и любого другого, который поддерживает Model Context Protocol.
С ним ассистент работает с вашим аккаунтом Statuser напрямую: смотрит состояние серверов, разбирает инциденты, публикует обновления на страницах статуса, настраивает уведомления. Всё это поверх публичного API Statuser с авторизацией по API-ключу.
Подключить сервер можно двумя способами, инструменты в обоих одни и те же:
https://mcp.statuser.cloud — ничего не нужно устанавливать: клиент ходит на наш сервер с вашим ключом в заголовке.npx -y @statuser/mcp — сервер работает на вашей машине, нужен Node.js.[!NOTE] MCP-сервер обращается к API от имени аккаунта-владельца ключа. Все ограничения тарифа сохраняются — например, AI-саммари и кастомный домен будут доступны только если они включены в вашем плане. Сверяйтесь с инструментом
current_plan_get.
https://mcp.statuser.cloud с заголовком Authorization: Bearer ваш_ключ; готовые конфиги — ниже.statuser.Если клиент подключает только локальные серверы — например, Claude Desktop, — используйте локальный запуск через npx.
С флагом --scope user сервер будет доступен во всех проектах, с --scope project — запишется в .mcp.json проекта. Файл с ключом не коммитьте в репозиторий.
В ~/.cursor/mcp.json — для всех проектов, или в .cursor/mcp.json — для одного:
В .vscode/mcp.json. VS Code спросит ключ при первом подключении, в самом файле его не будет:
В mcp_config.json — в актуальных версиях это ~/.config/devin/mcp_config.json, в Windows %APPDATA%\devin\mcp_config.json. У удалённого сервера поле называется serverUrl, а не url:
Подойдёт любой клиент, который подключается к удалённому MCP-серверу по Streamable HTTP и умеет передавать заголовок: укажите адрес и заголовок из таблицы выше. Устаревший транспорт SSE сервер не поддерживает.
Сервер опубликован в официальном реестре MCP как io.github.statuser-cloud/mcp: клиенты, которые берут серверы оттуда, найдут его сами и спросят только ключ.
https://mcp.statuser.cloud/?toolsets=monitors,incidents. Значения те же, что в таблице групп.confirm: true: переменной STATUSER_ALLOW_WRITE, как при локальном запуске, здесь нет. Подробнее — в разделе Защита от случайных изменений.incident_comment_upload_file и поле attached_local_files у incident_comment_create есть только при локальном запуске; вложения по готовым ссылкам работают.429 до конца окна.Запускается через npx -y @statuser/mcp — глобально устанавливать ничего не нужно, Docker тоже не требуется. Нужен Node.js 18.17 или новее. Единственный обязательный параметр — переменная окружения STATUSER_API_KEY.
Для клиентов с поддержкой MCP-deeplink установка укладывается в нажатие кнопки. Клиент откроется, попросит API-ключ и сам сохранит конфиг.
[Установить в VS Code] [Установить в VS Code Insiders] [Установить в Cursor]
Перед установкой создайте API-ключ в панели управления Statuser — клиент попросит его в момент установки. Кнопка для Cursor подставит плейсхолдер API_KEY_HERE; замените его на свой ключ в форме, которую откроет Cursor.
Для Claude Desktop, Claude Code, Windsurf, Zed и других клиентов автоустановки пока нет — там нужен ручной конфиг ниже.
Откройте Настройки → Developer → Edit Config и добавьте в claude_desktop_config.json:
После сохранения полностью закройте Claude Desktop (Cmd/Ctrl + Q) и откройте заново — простого закрытия окна недостаточно.
В корне проекта создайте .mcp.json:
Или одной командой:
Самый быстрый путь — кнопка «Установить в Cursor» выше. Если нужно вручную, Настройки → MCP → Add new server:
Самый быстрый путь — кнопка «Установить в VS Code» выше. Если нужно вручную, Настройки → MCP servers → Add:
Любой клиент с поддержкой MCP принимает один и тот же формат запуска:
command: npxargs: ["-y", "@statuser/mcp"]env.STATUSER_API_KEY: ваш ключНазвание поля настройки (mcpServers, mcp.servers, experimental.mcp и т.п.) различается между клиентами — сверяйтесь с их документацией.
При локальном запуске параметры задаются переменными окружения в блоке env конфига клиента. При подключении по адресу настраивать нечего, кроме ключа в заголовке и групп инструментов в адресе.
Больше 80 инструментов разбиты на 8 логических групп. По умолчанию включены все; оставить только нужные можно переменной STATUSER_TOOLSETS при локальном запуске или параметром ?toolsets= в адресе.
Зачем это бывает удобно:
Примеры значения:
По адресу — то же самое параметром: https://mcp.statuser.cloud/?toolsets=monitors,incidents.
Если в списке указана неизвестная группа, сервер не запустится и подскажет допустимые значения.
API-ключ Statuser даёт полный доступ к аккаунту, поэтому MCP-сервер по умолчанию блокирует все инструменты, которые что-либо создают, изменяют или удаляют. Это защищает от того, чтобы ассистент случайно удалил сервер продакшна или отписал нужного человека от уведомлений.
[!IMPORTANT] Инструменты только для чтения (
*_list,*_get,monitor_get_checks,incident_get_report_pdfи подобные) работают всегда без подтверждения.
При попытке вызвать заблокированный инструмент сервер возвращает осмысленную ошибку с двумя способами разрешить вызов:
"STATUSER_ALLOW_WRITE": "1" в блоке env. Подходит, если вы доверяете ассистенту и заранее очертили его область работы через STATUSER_TOOLSETS.confirm: true к конкретному вызову. Это удобно, когда основная сессия должна оставаться read-only, но один-два изменения всё-таки нужны.При подключении по адресу работает только второй способ: переменной окружения у удалённого сервера нет, каждое изменение подтверждается confirm: true.
Под защитой находятся в том числе:
Инструменты дополнительно помечаются MCP-аннотациями destructiveHint и readOnlyHint. Клиенты, которые их читают, добавляют поверх нашего собственный экран подтверждения.
Полный список с описанием параметров MCP-клиент покажет автоматически при подключении. Ниже — обзор по группам. Условные обозначения: ✏️ — инструмент изменяет данные, ⚠️ — действие необратимо.
Проект — область внутри аккаунта: ему принадлежат серверы, страницы статуса и правила уведомлений о мониторинге. Каналы связи, тариф и API-ключи остаются общими. Вызовы без project_id читают весь аккаунт, а создают в самом старом проекте — так работали интеграции до появления проектов, и это поведение сохранено.
Инцидент-отчёты:
Плановые работы:
Вебхуки:
Правила нотификаций — email, telegram, max для каждого типа подписки:
Email-каналы:
Несколько фраз, которые ассистент сможет выполнить сразу после установки:
nightly-export с проверкой heartbeat, интервал 12 часов, grace 10 минут.»staging-db до конца дня.»api.example.com и сгенерируй по нему AI-саммари. Потом скачай PDF-отчёт с секциями ai_summary и diagnostics.»prod отчёт об инциденте: заголовок Расследуем повышенную задержку API, затронуты api-1 и api-2 со статусом degraded, стартовое сообщение про повышенный p95 на API-слое.»prod: завтра с 02:00 до 04:00 МСК, описание Обновление БД, затронуты сервисы api и worker.»Slack prod на https://hooks.slack.com/... с подписками service_alerts и ssl_alerts, подпиши его секретом ….»STATUSER_API_KEY is not set — переменная не передана в env MCP-клиента или клиент не был перезапущен после правки конфига. На macOS Claude Desktop иногда требуется полностью выйти через Cmd+Q.
Statuser API 401 — ключ невалиден или отозван. Перевыпустите его на statuser.cloud/my/account/api-keys.
Statuser API 403 — возможность недоступна на вашем тарифе (например, вебхуки, AI-саммари, кастомный домен) или достигнут лимит — серверов, страниц статуса, помесячная квота отчётов. Сверьтесь с инструментом current_plan_get.
Statuser API 429 (too_many_requests) — превышен лимит запросов. Сервер автоматически повторяет запрос один-два раза, дождавшись окончания окна по заголовку ratelimit-reset. Если ошибка повторяется — уменьшите частоту обращений.
Refusing to call ...: this tool performs a write/destructive operation — сработала защита от случайных изменений. Попросите ассистента добавить confirm: true к конкретному вызову; при локальном запуске можно вместо этого установить STATUSER_ALLOW_WRITE=1 в конфиге клиента.
Missing or malformed API key — при подключении по адресу клиент не передал заголовок Authorization: Bearer ваш_ключ или передал его в другом виде. Проверьте, что слово Bearer стоит перед ключом через пробел.
The API key is invalid, expired or revoked — клиент подключается по адресу, но ключ отозван или истёк. Перевыпустите его на statuser.cloud/my/account/api-keys.
Too many requests with an invalid API key from this address — с вашего адреса пришло больше 30 запросов с неверным ключом за 10 минут. Исправьте ключ и подождите столько секунд, сколько указано в заголовке Retry-After.
Клиент не подключается по адресу и получает 405 — он пытается открыть устаревший SSE-поток. Выберите в настройках клиента транспорт Streamable HTTP (часто он называется просто HTTP).
STATUSER_TOOLSETS contains unknown toolsets — опечатка в названии группы. Допустимые значения перечислены в тексте ошибки и в разделе Группы инструментов.
Пакет публикуется как ESM. Если ваш MCP-клиент запускает Node более старой версии — обновите его минимум до 18.17 или подключитесь по адресу.
CLI Statuser работает с тем же API из терминала и CI: добавляет и настраивает серверы, описывает серверы и сценарии как код, ставит проверки на паузу на время деплоя, отправляет heartbeat из крон-задач.
Ошибки и предложения — в issues. Об уязвимостях сообщайте приватно — см. SECURITY.md.
Общие вопросы по API — в документации Statuser или на [email protected].
MIT — см. LICENSE.
来源:README.md,提交 14cec21
Get account profile
Returns the profile of the current account: `id`, email, name, status, avatar, creation date, password-change date, timezone and the AI-assistant flag. Plan/limit info is not here — use `current_plan_get`.
无需输入参数。
Update account profile
Partial update of the account profile. Mutable fields: `name`, `timezone`, `is_ai_assistant_enabled`. Pass only the fields you want to change.
nameconfirmtimezoneis_ai_assistant_enabledGet current plan and feature flags
Returns the active plan with its price, full `features` object (limits and feature flags), and subscription metadata (`valid_until`, `current_billing_period`, `pending_plan`). Useful to check gates before calling feature-restricted endpoints.
无需输入参数。
List public plans
Returns the public Statuser plan catalog with prices, limits and features. No authentication required.
无需输入参数。
List account activity log
Returns the account audit log newest first: who changed what and when — the owner (panel, bots, Statuser AI), API keys (public API, MCP) or the system (plan enforcement, autopay, expirations). Answers questions like "who paused this server", "when was the account logged into", "what did the system disable after a downgrade". Each entry has `action` (stable `<object>.<verb>` code), actor, source, target, masked `changes` (was → became), `details`, `ip` and geo `location`. Depth is limited by the plan window: `retention_days` in the response (`null` = unlimited). Support staff actions are never included.
tofromlimitactionoffsetsearchcategorytarget_idactor_typetarget_typeExport account activity log as CSV
Downloads the activity log as CSV under the same filters as `activity_log_list` (pagination is ignored). Columns: `id, created_at (UTC), action, actor_type, actor_label, source, target_type, target_id, target_label, ip, country, city, user_agent, changes (JSON), details (JSON)`. At most 50 000 newest rows per call; `truncated: true` in the result means the history is longer — narrow `from`/`to` or filters and repeat. Available on plans with `activity_log_export_enabled` (Team); otherwise fails with `activity_log_export_unavailable`. The export itself is recorded in the log as `activity_log.export`. Prefer `activity_log_list` for questions — use this tool only when the user explicitly wants a file or a full dump.
tofromactionsearchcategorytarget_idactor_typetarget_typeGet holiday-mode status
Returns the current state of "holiday/vacation" mode: if active, `holiday_until` contains the end timestamp; otherwise `null`. While active, Statuser does not send personal incident notifications (checks still run and incidents are still recorded).
无需输入参数。
Enable or disable holiday mode
Enables holiday mode until the given timestamp (`holiday_until` in ISO 8601) or disables it if `holiday_until` is omitted. While active, personal notifications are suppressed; monitors keep running and incidents are still recorded.
confirmholiday_untilGet 2FA info
Returns the current state of two-factor authentication: `preferred_method` (active second factor, may be `null`) and `allowed_methods` (which methods are selectable). Allowed values: `email` (always), `totp` (when TOTP is configured), `telegram` (when a Telegram chat is linked), `max` (when a MAX chat is linked).
无需输入参数。
List linked Telegram chats
Returns all Telegram personal accounts and group chats linked to the Statuser account with their settings: chat id, type, username, avatar, 2FA flag, selected topic and available topics for supergroup-forum groups. A non-null `disabled_reason` means the messenger refuses delivery to this chat (`bot_blocked`, `user_deactivated`, `chat_not_found`, `bot_kicked`, `no_rights`): no notifications go there. It is fixed in the messenger and confirmed by a channel test in the Statuser panel.
无需输入参数。
Set Telegram topic for notifications
Routes Statuser notifications to a specific topic (`message_thread_id`) in a Telegram chat — typically useful for supergroup forums. Pass `message_thread_id: null` to clear the binding and post to the main chat. Use `telegram_linked_list` to discover available topics.
confirmtelegram_id必填message_thread_id必填List linked MAX accounts
Returns all MAX accounts and group chats linked to the Statuser account, with status and the "used for 2FA" flag. Available as a notification channel in notification rules. A non-null `disabled_reason` means the messenger refuses delivery to this chat (`bot_blocked`, `user_deactivated`, `chat_not_found`, `bot_kicked`, `no_rights`): no notifications go there. It is fixed in the messenger and confirmed by a channel test in the Statuser panel.
无需输入参数。
Get MAX deeplinks for binding
Returns a pair of deeplinks: `link_user` (open in personal MAX chat with the bot) and `link_group` (add the bot to a group and follow the link). After confirmation, the MAX chat/account becomes available as a notifications channel. Repeated calls before the link is consumed are idempotent — same links are returned.
无需输入参数。
Unlink MAX account
Unlinks a MAX account from the Statuser account. Notifications will stop going to it; notification rules stop including it. If the account was the 2FA channel, its 2FA role is cleared automatically — but it is recommended to first switch the second factor via another channel if no other 2FA channel is configured.
max_id必填confirmChange the MAX account used for 2FA
Switches which linked MAX account receives second-factor confirmation codes. Must be one of the accounts already linked to the Statuser account.
max_id必填confirmList projects
Lists the projects of the account, oldest first by id. A project owns monitors, status pages and monitoring notification rules; notification channels, billing and API keys belong to the account as a whole. Every account has at least one project. Calls that take no `project_id` read the whole account and write into the oldest project — use this tool to learn which one that is.
无需输入参数。
Create project
Creates a project. Returns 403 when the plan limit is reached (1 on Free, 3 on Pro, 20 on Team) — monitors and status pages are counted per account, so a new project does not raise those limits. A new project starts with every notification channel switched OFF: monitoring notifications go nowhere until `project_channel_set` enables them. That is deliberate — a project is usually created for a new client, and channels enabled by default would send their alerts into somebody else’s chat.
name必填confirmRename project
Renames a project. Only the name can be changed here — moving content between projects is done through `monitor_update` and `status_page_update`.
id必填name必填confirmDelete project
Deletes a project. The last project of an account cannot be deleted (409) — it is where records created without a project go. A project that still holds monitors or status pages needs `move_to_project_id`, otherwise the call returns 409: content moves, settings do not. The notification rules, channel switches and webhook subscriptions of the deleted project are gone for good, and the moved monitors start living by the rules of the destination project — their alerts may end up in a different channel.
id必填confirmmove_to_project_idReorder projects
Sets the order projects are listed in inside the panel. Pass every project id of the account in the wanted order — a partial list is rejected (400). Cosmetic: the order changes nothing about delivery or about which project receives records created without one (that is always the oldest project).
confirmproject_ids必填List channels of a project
Lists the notification channels of the account (confirmed emails, linked Telegram and MAX chats, work chats — `type: chat_webhook` with the chat in `provider`: Mattermost, Rocket.Chat, Pachca, Discord, Slack) together with whether this project uses them. A channel is connected once for the whole account; a project only switches it on or off for its own monitoring notifications. Account-level notifications — invoices, security, API keys — reach every channel regardless of this setting. Webhooks are not here: their scope is stored on the subscription, see `webhook_update`. A work chat with `is_disabled_by_plan: true` receives nothing on the current plan; its on/off state in projects is kept and applies again after an upgrade. A Telegram or MAX channel with a non-null `disabled_reason` receives nothing either, even when switched on here: the messenger refuses delivery until the chat is fixed and a channel test in the Statuser panel succeeds.
project_id必填Switch a channel on or off in a project
Turns one notification channel on or off for this project and returns the full updated list. Affects monitoring notifications only. Switching a channel off here does not disconnect it from the account — other projects keep using it.
type必填confirmchannel_id必填is_enabled必填project_id必填List monitors
Lists every monitor on the account with current status and configuration. Use `limit`/`offset` to paginate — recommended for accounts with many monitors.
limitoffsetproject_idGet monitor
Returns full configuration and latest status for one monitor by id.
id必填Create monitor
Creates a new monitor. Only `host` and `protocol` are required (plus `scenario_script` for `scenario`) — timeout, interval and redirect handling fall back to the same defaults the panel uses (30 s, 300 s — 900 s for a scenario, redirects followed for `http`/`keyword`), and the paid SSL and domain checks stay off unless asked for. Returns 403 if the account is over the servers limit or if a requested feature is not on the current plan (DNS/keyword/heartbeat, AI monitoring and its model response check as two separate gates, scenarios with their own limit, minimum interval and maximum timeout, latency alerts, custom success codes, non-default locations, blocklist monitoring, incident confirmation delay).
bodyhost必填nameportconfirmheaderskeywordprotocol必填llm_modellocationsproject_iddescription另有 22 个Update monitor
Partial update: pass only the fields you want to change. Plan-feature constraints from `monitor_create` apply on update too.
id必填bodyhostnameportconfirmheaderskeywordprotocolllm_modellocationsproject_id另有 23 个Pause or resume monitor
Pauses (`action = "pause"`) or resumes (`action = "unpause"`) checks for a monitor without deleting its configuration or history. On resume, plan-feature gating is re-evaluated.
id必填action必填confirmDelete monitor
Permanently deletes a monitor with its history, incidents and alert settings. Irreversible. To pause checks temporarily, use `monitor_pause` instead.
id必填confirmSend test notification for monitor
Fires a test notification through all channels configured for this account (email/Telegram/MAX per notification rules + webhooks subscribed to the matching type). Useful for verifying delivery without waiting for a real incident.
id必填confirmRun scenario now
Runs the saved Playwright test of a `scenario` monitor now, off schedule, with the same consequences as a scheduled run: a point on the graph, and an incident opened or closed. Waits for the run to finish — up to the monitor `request_timeout` plus browser start-up — and returns the verdict, the failed test, the Playwright error and the test console output. The screenshot, video and trace links in the response work for an hour. One on-demand run per account at a time and at most 30 in 10 minutes (409 and 429 otherwise). If the client gives up waiting, `monitor_get_scenario_run_latest` returns the result.
id必填confirmGet latest on-demand scenario run
Whether an on-demand run started by `monitor_run_scenario` is still going, and its result once it finished within the last hour. Scheduled runs are not here: their outcome is the graph (`monitor_get_checks`) and, for a failure, the incident diagnostics (`incident_get_scenario_details`).
id必填Test a scenario without saving
Runs a Playwright test in the Statuser sandbox exactly like a scheduled scenario run, without creating or changing a monitor: no point on the graph, no incident. Use it to check a script before `monitor_create`/`monitor_update`. Waits for the run to finish — up to `request_timeout` plus browser start-up — and returns the verdict (`passed`, `failed`, `timed_out`, or `runner_error` when the sandbox could not run it; that one does not count towards the limit), the failed test, the Playwright error, the console output, and screenshot, video and trace links that work for an hour. Requires `scenarios_limit` above zero on the current plan. One on-demand run per account at a time and at most 30 test runs in 10 minutes (409 and 429 otherwise).
confirmlocationserver_idscenario_envrequest_timeoutscenario_script必填Get monitor checks (aggregated)
Returns aggregated check results for the period, suitable for uptime/latency graphs. Defaults to the last 24h if `start_date`/`end_date` are omitted. For day-scale periods, the response also contains the last few raw points to keep the graph interactive between aggregation intervals.
id必填end_datestart_dateGet heartbeat events
Returns heartbeat events (pings from an external system) aggregated into equal intervals over the period. Only meaningful for monitors with `protocol = "heartbeat"`; others return an empty array. Defaults to the last 24h.
id必填end_datestart_dateSend a heartbeat signal
Sends a heartbeat signal to a `heartbeat` monitor, as the external job itself would — to check the setup or to close an incident by hand. A normal signal records the job as alive and closes an open incident; `fail: true` reports a failed run and opens an incident right away. A paused monitor accepts the signal and ignores it. The job itself calls `https://api.statuser.cloud/v1/heartbeat/<heartbeat_token>` (and `/fail`) with GET, POST or HEAD and needs no API key.
id必填failconfirmGet DNS-record history
Returns diffs of DNS records observed by the monitor: what was added, what was removed, per record type. History depth is limited by the `dns_history_retention_days` plan feature. Only populated for monitors with `protocol = "dns"`; others return an empty array.
id必填List incidents
Lists incidents. Without `server_id` — across the whole account, sorted by start time desc; with `server_id` — only that monitor. `status` and `project_id` filters apply only to the account-wide form. Time depth is limited by the `incident_retention_days` plan feature.
statusserver_idproject_idGet incident
Returns a detailed incident card: status, start/end time, root cause, keyword, replay link, plus screenshot and per-location network diagnostics (headers, body, OpenSSL, ping/nmap/mtr/traceroute, timings). `screenshot` is only returned when `screenshots_enabled` is on the plan; `details` — only when `network_diagnostics_enabled`.
id必填Get incident event timeline
Returns the chronological event log of an incident: status changes, notifications sent (email/Telegram/MAX/webhooks), comments, page screenshots and network diagnostics. Useful for audits and timeline rendering. Every event has a `type` and a matching `meta`: `start`/`end` — no meta; `error`/`resolved` — check location and error code; `notification` — channel, recipient, delivery status; `comment` — text and attachments; `screenshot` — public URL of the page snapshot captured during the outage; `diagnostics` — the location diagnostics ran from and which blocks were collected (`headers`, `body`, `timing`, `resolved_ips`, `ping`, `traceroute`, `mtr`, `nmap`, `openssl`). `screenshot` and `diagnostics` events are only returned on plans with `screenshots_enabled` / `network_diagnostics_enabled`; `screenshot` also requires an HTTP monitor and only exists for incidents started after 2026-08-09.
id必填Get monitor by incident
Shortcut: returns the monitor linked to a given incident in one call.
id必填Get scenario incident diagnostics
Diagnostics of an incident of a `scenario` monitor: the run that opened it — location, duration, the failed test, the Playwright error with its call log and the test console output — and whether a screenshot, video and trace were saved. The files themselves open on the incident page in the panel. Recorded once, by the run that opened the incident; 404 for incidents of other protocols.
id必填Generate AI summary for incident
Generates (or returns the cached) AI summary of the incident — a short human-readable explanation of what happened and why, based on diagnostics. Idempotent: repeated calls return the same summary. Requires `network_diagnostics_enabled` on the plan.
id必填confirmRate AI summary
Submits feedback on the AI summary: `positive` or `negative`. Pass `rating: null` to clear a previously set rating.
id必填rating必填confirmDownload incident PDF report
Downloads a ready-to-attach PDF report for the incident. Returns metadata plus the base64-encoded file. Section composition is controlled by `sections` (`ai_summary`, `diagnostics`, `technical_reference`, `events`). Requires `incident_report_enabled` on the plan — otherwise 403.
id必填sectionsDelete incident
Permanently deletes an incident together with its network diagnostics, screenshot, comments, AI summary and notification history. Irreversible — always confirm with the user before calling. Uptime and SLA are computed from incidents, so deleting one raises the reported availability of the monitor on status pages and in every report generated afterwards (already issued reports keep their numbers). Only a closed incident can be deleted: an `ongoing` one returns 409 — wait for recovery first, otherwise the next failed check reopens it.
id必填confirmList incident comments
Lists all comments on an incident in chronological order, including attached files and timestamps.
incident_id必填Create incident comment
Adds a text comment to an incident. To attach files: either pass URLs already issued via `incident_comment_upload_file`, or pass local file paths in `attached_local_files` and the tool will upload them first. Requires `incident_comments_enabled` on the plan.
confirmincident_id必填comment_text必填attached_filesattached_local_filesUpdate incident comment
Edits text and/or attachments of an existing comment. If `attached_files` is provided, it fully replaces the previous list — files not in the new list are deleted from storage.
confirmcomment_id必填incident_id必填comment_textattached_filesDelete incident comment
Permanently deletes a comment along with all attached files. Irreversible — neither comment nor files can be recovered.
confirmcomment_id必填incident_id必填Upload a file to attach to a comment
Two-step file upload: requests an upload URL from Statuser, PUTs the local file there, and returns the public `file_url` you can pass into `incident_comment_create` / `incident_comment_update` as an attachment. Size limit: 5 MB.
confirmlocal_path必填incident_id必填List status pages
Lists all status pages on the account with their full configuration: domain/slug, groups and linked monitors, theme, white-label, password protection, etc.
project_idGet status page
Returns the full configuration of one status page by id: settings, groups, linked monitors and custom domains. A custom domain in status `disabled_by_plan` does not serve the page on the current plan; it stays attached to the page and is verified again after an upgrade.
id必填Check if a slug is available
Returns `{ available: boolean }` for the given slug. Useful before creating or renaming a status page.
slug必填Check custom-domain availability and CNAME
Returns `{ available, cname_valid }` for the given domain: whether the domain is free and whether its CNAME points to Statuser. Useful before attaching a custom domain.
domain必填Create status page
Creates a public status page. `name` is required. If `slug` is omitted, a random one is generated. Plan-feature constraints apply for custom domain, password, indexing control, white-label, extended timeline and minimum incident duration. Account-level limit is `status_pages_limit` — 403 on overflow.
name必填slugdomainconfirmlanguagelogo_urlpasswordtimezoneis_indexedproject_idtheme_modecompany_url另有 12 个Update status page
Partial update of status-page settings. Pass only the fields you want to change. Slug/domain conflicts → 409; plan-feature constraints → 403.
id必填nameslugdomainconfirmlanguagelogo_urlpasswordtimezoneis_indexedproject_idtheme_mode另有 13 个Publish or unpublish status page
Switches the page visibility for end users without deleting its configuration. `action = "published"` makes it reachable via slug/domain, `"unpublished"` hides it.
id必填action必填confirmReplace status page groups & monitors
Fully replaces the structure of groups and monitors on the page (idempotent replace, not merge). For each group: `name`, `order`, optional `description`, and `servers` — each item has `server_id` (from `monitor_list`), display `name`, `order`, optional `description`. Pass the existing group `id` to update a group, omit it to create a new one. Anything missing from the payload is removed.
id必填groups必填confirmDelete status page
Permanently deletes a status page with its settings, groups and custom-domain binding. Irreversible. To hide a page without deleting, use `status_page_publish` with `action = "unpublished"`.
id必填confirmList subscribers of a status page
Lists visitors subscribed to status page updates by email (they receive emails about incident reports and planned maintenances). Returns each subscriber with `status` (`confirmed`, `pending`, `expired`, `unsubscribed`) and dates, plus `stats`: confirmed/pending counts, `total` (confirmed + pending) and the plan `limit` of active subscribers per page. Requires a plan with `status_page_subscribers_limit > 0` — otherwise the list is empty.
status_page_id必填Export subscribers to CSV
Exports all subscribers of a status page as CSV text with columns `email,status,confirmed_at,created_at`. Useful for backups or migrating the audience elsewhere.
status_page_id必填Delete a subscriber from status page
Removes a subscriber from the status page. Irreversible: the person stops receiving emails and can only re-subscribe themselves on the public page. Subscriber ids come from `status_page_subscriber_list`.
confirmsubscriber_id必填status_page_id必填List incident reports for a status page
Lists incident reports published on a status page with their title, linked monitors, per-server affect statuses and the timeline of updates.
status_page_id必填Publish a new incident report
Publishes a new incident report on a status page: title, initial timeline message, start time and per-server impact (`servers`). Optionally link to existing Statuser incidents via `incident_ids` so the report aggregates their data. Add subsequent timeline updates via `status_page_incident_report_update_add`. Monthly quota: `status_page_incident_reports_per_month_limit` — 403 on overflow.
title必填confirmservers必填started_at必填incident_idsstatus_page_id必填initial_message必填Edit incident report fields
Edits the report itself: `title` and/or `started_at`. To change per-server impact or post a new message, use `status_page_incident_report_update_add`.
titleconfirmreport_id必填started_atstatus_page_id必填Add timeline update to incident report
Appends a new timeline message to the incident report and updates per-server impact (`servers`). Each call adds a separate record with its own timestamp. If `published_at` is set, it must not be in the future and not earlier than the report start — otherwise 400.
confirmmessage必填servers必填report_id必填published_atstatus_page_id必填Edit a timeline update in an incident report
Edits the text of a previously published timeline message (`message` only). Other fields of the update (timestamp, per-server status) cannot be changed.
confirmmessage必填report_id必填update_id必填status_page_id必填Delete a timeline update from incident report
Removes one timeline message from a report by `update_id`. The report itself and the other messages stay. The initial update (created with the report) cannot be deleted — attempt returns 400; delete the whole report instead.
confirmreport_id必填update_id必填status_page_id必填Delete incident report from status page
Removes the incident report from a status page with all its updates. Irreversible. Underlying monitors and incidents in Statuser are not affected — only the public publication is removed.
confirmreport_id必填status_page_id必填List planned maintenances for a status page
Lists planned maintenances published on a status page: title, description, start/end window, affected monitors and timeline of updates. Includes upcoming and completed entries — filter by time on the client side.
status_page_id必填Schedule planned maintenance
Announces a planned maintenance window on a status page. All fields are required: `title`, `description`, `started_at`, `ended_at` and the list of `servers` (`{ id }[]`). Monthly quota: `status_page_planned_maintenances_per_month_limit` — 403 on overflow.
title必填confirmservers必填ended_at必填started_at必填description必填status_page_id必填Edit planned maintenance fields
Edits the maintenance entry itself: title, description, time window, list of affected servers. This does not append a timeline message — use `status_page_maintenance_update_add` for progress updates.
titleconfirmserversended_atstarted_atdescriptionmaintenance_id必填status_page_id必填Add timeline update to planned maintenance
Appends a new message to the maintenance timeline ("started", "in progress", "completed", "postponed"). If `published_at` is omitted, the server stamps "now"; if provided, it must satisfy `started_at <= published_at <= now` — pre-announce updates before the window starts are not supported, and future-dated updates are rejected too.
confirmmessage必填published_atmaintenance_id必填status_page_id必填Edit a timeline update in planned maintenance
Edits the text of a previously published maintenance timeline message (`message` only).
confirmmessage必填update_id必填maintenance_id必填status_page_id必填Delete a timeline update from planned maintenance
Removes one timeline message from a planned maintenance by `update_id`. The entry itself and the other messages stay. The initial update (created with the entry) cannot be deleted — attempt returns 400; delete the whole entry instead.
confirmupdate_id必填maintenance_id必填status_page_id必填Delete planned maintenance from status page
Removes a planned maintenance entry from a status page with all its updates. Irreversible. If a maintenance is just cancelled, publishing a "cancelled" timeline update is usually preferable — otherwise users will not see the history.
confirmmaintenance_id必填status_page_id必填List announcements for a status page
Lists announcements (banner notices shown on top of the public status page): title, body, type/severity, optional display window (`started_at`/`ended_at`) and optional link. Includes scheduled, active and ended entries — filter by time on the client side. `is_disabled_by_plan: true` means the current plan has no announcements: the entry is not shown on the page, but is kept and shows again after an upgrade.
status_page_id必填Create an announcement
Publishes a banner announcement on the status page: `title`, `body`, optional `type` (defaults to `info`), optional display window and link. If `started_at`/`ended_at` are omitted, the announcement is shown until it is deleted or ended. Announcements require a plan with `status_page_announcements_enabled` — otherwise 403 `status_page_announcement_not_allowed`.
body必填linktypetitle必填confirmended_atstarted_atstatus_page_id必填Edit an announcement
Edits an announcement: `title`, `body`, `type`, display window and link. Pass `null` for `started_at`, `ended_at` or `link` to clear them. To stop an active announcement immediately, set `ended_at` to the current time.
bodylinktypetitleconfirmended_atstarted_atstatus_page_id必填announcement_id必填Delete an announcement from status page
Removes an announcement from the status page. Irreversible.
confirmstatus_page_id必填announcement_id必填List webhooks
Lists all webhook endpoints configured on the account: name, URL, and the set of `subscriptions` (event types delivered to that webhook). The secret set on creation is not returned. `is_disabled_by_plan: true` means the current plan has no webhooks: no events are delivered, but the URL, secret and subscriptions are kept and work again after an upgrade.
无需输入参数。
Create webhook
Registers a new webhook endpoint. Statuser will POST events of the chosen `subscriptions` types. Optionally set a `secret`: Statuser will sign payloads with it so the receiver can verify origin. Requires `webhook_notifications_enabled` on the plan.
url必填name必填secretconfirmproject_idssubscriptions必填Update webhook
Partial update of an existing webhook. Pass only the fields you want to change. Pass `secret: null` to clear the signing secret. Once changed, signatures are computed with the new value — update the receiver accordingly.
id必填urlnamesecretconfirmproject_idssubscriptionsDelete webhook
Removes a webhook endpoint. Statuser will stop sending events to it. To stop only some event types without deleting, use `webhook_update` and shrink the `subscriptions` list.
id必填confirmSend test request to webhook
Sends a test payload (flagged as a test) to the webhook to verify availability, signature handling and receiver behavior. On delivery failure returns 502 with details (`reason`, `webhook_status`) — handy for debugging integrations.
id必填confirmList notification rules
Returns the current matrix of notification rules: for each subscription type (`service_alerts`, `ssl_alerts`, `domain_alerts`, `dns_alerts`, `blocklist_alerts`, `weekly_reports`, `updates`, `billing_alerts`, `holiday_mode`, `api_key_alerts`, `security_alerts`, `ideas`) — boolean flags `email` / `telegram` / `max` and one per work chat (`mattermost`, `rocketchat`, `pachca`, `discord`, `slack`) indicating whether that kind of channel gets the event. Account-level types are off for work chats by default: a work chat is usually shared with a team or a client. Every rule carries a `scope`: monitoring types (`service_alerts`, `ssl_alerts`, `domain_alerts`, `dns_alerts`, `blocklist_alerts`, `weekly_reports`) belong to a PROJECT and differ from project to project, the rest belong to the account. Without `project_id` the monitoring half is read from the oldest project. Webhooks have their own per-webhook `subscriptions` field and do not appear here.
project_idSet notification rule for a subscription type
Creates or updates the rule for a single subscription type: toggles channels `email`, `telegram`, `max` and, optionally, the work chats `mattermost`, `rocketchat`, `pachca`, `discord`, `slack` — a work-chat flag that is not passed stays as it is. Selecting individual recipients or chats is not possible — the toggle is on/off per kind of channel; which exact addresses and chats a project uses is decided by `project_channel_set`. Monitoring types apply to ONE project (the oldest one unless `project_id` says otherwise), account types (`billing_alerts`, `security_alerts`, `api_key_alerts`, `updates`, `ideas`, `holiday_mode`) apply to the account as a whole. Returns the full updated list of rules.
max必填type必填email必填slackpachcaconfirmdiscordtelegram必填mattermostproject_idrocketchatList notification emails
Lists every email address added to the account for notifications, with confirmation status. Notifications go only to confirmed addresses; unconfirmed ones are shown for UX but are not used by notification rules.
无需输入参数。
Add notification email (sends a confirmation code)
Adds a new email address and immediately sends a confirmation code to it. The address becomes effective for notification rules only after confirmation via `notification_email_confirm`. Returns 409 if the address is already confirmed; 429 if a code was just sent; 403 if the per-account limit is reached.
email必填confirmConfirm notification email with code
Verifies the code received by email and marks the address as confirmed. Wrong, expired or attempts-exhausted code returns 403; in that case the code is invalidated and a new one must be requested via `notification_email_resend`.
id必填code必填confirmResend confirmation code
Resends the confirmation letter to an unconfirmed email. If the address is already confirmed — 409; if you call too often — 429 (wait for cooldown).
id必填confirmRemove notification email
Removes an email address from the notification recipients list. Rules that included this address stop delivering to it. Irreversible — to use the same address again, it must be added and confirmed once more.
id必填confirm已满足适用检查项的 85%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
claude mcp add --transport http statuser https://mcp.statuser.cloud --header "Authorization: Bearer ваш_ключ"{ "mcpServers": { "statuser": { "url": "https://mcp.statuser.cloud", "headers": { "Authorization": "Bearer ваш_ключ" } } }}{ "inputs": [ { "type": "promptString", "id": "statuser_api_key", "description": "API-ключ Statuser (https://statuser.cloud/my/account/api-keys)", "password": true } ], "servers": { "statuser": { "type": "http", "url": "https://mcp.statuser.cloud", "headers": { "Authorization": "Bearer ${input:statuser_api_key}" } } }}{ "mcpServers": { "statuser": { "serverUrl": "https://mcp.statuser.cloud", "headers": { "Authorization": "Bearer ваш_ключ" } } }}{ "mcpServers": { "statuser": { "command": "npx", "args": ["-y", "@statuser/mcp"], "env": { "STATUSER_API_KEY": "ваш_ключ" } } }}{ "mcpServers": { "statuser": { "command": "npx", "args": ["-y", "@statuser/mcp"], "env": { "STATUSER_API_KEY": "ваш_ключ" } } }}claude mcp add statuser --env STATUSER_API_KEY=ваш_ключ -- npx -y @statuser/mcp{ "mcpServers": { "statuser": { "command": "npx", "args": ["-y", "@statuser/mcp"], "env": { "STATUSER_API_KEY": "ваш_ключ" } } }}{ "statuser": { "command": "npx", "args": ["-y", "@statuser/mcp"], "env": { "STATUSER_API_KEY": "ваш_ключ" } }}// только серверы и инциденты"env": { "STATUSER_API_KEY": "...", "STATUSER_TOOLSETS": "monitors,incidents" }
// явно все группы — то же самое, что не задавать переменную"env": { "STATUSER_API_KEY": "...", "STATUSER_TOOLSETS": "all" }