Statuser

io.github.statuser-cloudPublished by GitHub account statuser-cloudv0.6.1Updated Nov 8, 2026

Monitor services, manage incidents and status pages in Statuser.cloud from your AI assistant.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowSecurity & Monitoring

Overview

AI-generated overview

Connects an assistant to a Statuser.cloud account to monitor services, investigate incidents and publish status page updates.

What you can do
  • List, create, edit, pause and delete monitored servers; read check graphs, heartbeat events and DNS history; run scenarios and test notifications
  • List and inspect incidents with diagnostics, events, AI summaries and PDF reports; create, edit and delete comments with attachments
  • Create and configure status pages, groups, servers and domains; publish incident reports and scheduled maintenance with timeline updates
  • Manage notification rules, webhooks and email channels
  • Read and change account settings: profile, plan, holiday mode, 2FA, Telegram and MAX links, activity log, projects
When to use it
Useful when you run uptime monitoring or public status pages on Statuser.cloud and want the assistant to triage outages, draft incident updates, schedule maintenance or adjust notification channels without switching to the web panel.
Requirements
A Statuser API key, sent as an Authorization bearer header for the remote endpoint at mcp.statuser.cloud, or set as STATUSER_API_KEY for the local npm package. Local mode needs Node.js 18.17 or newer. Optional: STATUSER_TOOLSETS to limit tool groups, STATUSER_ALLOW_WRITE to skip per-call confirmation, STATUSER_API_URL for a proxy or staging API.
Before you install
The API key grants full access to the account, and the server acts as the key's owner. Write and destructive tools are blocked by default; they run when the assistant passes confirm: true, or always when STATUSER_ALLOW_WRITE is set, so deletions of servers, incidents, comments, webhooks and projects become possible. The key is sent to the vendor's server; keep it out of committed config files. Plan limits and quotas still apply.

Installation

In SourceWeft

  1. Open Statuser in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.statuser-cloud%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "statuser": {
      "type": "http",
      "url": "https://mcp.statuser.cloud/",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

MCP-сервер Statuser

[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.

Что внутри

  • Мониторинг сервисов. Список серверов, их статусы, графики проверок и heartbeat-событий, история изменений DNS, добавление и редактирование серверов, постановка на паузу и тестовые уведомления.
  • Инциденты. Подробная карточка с диагностикой и таймингами по каждой локации, AI-саммари, PDF-отчёт, комментарии с вложениями.
  • Страницы статуса. Создание и настройка, управление группами и серверами, публикация инцидент-отчётов и плановых работ с таймлайном обновлений.
  • Уведомления. Правила нотификаций по типам подписок (email, Telegram, MAX и рабочие чаты — Mattermost, Rocket.Chat, Пачка, Discord, Slack), управление вебхуками, добавление и подтверждение email-каналов.
  • Аккаунт и проекты. Профиль, тариф и фичи, режим отпуска, 2FA, привязки Telegram и MAX, история действий, проекты.

[!NOTE] MCP-сервер обращается к API от имени аккаунта-владельца ключа. Все ограничения тарифа сохраняются — например, AI-саммари и кастомный домен будут доступны только если они включены в вашем плане. Сверяйтесь с инструментом current_plan_get.

Содержание

Быстрый старт

  1. Создайте API-ключ в панели управления Statuser.
  2. Добавьте сервер в MCP-клиент. Проще всего — по адресу https://mcp.statuser.cloud с заголовком Authorization: Bearer ваш_ключ; готовые конфиги — ниже.
  3. Перезапустите клиент. Инструменты появятся под именем statuser.

Если клиент подключает только локальные серверы — например, Claude Desktop, — используйте локальный запуск через npx.

Подключение по адресу

ПараметрЗначение
Адресhttps://mcp.statuser.cloud
ТранспортStreamable HTTP
Авторизациязаголовок Authorization: Bearer ваш_ключ

Claude Code

bash
claude mcp add --transport http statuser https://mcp.statuser.cloud --header "Authorization: Bearer ваш_ключ"

С флагом --scope user сервер будет доступен во всех проектах, с --scope project — запишется в .mcp.json проекта. Файл с ключом не коммитьте в репозиторий.

Cursor

В ~/.cursor/mcp.json — для всех проектов, или в .cursor/mcp.json — для одного:

json
{  "mcpServers": {    "statuser": {      "url": "https://mcp.statuser.cloud",      "headers": {        "Authorization": "Bearer ваш_ключ"      }    }  }}

VS Code

В .vscode/mcp.json. VS Code спросит ключ при первом подключении, в самом файле его не будет:

json
{  "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}"      }    }  }}

Windsurf (Devin Desktop)

В mcp_config.json — в актуальных версиях это ~/.config/devin/mcp_config.json, в Windows %APPDATA%\devin\mcp_config.json. У удалённого сервера поле называется serverUrl, а не url:

json
{  "mcpServers": {    "statuser": {      "serverUrl": "https://mcp.statuser.cloud",      "headers": {        "Authorization": "Bearer ваш_ключ"      }    }  }}

Другие клиенты

Подойдёт любой клиент, который подключается к удалённому MCP-серверу по Streamable HTTP и умеет передавать заголовок: укажите адрес и заголовок из таблицы выше. Устаревший транспорт SSE сервер не поддерживает.

Сервер опубликован в официальном реестре MCP как io.github.statuser-cloud/mcp: клиенты, которые берут серверы оттуда, найдут его сами и спросят только ключ.

Что стоит знать

  • Клиенты, которые умеют только OAuth, пока не подключатся. ChatGPT и пользовательские коннекторы Claude Desktop и claude.ai не передают собственный API-ключ в заголовке. Для Claude Desktop есть локальный запуск.
  • Группы инструментов выбираются параметром в адресе: https://mcp.statuser.cloud/?toolsets=monitors,incidents. Значения те же, что в таблице групп.
  • Изменения данных подтверждаются в каждом вызове аргументом confirm: true: переменной STATUSER_ALLOW_WRITE, как при локальном запуске, здесь нет. Подробнее — в разделе Защита от случайных изменений.
  • Локальные файлы недоступны: сервер работает не на вашей машине. incident_comment_upload_file и поле attached_local_files у incident_comment_create есть только при локальном запуске; вложения по готовым ссылкам работают.
  • Лимиты те же, что у API, но считаются на ключ, а не на адрес. После 30 запросов с неверным ключом за 10 минут адрес получает 429 до конца окна.
  • Ключ уходит на наш сервер так же, как при обращении к API напрямую. MCP-сервер его не сохраняет и не пишет в логи; действия видны в истории действий аккаунта от имени ключа.

Локальный запуск через npx

Запускается через 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 и других клиентов автоустановки пока нет — там нужен ручной конфиг ниже.

Claude Desktop

Откройте Настройки → Developer → Edit Config и добавьте в claude_desktop_config.json:

json
{  "mcpServers": {    "statuser": {      "command": "npx",      "args": ["-y", "@statuser/mcp"],      "env": {        "STATUSER_API_KEY": "ваш_ключ"      }    }  }}

После сохранения полностью закройте Claude Desktop (Cmd/Ctrl + Q) и откройте заново — простого закрытия окна недостаточно.

Claude Code

В корне проекта создайте .mcp.json:

json
{  "mcpServers": {    "statuser": {      "command": "npx",      "args": ["-y", "@statuser/mcp"],      "env": {        "STATUSER_API_KEY": "ваш_ключ"      }    }  }}

Или одной командой:

bash
claude mcp add statuser --env STATUSER_API_KEY=ваш_ключ -- npx -y @statuser/mcp

Cursor

Самый быстрый путь — кнопка «Установить в Cursor» выше. Если нужно вручную, Настройки → MCP → Add new server:

json
{  "mcpServers": {    "statuser": {      "command": "npx",      "args": ["-y", "@statuser/mcp"],      "env": {        "STATUSER_API_KEY": "ваш_ключ"      }    }  }}

VS Code (GitHub Copilot Chat и другие MCP-расширения)

Самый быстрый путь — кнопка «Установить в VS Code» выше. Если нужно вручную, Настройки → MCP servers → Add:

json
{  "statuser": {    "command": "npx",    "args": ["-y", "@statuser/mcp"],    "env": {      "STATUSER_API_KEY": "ваш_ключ"    }  }}
Windsurf, Zed и другие MCP-клиенты

Любой клиент с поддержкой MCP принимает один и тот же формат запуска:

  • command: npx
  • args: ["-y", "@statuser/mcp"]
  • env.STATUSER_API_KEY: ваш ключ

Название поля настройки (mcpServers, mcp.servers, experimental.mcp и т.п.) различается между клиентами — сверяйтесь с их документацией.

Настройки

При локальном запуске параметры задаются переменными окружения в блоке env конфига клиента. При подключении по адресу настраивать нечего, кроме ключа в заголовке и групп инструментов в адресе.

ПеременнаяОбязательноПо умолчаниюОписание
STATUSER_API_KEYда—API-ключ от statuser.cloud/my/account/api-keys. Без него сервер не запустится.
STATUSER_ALLOW_WRITEнет0Если 1, true или on — инструменты, которые создают, изменяют или удаляют данные, работают без явного подтверждения.
STATUSER_TOOLSETSнетallСписок включённых групп инструментов через запятую. Значение all включает все группы.
STATUSER_API_URLнетhttps://api.statuser.cloudАльтернативный базовый URL. Нужен только если вы проксируете API или работаете со staging-окружением.

Группы инструментов

Больше 80 инструментов разбиты на 8 логических групп. По умолчанию включены все; оставить только нужные можно переменной STATUSER_TOOLSETS при локальном запуске или параметром ?toolsets= в адресе.

Зачем это бывает удобно:

  • меньше инструментов в контексте — ассистент точнее выбирает подходящий;
  • меньше токенов в системном промпте клиента;
  • если ключ имеет доступ ко всему API, а вам нужны только серверы — можно показать ассистенту только их.
ГруппаЧто включаетПримеры инструментов
accountПрофиль, тариф, режим отпуска, 2FA, привязки Telegram и MAX, история действийaccount_get, current_plan_get, activity_log_list, holiday_mode_set, telegram_linked_list, max_get_link
projectsПроекты — области внутри аккаунта: свои серверы, страницы статуса и правила уведомленийproject_list, project_create, project_delete, project_channel_list, project_channel_set
monitorsСерверы, их проверки, heartbeat-события и тестовый сигнал, история изменений DNS, ручной и пробный прогон сценарияmonitor_list, monitor_create, monitor_pause, monitor_get_checks, monitor_get_dns_history
incidentsИнциденты, события, AI-саммари, PDF-отчёт, удалениеincident_list, incident_get, incident_get_events, incident_generate_ai_summary, incident_get_report_pdf, incident_delete
incident-commentsКомментарии к инцидентам с вложениямиincident_comment_create, incident_comment_upload_file, incident_comment_delete
status-pagesСтраницы статуса, группы, серверы, домены, slug, подписчикиstatus_page_list, status_page_create, status_page_set_groups, status_page_subscriber_list
status-page-reportsПубликация инцидент-отчётов и плановых работ с таймлайном обновленийstatus_page_incident_report_publish, status_page_maintenance_schedule, ..._update_add
notificationsПравила нотификаций, вебхуки, email-каналыnotification_rule_set, webhook_create, notification_email_add, notification_email_confirm

Примеры значения:

jsonc
// только серверы и инциденты"env": { "STATUSER_API_KEY": "...", "STATUSER_TOOLSETS": "monitors,incidents" }
// явно все группы — то же самое, что не задавать переменную"env": { "STATUSER_API_KEY": "...", "STATUSER_TOOLSETS": "all" }

По адресу — то же самое параметром: https://mcp.statuser.cloud/?toolsets=monitors,incidents.

Если в списке указана неизвестная группа, сервер не запустится и подскажет допустимые значения.

Защита от случайных изменений

API-ключ Statuser даёт полный доступ к аккаунту, поэтому MCP-сервер по умолчанию блокирует все инструменты, которые что-либо создают, изменяют или удаляют. Это защищает от того, чтобы ассистент случайно удалил сервер продакшна или отписал нужного человека от уведомлений.

[!IMPORTANT] Инструменты только для чтения (*_list, *_get, monitor_get_checks, incident_get_report_pdf и подобные) работают всегда без подтверждения.

При попытке вызвать заблокированный инструмент сервер возвращает осмысленную ошибку с двумя способами разрешить вызов:

  1. Разрешить навсегда в конфиге клиента: "STATUSER_ALLOW_WRITE": "1" в блоке env. Подходит, если вы доверяете ассистенту и заранее очертили его область работы через STATUSER_TOOLSETS.
  2. Разрешить разово в самом запросе: передайте ассистенту явное указание добавить аргумент confirm: true к конкретному вызову. Это удобно, когда основная сессия должна оставаться read-only, но один-два изменения всё-таки нужны.

При подключении по адресу работает только второй способ: переменной окружения у удалённого сервера нет, каждое изменение подтверждается confirm: true.

Под защитой находятся в том числе:

  • удаление серверов, страниц статуса, комментариев, отчётов и плановых работ;
  • удаление вебхуков и email-каналов;
  • постановка серверов на паузу и снятие;
  • публикация и скрытие страниц статуса;
  • включение режима отпуска;
  • отправка тестовых уведомлений.

Инструменты дополнительно помечаются MCP-аннотациями destructiveHint и readOnlyHint. Клиенты, которые их читают, добавляют поверх нашего собственный экран подтверждения.

Инструменты

Полный список с описанием параметров MCP-клиент покажет автоматически при подключении. Ниже — обзор по группам. Условные обозначения: ✏️ — инструмент изменяет данные, ⚠️ — действие необратимо.

account — 13 инструментов
ИнструментЧто делаетИзменяет данные
account_getПрофиль текущего аккаунта
account_updateИзменить имя, часовой пояс или флаг отображения AI-ассистента✏️
current_plan_getТекущий тариф со всеми возможностями и лимитами
plan_listПубличный каталог тарифов
holiday_mode_getСтатус режима отпуска
holiday_mode_setВключить режим отпуска до указанной даты или выключить✏️
two_factor_infoСведения о текущем втором факторе и доступных методах
telegram_linked_listПривязанные Telegram-аккаунты и чаты
telegram_set_topicПривязать топик в Telegram-группе для уведомлений или снять привязку✏️
max_linked_listПривязанные аккаунты и групповые чаты MAX
max_get_linkПолучить ссылки для привязки MAX — личного чата или групповой
max_unlinkОтвязать MAX-аккаунт✏️
max_set_2fa_accountСменить MAX-аккаунт, на который приходят коды второго фактора✏️
projects — 7 инструментов
ИнструментЧто делаетИзменяет данные
project_listПроекты аккаунта — с них начинается работа с областями
project_createЗавести проект; лимит зависит от тарифа✏️
project_updateПереименовать проект✏️
project_deleteУдалить проект, перенеся его содержимое в другой✏️ ⚠️
project_reorderЗадать порядок проектов в панели✏️
project_channel_listКаналы аккаунта и их положение в этом проекте
project_channel_setВключить или выключить канал в проекте✏️

Проект — область внутри аккаунта: ему принадлежат серверы, страницы статуса и правила уведомлений о мониторинге. Каналы связи, тариф и API-ключи остаются общими. Вызовы без project_id читают весь аккаунт, а создают в самом старом проекте — так работали интеграции до появления проектов, и это поведение сохранено.

monitors — 14 инструментов
ИнструментЧто делаетИзменяет данные
monitor_listСписок всех серверов аккаунта
monitor_getПолная карточка одного сервера
monitor_createДобавить новый сервер — тип проверки ping, http, keyword, tcp, dns, heartbeat, llm или scenario✏️
monitor_updateЧастичное обновление настроек сервера✏️
monitor_pauseПоставить проверки на паузу или возобновить (action: pause или unpause)✏️
monitor_deleteУдалить сервер вместе со всей историей⚠️
monitor_test_notifyОтправить тестовое уведомление по всем настроенным каналам✏️
monitor_run_scenarioПроверить сценарий сейчас, вне расписания, — с теми же последствиями, что плановый прогон✏️
monitor_get_scenario_run_latestИдёт ли ручной прогон сценария и чем закончился последний
scenario_testПрогнать сценарий в песочнице без сохранения — проверить скрипт до monitor_create✏️
monitor_get_checksАгрегированные результаты проверок для графиков uptime и latency
monitor_get_heartbeat_eventsСобытия heartbeat для серверов с protocol: heartbeat
monitor_heartbeat_pingОтправить сигнал heartbeat — проверить настройку или закрыть инцидент вручную✏️
monitor_get_dns_historyИстория изменений DNS-записей для серверов с protocol: dns
incidents — 9 инструментов
ИнструментЧто делаетИзменяет данные
incident_listИнциденты по всему аккаунту или по конкретному серверу
incident_getПодробная карточка с диагностикой — скриншот, replay, ping/nmap/mtr/traceroute, тайминги
incident_get_eventsХронологическая лента событий — изменения статуса, уведомления, комментарии, скриншот и сетевая диагностика
incident_get_serverСвязанный с инцидентом сервер одним запросом
incident_get_scenario_detailsДиагностика инцидента сценария — упавший тест, ошибка Playwright, консоль, есть ли скриншот, видео и трейс
incident_generate_ai_summaryСгенерировать или вернуть закэшированное AI-саммари инцидента✏️
incident_rate_ai_summaryПоставить оценку AI-саммари — positive или negative✏️
incident_get_report_pdfСкачать PDF-отчёт по инциденту — возвращается в виде Base64
incident_deleteБезвозвратно удалить закрытый инцидент со всей диагностикой — аптайм пересчитается вверх✏️
incident-comments — 5 инструментов
ИнструментЧто делаетИзменяет данные
incident_comment_listВсе комментарии к инциденту
incident_comment_createСоздать комментарий с текстом и вложениями — при локальном запуске можно передать пути к файлам, сервер загрузит их сам✏️
incident_comment_updateОтредактировать текст или список вложений✏️
incident_comment_deleteУдалить комментарий и все его файлы⚠️
incident_comment_upload_fileЗагрузить локальный файл для использования как вложение — только при локальном запуске✏️
status-pages — 12 инструментов
ИнструментЧто делаетИзменяет данные
status_page_listВсе страницы статуса аккаунта
status_page_getПолная конфигурация одной страницы
status_page_check_slugПроверка, свободен ли slug
status_page_check_domainПроверка свободного кастомного домена и правильности CNAME-записи
status_page_createСоздать страницу статуса✏️
status_page_updateЧастично обновить настройки✏️
status_page_set_groupsПолностью заменить структуру групп и список серверов на странице✏️
status_page_publishОпубликовать (published) или скрыть (unpublished) страницу✏️
status_page_deleteУдалить страницу⚠️
status_page_subscriber_listПодписчики страницы (емейл, статус, даты) и сводка с лимитом
status_page_subscriber_exportЭкспорт подписчиков в CSV
status_page_subscriber_deleteУдалить подписчика⚠️
status-page-reports — 14 инструментов

Инцидент-отчёты:

ИнструментЧто делаетИзменяет данные
status_page_incident_report_listВсе опубликованные отчёты на странице
status_page_incident_report_publishОпубликовать новый отчёт со стартовым сообщением и статусами влияния на каждый сервер✏️
status_page_incident_report_updateИзменить поля отчёта — заголовок, время начала✏️
status_page_incident_report_update_addДобавить сообщение в таймлайн с новыми статусами серверов✏️
status_page_incident_report_update_editОтредактировать текст одного сообщения✏️
status_page_incident_report_update_deleteУдалить сообщение из таймлайна. Первичное сообщение удалить нельзя⚠️
status_page_incident_report_deleteУдалить отчёт целиком⚠️

Плановые работы:

ИнструментЧто делаетИзменяет данные
status_page_maintenance_listВсе запланированные работы на странице
status_page_maintenance_scheduleЗапланировать работы — окно времени и список затронутых сервисов✏️
status_page_maintenance_updateИзменить поля записи о работах✏️
status_page_maintenance_update_addДобавить сообщение в таймлайн✏️
status_page_maintenance_update_editОтредактировать текст одного сообщения✏️
status_page_maintenance_update_deleteУдалить сообщение из таймлайна. Первичное сообщение удалить нельзя⚠️
status_page_maintenance_deleteУдалить запись о работах целиком⚠️
notifications — 11 инструментов

Вебхуки:

ИнструментЧто делаетИзменяет данные
webhook_listВсе вебхуки аккаунта
webhook_createСоздать вебхук с подписками (service_alerts, ssl_alerts и т.д.) и опциональным секретом✏️
webhook_updateЧастично обновить вебхук✏️
webhook_deleteУдалить вебхук⚠️
webhook_testОтправить тестовый запрос в вебхук✏️

Правила нотификаций — email, telegram, max для каждого типа подписки:

ИнструментЧто делаетИзменяет данные
notification_rule_listТекущая матрица правил; project_id выбирает проект для типов о мониторинге
notification_rule_setВключить или выключить каналы для одного типа подписки — в проекте или в аккаунте✏️

Email-каналы:

ИнструментЧто делаетИзменяет данные
notification_email_listВсе email-адреса аккаунта со статусом подтверждения
notification_email_addДобавить адрес и отправить на него код подтверждения✏️
notification_email_confirmПодтвердить адрес кодом из письма✏️
notification_email_resendПовторно отправить код подтверждения✏️
notification_email_removeУдалить адрес из списка⚠️

Примеры запросов к ассистенту

Несколько фраз, которые ассистент сможет выполнить сразу после установки:

  • «Покажи все серверы, которые сейчас не отвечают.»
  • «Заведи сервер 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, подпиши его секретом ….»
  • «Включи режим отпуска до понедельника, 9 утра.»

Что делать при ошибках

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 — опечатка в названии группы. Допустимые значения перечислены в тексте ошибки и в разделе Группы инструментов.

Совместимость

КомпонентВерсия
Подключение по адресубез установки; клиент с Streamable HTTP и заголовками
Node.js18.17 и новее — только для локального запуска
MCP SDK@modelcontextprotocol/sdk ≥ 1.0
API Statuserv1 (https://api.statuser.cloud)
КлиентыClaude Code, Cursor, VS Code, Windsurf — по адресу и локально; Claude Desktop, Zed — локально

Пакет публикуется как ESM. Если ваш MCP-клиент запускает Node более старой версии — обновите его минимум до 18.17 или подключитесь по адресу.

Смотрите также

CLI Statuser работает с тем же API из терминала и CI: добавляет и настраивает серверы, описывает серверы и сценарии как код, ставит проверки на паузу на время деплоя, отправляет heartbeat из крон-задач.

Обратная связь

Ошибки и предложения — в issues. Об уязвимостях сообщайте приватно — см. SECURITY.md.

Общие вопросы по API — в документации Statuser или на [email protected].

Лицензия

MIT — см. LICENSE.

Source: README.md at commit 14cec21

Tools

92

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`.

Takes no parameters.

account_update

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.

Parametersnameconfirmtimezoneis_ai_assistant_enabled

current_plan_get

Get 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.

Takes no parameters.

plan_list

List public plans

Returns the public Statuser plan catalog with prices, limits and features. No authentication required.

Takes no parameters.

activity_log_list

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.

Parameterstofromlimitactionoffsetsearchcategorytarget_idactor_typetarget_type

activity_log_export

Export 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.

Parameterstofromactionsearchcategorytarget_idactor_typetarget_type

holiday_mode_get

Get 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).

Takes no parameters.

holiday_mode_set

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.

Parametersconfirmholiday_until

two_factor_info

Get 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).

Takes no parameters.

telegram_linked_list

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.

Takes no parameters.

telegram_set_topic

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.

Parametersconfirmtelegram_idrequiredmessage_thread_idrequired

max_linked_list

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.

Takes no parameters.

max_set_2fa_account

Change 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.

Parametersmax_idrequiredconfirm

project_list

List 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.

Takes no parameters.

project_create

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.

Parametersnamerequiredconfirm

project_update

Rename project

Renames a project. Only the name can be changed here — moving content between projects is done through `monitor_update` and `status_page_update`.

Parametersidrequirednamerequiredconfirm

project_delete

Delete 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.

Parametersidrequiredconfirmmove_to_project_id

project_reorder

Reorder 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).

Parametersconfirmproject_idsrequired

project_channel_list

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.

Parametersproject_idrequired

project_channel_set

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.

Parameterstyperequiredconfirmchannel_idrequiredis_enabledrequiredproject_idrequired

monitor_list

List monitors

Lists every monitor on the account with current status and configuration. Use `limit`/`offset` to paginate — recommended for accounts with many monitors.

Parameterslimitoffsetproject_id

monitor_get

Get monitor

Returns full configuration and latest status for one monitor by id.

Parametersidrequired

monitor_create

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).

Parametersbodyhostrequirednameportconfirmheaderskeywordprotocolrequiredllm_modellocationsproject_iddescription+22 more

monitor_update

Update monitor

Partial update: pass only the fields you want to change. Plan-feature constraints from `monitor_create` apply on update too.

Parametersidrequiredbodyhostnameportconfirmheaderskeywordprotocolllm_modellocationsproject_id+23 more

monitor_pause

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.

Parametersidrequiredactionrequiredconfirm

monitor_delete

Delete monitor

Permanently deletes a monitor with its history, incidents and alert settings. Irreversible. To pause checks temporarily, use `monitor_pause` instead.

Parametersidrequiredconfirm

monitor_test_notify

Send 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.

Parametersidrequiredconfirm

monitor_run_scenario

Run 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.

Parametersidrequiredconfirm

monitor_get_scenario_run_latest

Get 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`).

Parametersidrequired

scenario_test

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).

Parametersconfirmlocationserver_idscenario_envrequest_timeoutscenario_scriptrequired

monitor_get_checks

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.

Parametersidrequiredend_datestart_date

monitor_get_heartbeat_events

Get 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.

Parametersidrequiredend_datestart_date

monitor_heartbeat_ping

Send 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.

Parametersidrequiredfailconfirm

monitor_get_dns_history

Get 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.

Parametersidrequired

incident_list

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.

Parametersstatusserver_idproject_id

incident_get

Get 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`.

Parametersidrequired

incident_get_events

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.

Parametersidrequired

incident_get_server

Get monitor by incident

Shortcut: returns the monitor linked to a given incident in one call.

Parametersidrequired

incident_get_scenario_details

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.

Parametersidrequired

incident_generate_ai_summary

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.

Parametersidrequiredconfirm

incident_rate_ai_summary

Rate AI summary

Submits feedback on the AI summary: `positive` or `negative`. Pass `rating: null` to clear a previously set rating.

Parametersidrequiredratingrequiredconfirm

incident_get_report_pdf

Download 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.

Parametersidrequiredsections

incident_delete

Delete 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.

Parametersidrequiredconfirm

incident_comment_list

List incident comments

Lists all comments on an incident in chronological order, including attached files and timestamps.

Parametersincident_idrequired

incident_comment_create

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.

Parametersconfirmincident_idrequiredcomment_textrequiredattached_filesattached_local_files

incident_comment_update

Update 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.

Parametersconfirmcomment_idrequiredincident_idrequiredcomment_textattached_files

incident_comment_delete

Delete incident comment

Permanently deletes a comment along with all attached files. Irreversible — neither comment nor files can be recovered.

Parametersconfirmcomment_idrequiredincident_idrequired

incident_comment_upload_file

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.

Parametersconfirmlocal_pathrequiredincident_idrequired

status_page_list

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.

Parametersproject_id

status_page_get

Get 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.

Parametersidrequired

status_page_check_slug

Check if a slug is available

Returns `{ available: boolean }` for the given slug. Useful before creating or renaming a status page.

Parametersslugrequired

status_page_check_domain

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.

Parametersdomainrequired

status_page_create

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.

Parametersnamerequiredslugdomainconfirmlanguagelogo_urlpasswordtimezoneis_indexedproject_idtheme_modecompany_url+12 more

status_page_update

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.

Parametersidrequirednameslugdomainconfirmlanguagelogo_urlpasswordtimezoneis_indexedproject_idtheme_mode+13 more

status_page_publish

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.

Parametersidrequiredactionrequiredconfirm

status_page_set_groups

Replace 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.

Parametersidrequiredgroupsrequiredconfirm

status_page_delete

Delete 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"`.

Parametersidrequiredconfirm

status_page_subscriber_list

List 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.

Parametersstatus_page_idrequired

status_page_subscriber_export

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.

Parametersstatus_page_idrequired

status_page_subscriber_delete

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`.

Parametersconfirmsubscriber_idrequiredstatus_page_idrequired

status_page_incident_report_list

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.

Parametersstatus_page_idrequired

status_page_incident_report_publish

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.

Parameterstitlerequiredconfirmserversrequiredstarted_atrequiredincident_idsstatus_page_idrequiredinitial_messagerequired

status_page_incident_report_update

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`.

Parameterstitleconfirmreport_idrequiredstarted_atstatus_page_idrequired

status_page_incident_report_update_add

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.

Parametersconfirmmessagerequiredserversrequiredreport_idrequiredpublished_atstatus_page_idrequired

status_page_incident_report_update_edit

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.

Parametersconfirmmessagerequiredreport_idrequiredupdate_idrequiredstatus_page_idrequired

status_page_incident_report_update_delete

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.

Parametersconfirmreport_idrequiredupdate_idrequiredstatus_page_idrequired

status_page_incident_report_delete

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.

Parametersconfirmreport_idrequiredstatus_page_idrequired

status_page_maintenance_list

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.

Parametersstatus_page_idrequired

status_page_maintenance_schedule

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.

Parameterstitlerequiredconfirmserversrequiredended_atrequiredstarted_atrequireddescriptionrequiredstatus_page_idrequired

status_page_maintenance_update

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.

Parameterstitleconfirmserversended_atstarted_atdescriptionmaintenance_idrequiredstatus_page_idrequired

status_page_maintenance_update_add

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.

Parametersconfirmmessagerequiredpublished_atmaintenance_idrequiredstatus_page_idrequired

status_page_maintenance_update_edit

Edit a timeline update in planned maintenance

Edits the text of a previously published maintenance timeline message (`message` only).

Parametersconfirmmessagerequiredupdate_idrequiredmaintenance_idrequiredstatus_page_idrequired

status_page_maintenance_update_delete

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.

Parametersconfirmupdate_idrequiredmaintenance_idrequiredstatus_page_idrequired

status_page_maintenance_delete

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.

Parametersconfirmmaintenance_idrequiredstatus_page_idrequired

status_page_announcement_list

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.

Parametersstatus_page_idrequired

status_page_announcement_create

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`.

Parametersbodyrequiredlinktypetitlerequiredconfirmended_atstarted_atstatus_page_idrequired

status_page_announcement_update

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.

Parametersbodylinktypetitleconfirmended_atstarted_atstatus_page_idrequiredannouncement_idrequired

status_page_announcement_delete

Delete an announcement from status page

Removes an announcement from the status page. Irreversible.

Parametersconfirmstatus_page_idrequiredannouncement_idrequired

webhook_list

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.

Takes no parameters.

webhook_create

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.

Parametersurlrequirednamerequiredsecretconfirmproject_idssubscriptionsrequired

webhook_update

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.

Parametersidrequiredurlnamesecretconfirmproject_idssubscriptions

webhook_delete

Delete 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.

Parametersidrequiredconfirm

webhook_test

Send 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.

Parametersidrequiredconfirm

notification_rule_list

List 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.

Parametersproject_id

notification_rule_set

Set 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.

Parametersmaxrequiredtyperequiredemailrequiredslackpachcaconfirmdiscordtelegramrequiredmattermostproject_idrocketchat

notification_email_list

List 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.

Takes no parameters.

notification_email_add

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.

Parametersemailrequiredconfirm

notification_email_confirm

Confirm 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`.

Parametersidrequiredcoderequiredconfirm

notification_email_resend

Resend 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).

Parametersidrequiredconfirm

notification_email_remove

Remove 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.

Parametersidrequiredconfirm

Version history

9
  1. v0.6.1LatestNov 7, 2026
  2. v0.6.0Nov 6, 2026
  3. v0.5.1Nov 4, 2026
  4. v0.5.0Nov 3, 2026
  5. v0.4.10Oct 19, 2026
  6. v0.4.9Oct 18, 2026
  7. v0.4.8Oct 10, 2026
  8. v0.4.7Sep 27, 2026
  9. v0.4.5Sep 23, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts