Statuser MCP Server
OfficialSummary: This MCP server gives an AI assistant full read/write control over a Statuser account — monitoring, incidents, status pages, notifications, projects, and account settings — with all destructive actions gated behind a confirm: true flag.
Account & plan management — read the profile, update name/timezone/AI-assistant flag, view current plan features and limits, browse the public plan catalog.
Activity log — list audit entries (who changed what, when, from where) with filters by action, category, actor, target and time; export to CSV on eligible plans.
Holiday mode & 2FA — toggle vacation mode (suppresses personal notifications), inspect 2FA state and allowed methods.
Telegram & MAX messaging channels — list linked chats, set notification topic, get MAX deeplinks, unlink MAX, change the MAX 2FA account.
Projects — list/create/rename/reorder/delete projects, and switch notification channels on or off per project.
Monitors — list/get/create/update/delete servers across protocols (ping, http, keyword, tcp, dns, heartbeat, llm); pause/unpause; send test notifications; fetch aggregated checks, heartbeat events and DNS-change history.
Incidents — list/get incidents with diagnostics, timelines and linked server; generate or rate AI summaries; download PDF reports; permanently delete closed incidents.
Incident comments — list/create/update/delete comments; upload local files (local mode) and manage attachments.
Status pages — list/get/create/update/delete pages; check slug and custom-domain availability; publish/unpublish; replace groups and monitors; manage subscribers (list, export CSV, delete).
Status-page reports & maintenance — publish incident reports with timelines and per-server impact; manage report updates and deletions; schedule/edit planned maintenance with timeline updates; manage banner announcements.
Notifications — manage webhooks (create/update/delete/test with subscriptions and secrets), notification rules per subscription type, and email channels (add, confirm, resend, remove).
Write protection — all mutating tools require
confirm: true(orSTATUSER_ALLOW_WRITE=1locally) and are annotated withdestructiveHint/readOnlyHint.
Allows managing Telegram notification channels and subscription rules in Statuser, including binding Telegram accounts and configuring how status updates are delivered to Telegram.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Statuser MCP Servercheck the status of all my monitored servers and list any open incidents"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP-сервер Statuser
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, история действий, проекты.
MCP-сервер обращается к API от имени аккаунта-владельца ключа. Все ограничения тарифа сохраняются — например, AI-саммари и кастомный домен будут доступны только если они включены в вашем плане. Сверяйтесь с инструментомcurrent_plan_get.
Related MCP server: PagerDuty MCP Server
Содержание
Быстрый старт
Создайте API-ключ в панели управления Statuser.
Добавьте сервер в MCP-клиент. Проще всего — по адресу
https://mcp.statuser.cloudс заголовкомAuthorization: Bearer ваш_ключ; готовые конфиги — ниже.Перезапустите клиент. Инструменты появятся под именем
statuser.
Если клиент подключает только локальные серверы — например, Claude Desktop, — используйте локальный запуск через npx.
Подключение по адресу
Параметр | Значение |
Адрес |
|
Транспорт | Streamable HTTP |
Авторизация | заголовок |
Claude Code
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 — для одного:
{
"mcpServers": {
"statuser": {
"url": "https://mcp.statuser.cloud",
"headers": {
"Authorization": "Bearer ваш_ключ"
}
}
}
}VS Code
В .vscode/mcp.json. VS Code спросит ключ при первом подключении, в самом файле его не будет:
{
"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:
{
"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-ключ и сам сохранит конфиг.
Перед установкой создайте API-ключ в панели управления Statuser — клиент попросит его в момент установки. Кнопка для Cursor подставит плейсхолдер API_KEY_HERE; замените его на свой ключ в форме, которую откроет Cursor.
Для Claude Desktop, Claude Code, Windsurf, Zed и других клиентов автоустановки пока нет — там нужен ручной конфиг ниже.
Claude Desktop
Откройте Настройки → Developer → Edit Config и добавьте в claude_desktop_config.json:
{
"mcpServers": {
"statuser": {
"command": "npx",
"args": ["-y", "@statuser/mcp"],
"env": {
"STATUSER_API_KEY": "ваш_ключ"
}
}
}
}После сохранения полностью закройте Claude Desktop (Cmd/Ctrl + Q) и откройте заново — простого закрытия окна недостаточно.
Claude Code
В корне проекта создайте .mcp.json:
{
"mcpServers": {
"statuser": {
"command": "npx",
"args": ["-y", "@statuser/mcp"],
"env": {
"STATUSER_API_KEY": "ваш_ключ"
}
}
}
}Или одной командой:
claude mcp add statuser --env STATUSER_API_KEY=ваш_ключ -- npx -y @statuser/mcpCursor
Самый быстрый путь — кнопка «Установить в Cursor» выше. Если нужно вручную, Настройки → MCP → Add new server:
{
"mcpServers": {
"statuser": {
"command": "npx",
"args": ["-y", "@statuser/mcp"],
"env": {
"STATUSER_API_KEY": "ваш_ключ"
}
}
}
}VS Code (GitHub Copilot Chat и другие MCP-расширения)
Самый быстрый путь — кнопка «Установить в VS Code» выше. Если нужно вручную, Настройки → MCP servers → Add:
{
"statuser": {
"command": "npx",
"args": ["-y", "@statuser/mcp"],
"env": {
"STATUSER_API_KEY": "ваш_ключ"
}
}
}Любой клиент с поддержкой MCP принимает один и тот же формат запуска:
command:npxargs:["-y", "@statuser/mcp"]env.STATUSER_API_KEY: ваш ключ
Название поля настройки (mcpServers, mcp.servers, experimental.mcp и т.п.) различается между клиентами — сверяйтесь с их документацией.
Настройки
При локальном запуске параметры задаются переменными окружения в блоке env конфига клиента. При подключении по адресу настраивать нечего, кроме ключа в заголовке и групп инструментов в адресе.
Переменная | Обязательно | По умолчанию | Описание |
| да | — | API-ключ от statuser.cloud/my/account/api-keys. Без него сервер не запустится. |
| нет |
| Если |
| нет |
| Список включённых групп инструментов через запятую. Значение |
| нет |
| Альтернативный базовый URL. Нужен только если вы проксируете API или работаете со staging-окружением. |
Группы инструментов
Больше 80 инструментов разбиты на 8 логических групп. По умолчанию включены все; оставить только нужные можно переменной STATUSER_TOOLSETS при локальном запуске или параметром ?toolsets= в адресе.
Зачем это бывает удобно:
меньше инструментов в контексте — ассистент точнее выбирает подходящий;
меньше токенов в системном промпте клиента;
если ключ имеет доступ ко всему API, а вам нужны только серверы — можно показать ассистенту только их.
Группа | Что включает | Примеры инструментов |
| Профиль, тариф, режим отпуска, 2FA, привязки Telegram и MAX, история действий |
|
| Проекты — области внутри аккаунта: свои серверы, страницы статуса и правила уведомлений |
|
| Серверы, их проверки, heartbeat-события, история изменений DNS |
|
| Инциденты, события, AI-саммари, PDF-отчёт, удаление |
|
| Комментарии к инцидентам с вложениями |
|
| Страницы статуса, группы, серверы, домены, slug, подписчики |
|
| Публикация инцидент-отчётов и плановых работ с таймлайном обновлений |
|
| Правила нотификаций, вебхуки, email-каналы |
|
Примеры значения:
// только серверы и инциденты
"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-сервер по умолчанию блокирует все инструменты, которые что-либо создают, изменяют или удаляют. Это защищает от того, чтобы ассистент случайно удалил сервер продакшна или отписал нужного человека от уведомлений.
Инструменты только для чтения (*_list, *_get, monitor_get_checks, incident_get_report_pdf и подобные) работают всегда без подтверждения.
При попытке вызвать заблокированный инструмент сервер возвращает осмысленную ошибку с двумя способами разрешить вызов:
Разрешить навсегда в конфиге клиента:
"STATUSER_ALLOW_WRITE": "1"в блокеenv. Подходит, если вы доверяете ассистенту и заранее очертили его область работы черезSTATUSER_TOOLSETS.Разрешить разово в самом запросе: передайте ассистенту явное указание добавить аргумент
confirm: trueк конкретному вызову. Это удобно, когда основная сессия должна оставаться read-only, но один-два изменения всё-таки нужны.
При подключении по адресу работает только второй способ: переменной окружения у удалённого сервера нет, каждое изменение подтверждается confirm: true.
Под защитой находятся в том числе:
удаление серверов, страниц статуса, комментариев, отчётов и плановых работ;
удаление вебхуков и email-каналов;
постановка серверов на паузу и снятие;
публикация и скрытие страниц статуса;
включение режима отпуска;
отправка тестовых уведомлений.
Инструменты дополнительно помечаются MCP-аннотациями destructiveHint и readOnlyHint. Клиенты, которые их читают, добавляют поверх нашего собственный экран подтверждения.
Инструменты
Полный список с описанием параметров MCP-клиент покажет автоматически при подключении. Ниже — обзор по группам. Условные обозначения: ✏️ — инструмент изменяет данные, ⚠️ — действие необратимо.
Инструмент | Что делает | Изменяет данные |
| Профиль текущего аккаунта | |
| Изменить имя, часовой пояс или флаг отображения AI-ассистента | ✏️ |
| Текущий тариф со всеми возможностями и лимитами | |
| Публичный каталог тарифов | |
| Статус режима отпуска | |
| Включить режим отпуска до указанной даты или выключить | ✏️ |
| Сведения о текущем втором факторе и доступных методах | |
| Привязанные Telegram-аккаунты и чаты | |
| Привязать топик в Telegram-группе для уведомлений или снять привязку | ✏️ |
| Привязанные аккаунты и групповые чаты MAX | |
| Получить ссылки для привязки MAX — личного чата или групповой | |
| Отвязать MAX-аккаунт | ✏️ |
| Сменить MAX-аккаунт, на который приходят коды второго фактора | ✏️ |
Инструмент | Что делает | Изменяет данные |
| Проекты аккаунта — с них начинается работа с областями | |
| Завести проект; лимит зависит от тарифа | ✏️ |
| Переименовать проект | ✏️ |
| Удалить проект, перенеся его содержимое в другой | ✏️ ⚠️ |
| Задать порядок проектов в панели | ✏️ |
| Каналы аккаунта и их положение в этом проекте | |
| Включить или выключить канал в проекте | ✏️ |
Проект — область внутри аккаунта: ему принадлежат серверы, страницы статуса и правила уведомлений о мониторинге. Каналы связи, тариф и API-ключи остаются общими. Вызовы без project_id читают весь аккаунт, а создают в самом старом проекте — так работали интеграции до появления проектов, и это поведение сохранено.
Инструмент | Что делает | Изменяет данные |
| Список всех серверов аккаунта | |
| Полная карточка одного сервера | |
| Добавить новый сервер — тип проверки | ✏️ |
| Частичное обновление настроек сервера | ✏️ |
| Поставить проверки на паузу или возобновить ( | ✏️ |
| Удалить сервер вместе со всей историей | ⚠️ |
| Отправить тестовое уведомление по всем настроенным каналам | ✏️ |
| Агрегированные результаты проверок для графиков uptime и latency | |
| События heartbeat для серверов с | |
| История изменений DNS-записей для серверов с |
Инструмент | Что делает | Изменяет данные |
| Инциденты по всему аккаунту или по конкретному серверу | |
| Подробная карточка с диагностикой — скриншот, replay, | |
| Хронологическая лента событий — изменения статуса, уведомления, комментарии, скриншот и сетевая диагностика | |
| Связанный с инцидентом сервер одним запросом | |
| Сгенерировать или вернуть закэшированное AI-саммари инцидента | ✏️ |
| Поставить оценку AI-саммари — | ✏️ |
| Скачать PDF-отчёт по инциденту — возвращается в виде Base64 | |
| Безвозвратно удалить закрытый инцидент со всей диагностикой — аптайм пересчитается вверх | ✏️ |
Инструмент | Что делает | Изменяет данные |
| Все комментарии к инциденту | |
| Создать комментарий с текстом и вложениями — при локальном запуске можно передать пути к файлам, сервер загрузит их сам | ✏️ |
| Отредактировать текст или список вложений | ✏️ |
| Удалить комментарий и все его файлы | ⚠️ |
| Загрузить локальный файл для использования как вложение — только при локальном запуске | ✏️ |
Инструмент | Что делает | Изменяет данные |
| Все страницы статуса аккаунта | |
| Полная конфигурация одной страницы | |
| Проверка, свободен ли slug | |
| Проверка свободного кастомного домена и правильности CNAME-записи | |
| Создать страницу статуса | ✏️ |
| Частично обновить настройки | ✏️ |
| Полностью заменить структуру групп и список серверов на странице | ✏️ |
| Опубликовать ( | ✏️ |
| Удалить страницу | ⚠️ |
| Подписчики страницы (емейл, статус, даты) и сводка с лимитом | |
| Экспорт подписчиков в CSV | |
| Удалить подписчика | ⚠️ |
Инцидент-отчёты:
Инструмент | Что делает | Изменяет данные |
| Все опубликованные отчёты на странице | |
| Опубликовать новый отчёт со стартовым сообщением и статусами влияния на каждый сервер | ✏️ |
| Изменить поля отчёта — заголовок, время начала | ✏️ |
| Добавить сообщение в таймлайн с новыми статусами серверов | ✏️ |
| Отредактировать текст одного сообщения | ✏️ |
| Удалить сообщение из таймлайна. Первичное сообщение удалить нельзя | ⚠️ |
| Удалить отчёт целиком | ⚠️ |
Плановые работы:
Инструмент | Что делает | Изменяет данные |
| Все запланированные работы на странице | |
| Запланировать работы — окно времени и список затронутых сервисов | ✏️ |
| Изменить поля записи о работах | ✏️ |
| Добавить сообщение в таймлайн | ✏️ |
| Отредактировать текст одного сообщения | ✏️ |
| Удалить сообщение из таймлайна. Первичное сообщение удалить нельзя | ⚠️ |
| Удалить запись о работах целиком | ⚠️ |
Вебхуки:
Инструмент | Что делает | Изменяет данные |
| Все вебхуки аккаунта | |
| Создать вебхук с подписками ( | ✏️ |
| Частично обновить вебхук | ✏️ |
| Удалить вебхук | ⚠️ |
| Отправить тестовый запрос в вебхук | ✏️ |
Правила нотификаций — email, telegram, max для каждого типа подписки:
Инструмент | Что делает | Изменяет данные |
| Текущая матрица правил; | |
| Включить или выключить каналы для одного типа подписки — в проекте или в аккаунте | ✏️ |
Email-каналы:
Инструмент | Что делает | Изменяет данные |
| Все 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, подпиши его секретом….»«Включи режим отпуска до понедельника, 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.js | 18.17 и новее — только для локального запуска |
MCP SDK |
|
API Statuser |
|
Клиенты | Claude Code, Cursor, VS Code, Windsurf — по адресу и локально; Claude Desktop, Zed — локально |
Пакет публикуется как ESM. Если ваш MCP-клиент запускает Node более старой версии — обновите его минимум до 18.17 или подключитесь по адресу.
Обратная связь
Ошибки и предложения — в issues. Об уязвимостях сообщайте приватно — см. SECURITY.md.
Общие вопросы по API — в документации Statuser или на info@statuser.cloud.
Лицензия
MIT — см. LICENSE.
Available Tools
87 toolsaccount_getGet account profileARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds value by listing the exact fields returned, which goes beyond what annotations convey. It also clarifies what is not included (plan/limit info). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first states purpose and lists fields, the second provides an exclusion and alternative. Every sentence earns its place, information is front-loaded, and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter read tool with no output schema, the description enumerates the returned fields and clarifies what is not included. It provides enough context to invoke and interpret results, covering the essential contract for a simple getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters, so parameter description is unnecessary. The description contains no parameter info, which is appropriate for a parameterless tool; the baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Returns'), a specific resource ('profile of the current account'), and enumerates the included fields (id, email, name, status, avatar, etc.). It explicitly excludes plan/limit info and names the sibling `current_plan_get`, distinguishing it from other account tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when not to use it ('Plan/limit info is not here') and points to the correct alternative (`current_plan_get`). It does not mention other siblings like `account_update` or explicitly state 'use this when you need the current account profile', but the description itself defines the use case clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_updateUpdate account profileADestructiveInspect
Partial update of the account profile. Mutable fields: name, timezone, is_ai_assistant_enabled. Pass only the fields you want to change.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| timezone | No | ||
| is_ai_assistant_enabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey write and destructive potential, so the description adds the valuable 'partial update' semantics and the exact mutable-field whitelist. It does not describe the confirm authorization override, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core partial-update behavior, lists the relevant fields, and ends with a direct usage instruction. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple partial-update tool with annotations covering destructiveness and a schema that documents the confirm override, the description is sufficient for correct invocation. It does not explain return values, but no output schema exists and the update semantics are clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (25%), but the description compensates by identifying which schema properties are mutable and by instructing that omitted fields remain unchanged. This adds real meaning beyond the bare property names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Partial update') and resource ('account profile'), and goes further by naming the mutable fields. This clearly distinguishes it from account_get and other account/profile-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use: update profile fields and pass only those you intend to change. It does not explicitly mention alternatives such as account_get for reads, but the usage intent is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
activity_log_exportExport account activity log as CSVARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Upper time bound (inclusive), ISO 8601. | |
| from | No | Lower time bound (inclusive), ISO 8601. Cannot reach past the plan retention window. | |
| action | No | Action codes in `<object>.<verb>` form, e.g. `server.pause`, `status_page.delete`, `auth.login`. Combined with `search` as OR. | |
| search | No | Case-insensitive search by object label (server name or host, status page name) and actor label (API key name, email). | |
| category | No | Sections: `monitoring` (servers, notification channels, webhooks, holiday mode), `status_pages` (status pages, reports, maintenances, announcements, incidents), `security` (login, password, sessions, API keys, 2FA, account profile), `billing` (plan, payer, cards). | |
| target_id | No | Object id as a string (sessions use UUIDs). Together with `target_type` gives the history of one object. | |
| actor_type | No | Who performed the action: `user` (account owner via panel, bots or Statuser AI), `api_key` (public API or MCP), `system` (schedulers and plan enforcement). | |
| target_type | No | Type of the object the entry is about. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only and open-world hints, but the description goes well beyond them: 50,000 row cap, truncated true semantics, plan gating with error code, the export being recorded as activity_log.export, and the CSV column list. This is substantial context for a read-only export and does not contradict the readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but well-organized: action first, then filters, columns, limits, plan gate, side effect, and usage preference. The column list is justified because there is no output schema, and every sentence carries operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, plan gating, a truncation contract, and no output schema, the description covers all operational essentials: what it returns (CSV columns), how much it returns, how to handle truncation, when it fails, and when to prefer activity_log_list. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all 8 parameters at 100% coverage, so the description doesn't need to redefine them. It adds meaningful semantics by pointing to the sibling filter set ('same filters as activity_log_list'), clarifying that pagination is ignored, and advising to narrow from/to or filters when truncation occurs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Downloads the activity log as CSV', and immediately distinguishes it from activity_log_list by noting it uses the same filters with pagination ignored. It also states when it should not be used ('Prefer activity_log_list for questions'), so an agent can tell it apart from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'Prefer activity_log_list for questions — use this tool only when the user explicitly wants a file or a full dump.' It also documents the plan prerequisite and the exact failure code (activity_log_export_unavailable), leaving no ambiguity about when the tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
activity_log_listList account activity logARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Upper time bound (inclusive), ISO 8601. | |
| from | No | Lower time bound (inclusive), ISO 8601. Cannot reach past the plan retention window. | |
| limit | No | Page size, 1..100 (default 20). | |
| action | No | Action codes in `<object>.<verb>` form, e.g. `server.pause`, `status_page.delete`, `auth.login`. Combined with `search` as OR. | |
| offset | No | Offset from the newest entry (default 0). | |
| search | No | Case-insensitive search by object label (server name or host, status page name) and actor label (API key name, email). | |
| category | No | Sections: `monitoring` (servers, notification channels, webhooks, holiday mode), `status_pages` (status pages, reports, maintenances, announcements, incidents), `security` (login, password, sessions, API keys, 2FA, account profile), `billing` (plan, payer, cards). | |
| target_id | No | Object id as a string (sessions use UUIDs). Together with `target_type` gives the history of one object. | |
| actor_type | No | Who performed the action: `user` (account owner via panel, bots or Statuser AI), `api_key` (public API or MCP), `system` (schedulers and plan enforcement). | |
| target_type | No | Type of the object the entry is about. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint and openWorldHint, and the description adds substantial behavioral detail: newest-first ordering, entry structure (action, actor, source, target, masked changes, details, ip, location), and constraints (retention_days, support staff never included). It also mentions 'masked changes' implying redaction. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but efficient: it leads with the purpose, gives concrete example questions, then outlines the response structure and key limitations. Every sentence adds value, and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains the response fields (action, actor, source, target, masked changes, details, ip, location) and the retention_days field. It also covers edge cases (plan window limits, support staff excluded). For a list tool with 10 optional parameters, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented. The description reinforces the action code format and search semantics but does not add new parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool returns the account audit log newest first, specifying the content (who changed what and when) and sources (panel, bots, API keys, system). It is clearly distinct from siblings like activity_log_export, which presumably handles exports. The verb 'list' plus resource 'activity log' is precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use it via example questions ('who paused this server', 'when was the account logged into'), and notes limitations (plan window, support staff excluded). It does not explicitly name alternative tools or state when not to use it, but the purpose is clear enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
current_plan_getGet current plan and feature flagsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals no state modification. The description adds behavioral context by listing the returned subscription fields and framing the tool as a gating check, which helps the agent understand its role. It does not over-promise side effects, staying consistent with the read-only annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence lists the return contents with useful field names, and the second provides a practical purpose. Every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only getter, the description is complete. It names the output fields, explains the gating use case, and the annotations cover side-effect safety. No output schema is present, but the field listing compensates adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds value by documenting the shape of the response payload, including the features object and subscription metadata, even though it does not describe parameters (there are none).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a concrete verb and resource: 'Returns the active plan'. It enumerates exactly what is returned (price, features object, subscription metadata) and names the specific fields (`valid_until`, `current_billing_period`, `pending_plan`). The title reinforces the resource, and the description clearly distinguishes this from a generic plan list by focusing on the current plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit use case: 'Useful to check gates before calling feature-restricted endpoints.' This tells the agent when to call the tool. It does not explicitly name alternatives like plan_list or state when not to use it, but the use case is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
holiday_mode_getGet holiday-mode statusARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, and the description adds meaningful behavioral context: while holiday mode is active, personal incident notifications are suppressed but checks and incident recording continue. This goes beyond the structured annotations and helps the agent understand the operational impact of the returned state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the primary return value first, explains possible values, and then provides the behavioral consequence. Every sentence adds value and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only status getter with no output schema, the description gives the return shape, the null semantics, and the real-world effect of the mode. Nothing critical is missing for an agent to invoke and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema carries no parameter burden. The description adds semantic meaning to the output field and explains the null case, which is useful and complete for a parameterless getter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('returns') and a specific resource ('holiday/vacation mode'), and also explains the value of the returned field (`holiday_until`). This distinguishes it from the sibling `holiday_mode_set` without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Although it does not explicitly name an alternative tool, it gives clear context for when this read-only status check is useful and explains what the state means. The sibling `holiday_mode_set` is obviously the complementary mutation tool, so usage context is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
holiday_mode_setEnable or disable holiday modeADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| holiday_until | No | ISO 8601 timestamp (must be in the future) at which holiday mode ends. Omit to disable holiday mode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds valuable behavioral detail: 'While active, personal notifications are suppressed; monitors keep running and incidents are still recorded.' This clarifies the boundary of side effects and reassures an agent that monitoring and incident capture remain unaffected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the action, the input condition, and the behavioral consequences with no filler. The enable/disable logic is front-loaded and immediately actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter setter with no output schema, the description covers the input semantics and the observable effects of the mode. The confirm behavior is documented in the parameter schema, and no additional context is needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description mostly restates what the schema already says: holiday_until is an ISO 8601 timestamp, and omitting it disables holiday mode. The confirm parameter is well documented in the schema, so the description adds no significant new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pairing: it 'Enables holiday mode until the given timestamp' or 'disables it if holiday_until is omitted.' This clearly distinguishes it from the sibling holiday_mode_get and from other monitor/incident tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The conditional phrasing gives clear usage context: call this to enable holiday mode with a future timestamp, or omit the timestamp to disable it. It does not explicitly enumerate exclusions or name the alternative holiday_mode_get, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_comment_createCreate incident commentADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| incident_id | Yes | ||
| comment_text | Yes | ||
| attached_files | No | ||
| attached_local_files | No | Local absolute paths to upload as attachments before posting the comment. Combined with `attached_files`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations that mark this as a write/destructive call, the description discloses a plan prerequisite (`incident_comments_enabled`) and the upload-before-comment behavior for local files. It does not contradict annotations; it adds useful operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no wasted words; the primary action is front-loaded, and the attachment workflow and prerequisite follow logically. Every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema, the description covers the main action, attachment workflow, and prerequisite. It omits return-value details and any post-create side effects, but those are not essential given the schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 40%, the description compensates partially: it explains that `attached_files` must be URLs from `incident_comment_upload_file` and that `attached_local_files` are local paths uploaded first. However, it leaves `incident_id`, `comment_text`, and `confirm` semantics to inference or schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Adds a text comment to an incident'), which clearly identifies the operation. The attachment guidance references `incident_comment_upload_file`, distinguishing this from sibling upload/update/delete tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to call this tool (creating an incident comment) and even covers the two attachment paths, but it never explicitly contrasts it with alternatives like incident_comment_update or incident_comment_delete. Usage relative to siblings is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_comment_deleteDelete incident commentADestructiveInspect
Permanently deletes a comment along with all attached files. Irreversible — neither comment nor files can be recovered.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| comment_id | Yes | ||
| incident_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds meaningful behavioral context: the deletion is permanent, includes attached files, and is irreversible. This goes beyond the annotations, though it doesn't discuss error conditions or authorization beyond what the schema's confirm parameter already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the most important information front-loaded: the tool deletes, it's permanent, and it affects files too. Every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive mutation with annotations covering the safety profile and no output schema, the description is sufficient. It explains the primary consequence and scope. It could mention what happens if the comment does not exist or is already deleted, but that is a minor gap for such a straightforward operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'confirm' is described). The description itself does not explain incident_id or comment_id semantics, their relationship, or how they should be combined. Though the parameter names are fairly self-evident, the low coverage is not compensated for in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Permanently deletes a comment along with all attached files.' This distinguishes it from sibling tools like incident_comment_update or incident_comment_create, and the scope (comment + files) is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied by the tool name and description—an agent would correctly infer this is for deleting an incident comment. However, the description does not explicitly contrast it with related tools (e.g., incident_delete) or state any prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_comment_listList incident commentsARead-onlyInspect
Lists all comments on an incident in chronological order, including attached files and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| incident_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already covering the safety profile, the description adds useful behavioral context: results are in chronological order and include attached files and timestamps. It does not mention potential pagination or auth requirements, but for a read-only listing tool, the added detail is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It states the core action, the ordering behavior, and the included fields, all in minimal words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, one-parameter list tool with readOnlyHint and no output schema, the description is largely complete: it says 'all comments,' specifies chronological order, and lists the content. It does not mention pagination, but the explicit 'all' and the tool's simplicity keep this from being a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for incident_id. It provides context by stating the tool lists 'all comments on an incident,' making it clear that incident_id identifies the incident whose comments are retrieved. The schema already documents the integer type and positivity, so this addition covers the semantic gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Lists') and resource ('all comments on an incident') and adds distinguishing details: 'in chronological order, including attached files and timestamps.' This clearly separates it from sibling tools like incident_comment_create/update/delete/upload_file and incident_get_events, which cover different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (if you need comments on an incident, use this tool) but does not explicitly state when to prefer it over alternatives or any exclusions. It does not name sibling tools or mention conditions like incident_get_events for incidents vs comments, leaving the agent to infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_comment_updateUpdate incident commentADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| comment_id | Yes | ||
| incident_id | Yes | ||
| comment_text | No | ||
| attached_files | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations (destructiveHint=true) by specifying that providing attached_files fully replaces the previous list and deletes omitted files from storage. This is a critical destructive side effect that an agent must know. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no fluff. The main purpose is front-loaded, and the key behavioral caveat about file replacement is placed immediately after. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 params, 2 required) and no output schema, the description covers the core operation and the most important side effect. It does not mention the confirm requirement or behavior when both text and files are omitted, but the schema covers confirm, and the rest is implied. It is sufficient for correct invocation in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 20%, so the description must compensate. It does add important semantics for attached_files (full replacement and deletion), which is not in the schema. However, it does not explain comment_text usage or the confirm parameter, though confirm is documented in the schema and comment_text is self-evident. The added value is meaningful but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Edits' and the resource 'existing comment', specifying both text and attachments. It distinguishes from sibling tools like incident_comment_create (new comment) and incident_comment_delete, leaving no ambiguity about its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage on an existing comment but does not explicitly mention alternatives or when not to use it. It lacks guidance such as 'use incident_comment_upload_file first for file uploads' or 'do not use for creation'. The context is clear from the name, but the description itself provides no explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_comment_upload_fileUpload a file to attach to a commentADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| local_path | Yes | Absolute path to a local file. | |
| incident_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the write nature is known. The description adds valuable behavioral context: the two-step process (upload URL request + PUT), the 5 MB size limit, and the output format (public file_url). This goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The key action ('Two-step file upload') is front-loaded, and the explanation of the workflow, output, and usage is packed into a compact structure. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the workflow, return value, and size limit, which are the essential elements for an agent to call the tool correctly. It does not mention the confirm parameter's behavior (write override), but that is documented in the schema and annotations. Given the tool's simplicity and existing structured metadata, this is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (confirm and local_path have descriptions, incident_id does not). The description does not add parameter-level details beyond what the schema provides, though it implicitly references local_path via 'PUTs the local file'. Given moderate schema coverage, the baseline of 3 is appropriate, and the description does not compensate for the missing incident_id documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Two-step file upload') and clearly explains the workflow: requests an upload URL, PUTs the file, and returns a public file_url. It distinguishes itself from siblings like incident_comment_create/update by positioning itself as the upload step that precedes them. The size limit adds a specific constraint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions that the returned file_url should be passed into incident_comment_create/incident_comment_update, giving clear context on when to use this tool. It does not mention when not to use it or alternatives, but the workflow guidance is sufficient for an agent to understand its role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_deleteDelete incidentADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and non-read-only, but the description adds substantial detail beyond that: it's irreversible, cascades to several linked artifacts, affects uptime/SLA calculations on status pages and future reports, and behaves differently for ongoing incidents. This is exactly the kind of behavioral context an agent needs before making a destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each carrying unique information: deletion scope, irreversibility/confirmation, impact on uptime/SLA, and the closed-only constraint with the 409/ re-open behavior. Nothing is redundant, and the most critical facts (permanence, user confirmation) are positioned early. The length is justified by the severity of the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description covers nearly everything an agent needs: what is deleted, the irreversible nature, the effect on computed metrics, and the precondition on incident state. The confirm parameter's purpose is already covered in the schema, and no other major behavioral aspect is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'id' has no description in the schema, while 'confirm' is well described. The tool description does not explicitly explain 'id' or 'confirm', but it does add a meaningful constraint on what id must represent (a closed incident) and the 409 failure mode. Since id is self-evident and confirm is already documented in the schema, the marginal added value is moderate, neither great nor missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('Permanently deletes an incident') and goes further by enumerating exactly what gets deleted: network diagnostics, screenshot, comments, AI summary, and notification history. This clearly distinguishes it from read-only incident siblings like incident_get and incident_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when deletion is appropriate: only closed incidents can be deleted, an ongoing one returns 409, and the user must be asked for confirmation before calling. It also provides forward-looking guidance—'wait for recovery first, otherwise the next failed check reopens it'—which tells the agent when not to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_generate_ai_summaryGenerate AI summary for incidentADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry destructiveHint=true and readOnlyHint=false, so the safety profile is covered externally. The description adds genuinely useful behavior beyond that: idempotency ('repeated calls return the same summary'), the caching semantics ('returns the cached'), and the preconditions for the call working. No contradiction with annotations — 'Generates' is consistent with a write/destructive call authorized via the confirm parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first front-loads the core action and output, the second adds idempotency behavior, the third states the prerequisite. No filler, no repetition of annotation content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-purpose tool, the definition is nearly complete: purpose, idempotency, and prerequisite are stated, while safety is covered by annotations and the confirm parameter's schema text. The main gap is the absence of an output schema and only loose return-value description ('a short human-readable explanation'), plus undefined failure behavior when network_diagnostics_enabled is false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: the confirm parameter is already well documented in the schema, but the sole required parameter id has no schema description. The tool description implicitly ties id to the incident ('AI summary of the incident') but never explicitly names, describes, or constrains it, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Generates (or returns the cached) AI summary of the incident', and elaborates what the summary is ('a short human-readable explanation of what happened and why, based on diagnostics'). This is specific enough to distinguish it from siblings like incident_rate_ai_summary (rating the summary) and incident_get (raw incident details), even though no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to call it: when a human-readable diagnostic-based explanation of an incident is needed, and it states a hard prerequisite ('Requires network_diagnostics_enabled on the plan'). However, it offers no explicit exclusion or alternative — it never says to prefer incident_get_events or incident_rate_ai_summary in other cases — so it stops short of full 5-level guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_getGet incidentARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's additions are what matter. It usefully discloses that `screenshot` and `details` are conditionally returned based on plan flags, which is non-obvious behavior. It doesn't discuss errors or rate limits, but those are less critical for a simple read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one dense sentence that front-loads the main return payload and appends conditional caveats. Every clause earns its place, and no filler or redundancy is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values, and it does so in useful detail including plan-dependent omissions. It could additionally state that `id` comes from incident_list, but for a one-parameter read-only tool the description is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate for the `id` parameter, but it never mentions it. The only saving grace is that the single required `id` parameter is self-evident from the tool name and schema property, but the description itself adds no parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says exactly what the tool does with a clear verb ('Returns') and resource ('detailed incident card'), then lists distinguishing content such as diagnostics, replay link, and screenshot. This clearly separates it from sibling tools like incident_list, incident_get_events, and incident_get_server.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'detailed incident card' gives strong context that this is the full-detail incident reader, implicitly contrasting with incident_list and incident_get_events/incident_get_server. It does not explicitly name an alternative or provide a when-not-to-use condition, so it is clear but not maximally explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_get_eventsGet incident event timelineARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description reveals plan-gated availability for screenshots/diagnostics, the HTTP-monitor requirement for screenshots, the post-2026-08-09 date constraint, and a per-type `meta` shape. This substantially enriches the agent's understanding of variability and conditional behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but dense and organized: one sentence for the core purpose, one for the event/meta contract, and one for conditional availability. Each clause adds operational detail an agent needs, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description goes beyond a simple return type by documenting event types, matching meta payloads, and conditional inclusion rules. It could add explicit pagination or ordering details, but chronological order is already stated and the coverage is strong for a single-id timeline endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines only `id` (integer, exclusiveMinimum 0) with 0% coverage, and the description never explicitly documents this parameter. It implies the id identifies the incident through the phrase 'of an incident', but it doesn't state how to obtain or format the value, so it only partially compensates for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Returns the chronological event log of an incident', giving a specific verb and resource. It then enumerates the exact event categories (status changes, notifications, comments, screenshots, diagnostics), making it easy to distinguish from tools like incident_get or incident_comment_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly frames the tool as useful 'for audits and timeline rendering', giving an agent clear when-to-use context. It doesn't name alternatives or state when not to use it, but the use case is specific enough for routing decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_get_report_pdfDownload incident PDF reportARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| sections | No | Which sections to include. Defaults to all on the server side. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is already known. The description adds valuable behavioral context: it returns metadata plus base64-encoded file, and it discloses the 403 failure mode when `incident_report_enabled` is not on the plan. This goes beyond the annotations and helps the agent anticipate errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The core action and output format are front-loaded, then the parameter behavior, then the failure condition. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter read-only tool with no output schema, the description covers the key aspects: what is returned, how sections are controlled, and the 403 prerequisite. It does not describe the exact metadata fields or the base64 format details, but given the simplicity and the annotations, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: `sections` has a description, but `id` does not. The description adds meaning by explaining that `sections` controls section composition and defaults to all on the server side. However, it does not clarify the `id` parameter beyond the schema's type, and the schema already documents the enum values for `sections`. The description partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Downloads'), a specific resource ('PDF report for the incident'), and the output format ('metadata plus the base64-encoded file'). It clearly distinguishes this from sibling tools like incident_get or incident_get_events by focusing on the PDF report download.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is for downloading a ready-to-attach PDF report, and it mentions the `sections` parameter controls composition. It does not explicitly name alternatives or when-not-to-use, but the sibling list makes it clear this is the only PDF download tool for incidents, so the usage context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_get_serverGet monitor by incidentARead-onlyInspect
Shortcut: returns the monitor linked to a given incident in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the 'one call' convenience trait; it does not say what happens when no monitor is linked to the incident or whether the returned monitor matches the monitor_get representation. This is useful but minimal context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence of roughly thirteen words, with the 'Shortcut' qualifier front-loaded. No filler, no repetition of the schema or annotations, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only lookup with no output schema, the description captures the essential input meaning and the result well enough to invoke correctly. It doesn't describe the monitor object's fields, but as a 'shortcut' it likely returns the same monitor representation as monitor_get, so that gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema only says id is a positive integer. The description's 'given incident' supplies the key semantic that id is an incident identifier, distinguishing it from a monitor ID. It stops short of explicitly stating 'id = incident ID,' but for a single parameter the meaning is recoverable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('returns the monitor linked to a given incident') and the title 'Get monitor by incident' clearly differentiates it from incident_get (which returns the incident itself) and monitor_get (which gets a monitor by its own ID). The word 'Shortcut' signals a distinct access path rather than duplicating any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Shortcut' phrasing implies this is an efficient alternative to a multi-call flow, but it never names the alternative (e.g., incident_get followed by monitor_get) or states when not to use it. The intended use case is clear—have an incident, want its monitor—but the decision rule vs alternatives is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_listList incidentsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| server_id | No | Limit to one monitor. If set, `status` and `project_id` filters are ignored. | |
| project_id | No | Only incidents of monitors in this project. Omitted, the whole account is returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses sort order (start time desc), retention-depth limits, and the interaction between filters and server_id. This adds meaningful behavioral context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the core behavior front-loaded. The opening 'Lists incidents' is slightly redundant with the title, but every subsequent clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-param list tool, the description covers the important modes, ordering, filter restrictions, and retention limits. It does not mention pagination or output shape, but there is no output schema and complexity is low enough that this is not a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents server_id and project_id well (67% coverage). The description reinforces the account-wide vs. monitor-specific behavior and notes filter applicability, but it does not add much detail on what the status values mean or what the returned incident list contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists incidents and immediately clarifies the two scoping modes (account-wide vs. a single monitor). It does not explicitly name a sibling such as incident_get for single-incident retrieval, so it misses the highest bar for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear guidance on how server_id changes the call and that status/project_id filters only apply to the account-wide form. However, it never says when to prefer this tool over related tools like incident_get or incident_get_events, so the alternative-selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident_rate_ai_summaryRate AI summaryADestructiveInspect
Submits feedback on the AI summary: positive or negative. Pass rating: null to clear a previously set rating.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| rating | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation nature is known. The description adds the ability to clear a rating with null, which is useful behavioral context. However, it doesn't disclose side effects, idempotency, or whether overwriting an existing rating is allowed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core action and the special null behavior are front-loaded and clearly stated. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with no output schema, the description covers the main action and the null-clearing behavior. However, it doesn't explain what 'id' refers to (incident ID? summary ID?), and the 'confirm' parameter's write-authorization context is only in the schema, not the description. Adequate but with a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only 'confirm' has a description). The description adds meaning for 'rating' (positive/negative/null) but not for 'id'. It partially compensates for the schema gap but leaves 'id' semantics to be inferred from the tool name and context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Submits feedback on the AI summary') and the specific values ('positive' or 'negative'), which distinguishes it from sibling tools like incident_generate_ai_summary. It doesn't explicitly name the sibling, but the resource and action are clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (to rate an AI summary) and mentions clearing a rating with null, but it doesn't explicitly contrast with alternatives or state when not to use it. The context is clear but no exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
max_get_linkGet MAX deeplinks for bindingARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint and openWorldHint. The description adds non-obvious behavior beyond those flags by stating idempotency ('Repeated calls before the link is consumed are idempotent — same links are returned') and the confirmation consequence, which is valuable for an agent deciding whether to call repeatedly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences each add distinct information: the return value and link types, the binding consequence after confirmation, and idempotency. No filler words, and the main action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers the return value, the two link variants, the binding flow, and idempotency. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so there is nothing to clarify. Per the rules, 0 params gives a baseline of 4; the description doesn't need to add parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Returns') and resource ('a pair of deeplinks: link_user and link_group') with clear definitions of each. It distinguishes from siblings by focusing on generating binding deeplinks, while siblings like max_linked_list or max_unlink handle listing or removing bindings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that the deeplinks are for binding MAX as a notifications channel ('After confirmation, the MAX chat/account becomes available as a notifications channel'), which implies when to use this tool. However, it does not explicitly name alternatives or exclusions (e.g., max_linked_list for existing bindings), so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
max_linked_listList linked MAX accountsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context by describing the return content (status and 2FA flag) and the tool's role as a notification channel. It does not contradict annotations and discloses the operation's non-destructive nature implicitly through the read-only intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The primary purpose is front-loaded in the first sentence, and the second adds relevant context without redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward, parameterless read operation, the description is complete. It specifies what is returned (MAX accounts and group chats), the included fields (status and 2FA flag), and its applicability as a notification channel. Given the absence of an output schema, the description provides sufficient expectation of the return content without overpromising.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially 100% covered. Per the baseline for 0 parameters, a score of 4 is appropriate; the description correctly does not attempt to document nonexistent inputs. No parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Returns') and the resource ('all MAX accounts and group chats linked to the Statuser account'), and specifies the included details (status and 'used for 2FA' flag). It differentiates itself from siblings like telegram_linked_list by naming 'MAX accounts' explicitly and from max_get_link/max_unlink because it is a listing operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context by noting the tool is 'Available as a notification channel in notification rules', implying it is used when configuring notifications. However, it does not explicitly state when to use this tool over alternatives (e.g., max_get_link for individual links, telegram_linked_list for Telegram) or when not to use it. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
max_set_2fa_accountChange the MAX account used for 2FAADestructiveInspect
Switches which linked MAX account receives second-factor confirmation codes. Must be one of the accounts already linked to the Statuser account.
| Name | Required | Description | Default |
|---|---|---|---|
| max_id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the write/destructive nature is disclosed by structured data. The description adds a useful constraint (the account must already be linked) but does not go further to describe side effects such as the previous account no longer receiving codes or whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences with no filler. The action is front-loaded, the linkage constraint is stated immediately after, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with two parameters and an explanatory confirm schema, this is nearly complete: the agent knows what is switched, what values are valid for max_id, and how to override write restrictions. It does not describe the return value, but no output schema exists and the operation's success response is not essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 50%, the undocumented max_id parameter is the main ambiguity, and the description helps by stating it must be one of the accounts already linked to Statuser. The confirm parameter is already fully explained in the schema, so the remaining parameter semantics are sufficiently covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Switches') and names the exact resource ('which linked MAX account receives second-factor confirmation codes'), so an agent can tell this is a configuration change rather than a listing, linking, or unlinking operation. It does not explicitly name a sibling alternative, but 'already linked' makes the distinction from link/unlink tools clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to call the tool: to change which already-linked MAX account receives 2FA codes, and only for accounts already linked to the Statuser account. It does not explicitly state 'use max_linked_list to find valid max_id values' or name when-not-to-use alternatives, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
max_unlinkUnlink MAX accountADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds substantial behavioral context: notification delivery stops, notification rules exclude the account, and the 2FA role is cleared automatically. The caveat about having no other 2FA channel is exactly the kind of side-effect disclosure that helps an agent avoid unintended lockout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core action is stated first, followed by behavioral consequences and a targeted warning. Every sentence earns its place, and there is no redundant restating of the tool name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive unlink operation, the description covers what stops happening, what gets cleared automatically, and a practical safety recommendation. The annotations cover the destructive/write nature, and the schema covers the confirm override flag. No critical behavioral information needed to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents confirm well but leaves max_id as a bare string with no description. The description adds only that the operation targets a MAX account, which gives some semantic context for max_id but does not explain its format or source. With 50% schema coverage, this is adequate but not strong compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Unlinks a MAX account from the Statuser account.' It clearly states the action and scope, and the following sentences clarify consequences, which distinguishes it from related tools like max_linked_list, max_get_link, and max_set_2fa_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when this tool is appropriate by describing the effects of unlinking: notifications stop, notification rules stop including it, and 2FA is cleared. It also provides a practical recommendation about switching the 2FA channel first. It does not explicitly name alternatives or state when not to use it, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_createCreate monitorADestructiveInspect
Creates a new monitor. Only host and protocol are required — timeout, interval and redirect handling fall back to the same defaults the panel uses (30 s, 300 s, 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, latency alerts, custom success codes, non-default locations, blocklist monitoring, incident confirmation delay).
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body for `http`/`keyword`. Omit to leave empty. | |
| host | Yes | Host to monitor: URL for http/keyword, hostname or IP for ping/tcp/dns, identifier for heartbeat, API endpoint for llm (domain, versioned base or a full method path — the method path is appended when missing). | |
| name | No | ||
| port | No | Required for `tcp`. | |
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| headers | No | ||
| keyword | No | Substring to look for on the page (for `keyword` protocol). | |
| protocol | Yes | Monitor type. SSL/domain checks are flags layered on top of `http`. `llm` watches an AI endpoint and is configured by the `llm_*` fields. | |
| llm_model | No | Model identifier, for `llm`. Required together with `llm_api_key` and pointless without it: with no key the check probes only endpoint availability and no model is involved. | |
| locations | No | Locations to run checks from. Allowed values are the codes from `current_plan_get` -> `features.available_locations`. | |
| project_id | No | Project the monitor belongs to. Omitted on create, it goes to the oldest project of the account; passed on update, the monitor MOVES there — it starts living by the notification rules and channels of the new project and disappears from the status pages of the old one. See `project_list`. | |
| description | No | ||
| http_method | No | HTTP method, applies to `http` and `keyword` protocols. Defaults to `head` there, as in the panel — the cheapest request that still proves the service answers. | |
| llm_api_key | No | Provider API key, for `llm`. Its presence picks the check mode: with a key the monitor sends the model a real one-token request and verifies the answer (`inference` — billed by the provider, requires `ai_inference_enabled` on the plan); without a key only endpoint availability is checked (`availability`, spends no tokens). On update omit the field to keep the stored key, pass `null` to delete it and fall back to availability, pass a string to replace it. Stored encrypted and never returned: responses carry only `llm_api_key_masked`. | |
| is_ssl_check | No | Watch the SSL certificate of the host. Defaults to false: it is a paid feature (`ssl_monitoring_enabled`), and turning it on by default would make creation fail on Free. Pass true to enable. | |
| keyword_mode | No | Whether the keyword should be present or absent. | |
| llm_provider | No | API dialect of the endpoint. Required for `llm`. It selects the method path, auth header, body format and success marker only — the address always comes from `host`. `openai_compatible` fits OpenAI itself and the gateways that copy its API. | |
| check_interval | No | Interval between checks in seconds. Defaults to 300 — the smallest value every plan allows. Anything shorter needs `min_check_interval_seconds` of the current plan to permit it (60 on paid plans). | |
| is_domain_check | No | Watch the domain registration of the host. Defaults to false for the same reason as `is_ssl_check` (`domain_monitoring_enabled`). | |
| request_timeout | No | Request timeout in seconds. Defaults to 30, as in the panel. | |
| dns_record_types | No | Required for `dns` protocol. | |
| is_blocklist_check | No | Watch whether the domain appears in the Roskomnadzor (RKN) blocklist registry. Applies to `http`/`keyword`/`dns`. Requires `blocklist_monitoring_enabled` on the current plan. | |
| latency_trigger_ms | No | ||
| success_http_codes | No | HTTP codes considered successful. Accepts exact codes (200, 301) and masks (2xx, 5xx). | |
| is_follow_redirects | No | Follow HTTP redirects. Defaults to true for `http`/`keyword` (what the panel does) and to false for the protocols where redirects mean nothing. | |
| incident_confirm_delay | No | Delay (in seconds, up to 1 hour) before an incident is opened: the service must stay down continuously for longer than this, otherwise short blips raise no incident and no alert. 0 (default) opens the incident on the first failed check. Requires `incident_debounce_enabled` on the current plan (Team). | |
| heartbeat_grace_interval | No | Additional grace period (in seconds) past `check_interval` for `heartbeat` monitors. | |
| is_latency_alert_enabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already flag the operation as non-read-only and destructive, so the description adds value by disclosing default timeout/interval/redirect behavior, paid features being off by default, and the specific 403 conditions tied to plan gates. This goes meaningfully beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the core action before defaults and error conditions. The long second sentence is dense but earns its place by consolidating plan-gating failure modes that would otherwise be spread across many parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 28 parameters and no output schema, the description covers the minimum required parameters, default behavior, paid-feature opt-in, and major failure conditions. It does not describe the response payload, but in the absence of an output schema that is a minor gap given how much the schema and annotations already supply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 82%, so the schema already documents most parameters. The description reinforces that only host and protocol are required and summarizes a few defaults, but it mostly restates information already present in the input schema rather than adding substantial new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Creates a new monitor,' a specific verb and resource, and follows with the required parameters and default behavior. This makes it immediately distinguishable from siblings like monitor_update, monitor_pause, and monitor_delete without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance is given, and no alternative tool is named. The intended use is implied by 'Creates a new monitor,' but there is no direction such as 'use monitor_update to modify an existing monitor' or any exclusion of when creation should not be attempted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_deleteDelete monitorADestructiveInspect
Permanently deletes a monitor with its history, incidents and alert settings. Irreversible. To pause checks temporarily, use monitor_pause instead.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations' destructiveHint=true, the description discloses what gets permanently destroyed: history, incidents, and alert settings, and states 'Irreversible.' This adds meaningful behavioral context that the annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, with the key destructive implication front-loaded, followed immediately by the safer alternative. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive action, the description covers what is deleted, irreversibility, and the alternative path. The confirm parameter behavior is already fully specified in the schema, so nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the confirm parameter is fully documented in the schema, but the id parameter has no description. The tool description implies id identifies the monitor to delete but adds no detail beyond that. It partially compensates but relies on the obvious semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Permanently deletes a monitor with its history, incidents and alert settings.' It clearly distinguishes scope from the sibling monitor_pause, and the destructive nature is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when not to use it: 'To pause checks temporarily, use monitor_pause instead.' This gives an agent a clear decision rule and names the alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_getGet monitorARead-onlyInspect
Returns full configuration and latest status for one monitor by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and world-model profile. The description adds that the response contains configuration and status, but discloses nothing beyond that — no behavior for missing/invalid ids, no note on freshness of status, and no detail about the returned structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 13-word sentence with zero filler. The primary information (returns configuration and status) is front-loaded, and nothing in the description is redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-id tool with one required parameter, no output schema, and read-only annotations, the description covers the essentials: what it returns and by what key. Minor gaps — id provenance and not-found behavior — are secondary given the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so the bare integer `id` needs semantic grounding. The phrase "by id" correctly tells the agent the parameter identifies a monitor, but it does not say where the id comes from (e.g., monitor_list) or what happens for id values that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Returns full configuration and latest status for one monitor by id" names a specific verb, resource, and scope. It clearly differentiates from monitor_list (plural collection), and from the narrower monitor_get_checks / monitor_get_heartbeat_events / monitor_get_dns_history siblings by promising the full configuration and latest status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given. With many closely related siblings (monitor_list, monitor_get_checks, monitor_get_heartbeat_events, monitor_get_dns_history), the description provides no steering on when this comprehensive getter is the right choice versus the more targeted getters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_get_checksGet monitor checks (aggregated)ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| end_date | No | ISO 8601 timestamp (exclusive). Default: now. | |
| start_date | No | ISO 8601 timestamp (inclusive). Default: now - 24h. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already present, the description adds useful behavior: the default time window and the inclusion of a few raw points on day-scale periods. It does not discuss pagination or exact payload shape, but annotations lower the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first establishes purpose, the second covers defaults and an edge case. Each sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives enough to invoke the tool: required id (contextually implied by the title), optional dates with defaults, and expected output nature for graph use. A slight gap is the lack of an explicit statement that id refers to a monitor entity, but this is inferable from the name and siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description reinforces the default behavior for start_date/end_date, which is genuinely useful. However, the required id property has no schema description and no added explanation in the description, leaving its referent (monitor ID) implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it 'Returns aggregated check results for the period' and positions them for uptime/latency graphs. 'Aggregated' helps separate it from raw event/check endpoints, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: use for period-based graph data, and it documents the default 24h window when start_date/end_date are omitted. It does not mention alternatives or when not to use this tool, so it stops short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_get_dns_historyGet DNS-record historyARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds valuable behavioral context: history depth is limited by the dns_history_retention_days plan feature, and non-DNS monitors return an empty array. This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. The core behavior (returns diffs) is front-loaded, followed by the retention limit and the protocol constraint. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with annotations covering safety, the description is nearly complete. It explains the return shape (diffs per record type), the retention limit, and the empty-array case. The only minor gap is not explicitly stating that id is the monitor ID, but this is strongly implied by the tool name and sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but there is only one parameter (id) with a clear name and type. The description doesn't explicitly explain that id refers to the monitor ID, but the tool name and context make this reasonably inferable. The description adds no parameter-specific detail beyond the schema, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns diffs of DNS records observed by the monitor, specifying what was added and removed per record type. It distinguishes this from other monitor tools by scoping it to DNS protocol monitors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: only for monitors with protocol = "dns". It also tells the agent that other monitors return an empty array, which prevents misuse. This is clear usage guidance without needing to reference siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_get_heartbeat_eventsGet heartbeat eventsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| end_date | No | ||
| start_date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description adds behavioral details: aggregated into equal intervals, empty-array fallback for non-heartbeat monitors, and a default 24h window. It does not contradict annotations and provides useful operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the core return behavior, the applicability constraint, and the default time range. The most important information is front-loaded, with no redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with three parameters and no output schema, the description covers the essential context: what it returns, when it applies, and the default period. It does not mention pagination or response format, but these are less critical given the simple parameter set and existing annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are 0% for all parameters. The description implies start_date/end_date are optional via the 'Defaults to the last 24h' note, which adds some meaning. However, it does not specify date formats, nor does it explicitly confirm that 'id' refers to the monitor ID, leaving the agent to infer these from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Returns heartbeat events'), identifies the resource ('pings from an external system'), and scopes it to monitors with protocol 'heartbeat', clearly distinguishing it from other monitor tools. It is not a tautology and adds concrete details about aggregation and applicability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear condition for use: only meaningful for monitors with protocol = 'heartbeat', with others returning an empty array. However, it does not name a specific alternative tool to use for non-heartbeat monitors, so the guidance is conditional but not comparative against named siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_listList monitorsARead-onlyInspect
Lists every monitor on the account with current status and configuration. Use limit/offset to paginate — recommended for accounts with many monitors.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| project_id | No | Only monitors of this project. Omitted, the whole account is returned — that is the default and it stays so for compatibility. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the pagination recommendation, which hints at potentially large result sets, but does not disclose return format or behavior when limit is omitted. It adds some useful context but not a rich behavioral picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The main purpose is front-loaded, and the pagination advice is practical and directly actionable. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema and 3 optional parameters, this description is adequate but not thorough. It tells the agent it returns monitors with status and configuration, but does not specify fields or default pagination behavior. Given the open world hint, it would benefit from more detail on result set size or default limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only project_id has a description). The tool description compensates partially by explaining that limit and offset are pagination controls, giving them purpose. However, it does not add semantics for project_id or explain defaults/ranges beyond what the schema provides, so compensation is moderate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Lists every monitor') and the resource ('on the account'), with scope ('with current status and configuration'). It is obviously a list operation, distinct from monitor_get, though it does not explicitly name a sibling for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives implicit usage guidance (use this to list all monitors) and practical pagination advice ('Use limit/offset to paginate'), but it does not explicitly state when to prefer this over alternatives or provide exclusions. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_pausePause or resume monitorADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| action | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds value by clarifying that the operation does not delete configuration or history and that plan-feature gating is re-evaluated on resume. This goes beyond the binary annotation and gives the agent a more precise mental model of the tool's side effects, without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary function and key parameters. It avoids redundancy and each sentence provides essential information, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple toggle action, the description covers the core behavior, clarifies the non-destructive nature, and notes the plan-feature gating on resume. It does not mention the confirm override mechanism (though that is documented in the schema) or error handling, but given the tool's simplicity and the presence of the schema, this is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 33% (only the confirm parameter has a description), the description partially compensates by explaining the action parameter's allowed values and the overall purpose. However, it does not explicitly describe the 'id' parameter, leaving the agent to infer it is the monitor identifier from the context. The description adds some meaning but does not fully cover all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (pauses/resumes), the resource (checks for a monitor), and explicitly notes that it does not delete configuration or history. It also elaborates on the action parameter values and the resume behavior regarding plan-feature gating, making it distinct from siblings like monitor_delete or monitor_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys clear context for when to use the tool (to pause or resume checks) and implies it is not for configuration changes or deletion. However, it does not explicitly name alternative tools or state 'use monitor_update for configuration changes' or 'use monitor_delete to remove a monitor,' so it falls short of fully explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_test_notifySend test notification for monitorADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a destructive write (readOnlyHint=false, destructiveHint=true), lowering the bar. The description adds the useful detail that it sends through all channels rather than a single one, but does not disclose the real-world side effects or that the call requires the confirm override, leaving the schema to carry that load.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the primary behavior first and the purpose second. Every clause adds information; there is no repetition of the title or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is mostly adequate for a low-complexity fire-and-forget test tool, and the annotations/schema cover the destructive aspect. But the missing id semantics and the lack of any mention of the confirm requirement mean an agent must rely on inference or the schema alone to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: confirm is described in the schema, but id has no description and the tool description adds no semantic meaning for it. For an integer id that is the sole required parameter, the description should state that it selects the monitor to test.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Fires a test notification') and precisely scopes it to all channels configured for the account, including notification-rule channels and matching webhooks. This clearly distinguishes it from single-channel tools like webhook_test.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence gives an explicit purpose: verifying delivery without waiting for a real incident. It does not name sibling alternatives or state when not to use the tool, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_updateUpdate monitorADestructiveInspect
Partial update: pass only the fields you want to change. Plan-feature constraints from monitor_create apply on update too.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| body | No | Request body for `http`/`keyword`. Omit to leave empty. | |
| host | No | Host to monitor: URL for http/keyword, hostname or IP for ping/tcp/dns, identifier for heartbeat, API endpoint for llm (domain, versioned base or a full method path — the method path is appended when missing). | |
| name | No | ||
| port | No | Required for `tcp`. | |
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| headers | No | ||
| keyword | No | Substring to look for on the page (for `keyword` protocol). | |
| protocol | No | Monitor type. SSL/domain checks are flags layered on top of `http`. `llm` watches an AI endpoint and is configured by the `llm_*` fields. | |
| llm_model | No | Model identifier, for `llm`. Required together with `llm_api_key` and pointless without it: with no key the check probes only endpoint availability and no model is involved. | |
| locations | No | Locations to run checks from. Allowed values are the codes from `current_plan_get` -> `features.available_locations`. | |
| project_id | No | Project the monitor belongs to. Omitted on create, it goes to the oldest project of the account; passed on update, the monitor MOVES there — it starts living by the notification rules and channels of the new project and disappears from the status pages of the old one. See `project_list`. | |
| description | No | ||
| http_method | No | HTTP method, applies to `http` and `keyword` protocols. Defaults to `head` there, as in the panel — the cheapest request that still proves the service answers. | |
| llm_api_key | No | Provider API key, for `llm`. Its presence picks the check mode: with a key the monitor sends the model a real one-token request and verifies the answer (`inference` — billed by the provider, requires `ai_inference_enabled` on the plan); without a key only endpoint availability is checked (`availability`, spends no tokens). On update omit the field to keep the stored key, pass `null` to delete it and fall back to availability, pass a string to replace it. Stored encrypted and never returned: responses carry only `llm_api_key_masked`. | |
| is_ssl_check | No | Watch the SSL certificate of the host. Defaults to false: it is a paid feature (`ssl_monitoring_enabled`), and turning it on by default would make creation fail on Free. Pass true to enable. | |
| keyword_mode | No | Whether the keyword should be present or absent. | |
| llm_provider | No | API dialect of the endpoint. Required for `llm`. It selects the method path, auth header, body format and success marker only — the address always comes from `host`. `openai_compatible` fits OpenAI itself and the gateways that copy its API. | |
| check_interval | No | Interval between checks in seconds. Defaults to 300 — the smallest value every plan allows. Anything shorter needs `min_check_interval_seconds` of the current plan to permit it (60 on paid plans). | |
| is_domain_check | No | Watch the domain registration of the host. Defaults to false for the same reason as `is_ssl_check` (`domain_monitoring_enabled`). | |
| request_timeout | No | Request timeout in seconds. Defaults to 30, as in the panel. | |
| dns_record_types | No | Required for `dns` protocol. | |
| is_blocklist_check | No | Watch whether the domain appears in the Roskomnadzor (RKN) blocklist registry. Applies to `http`/`keyword`/`dns`. Requires `blocklist_monitoring_enabled` on the current plan. | |
| latency_trigger_ms | No | ||
| success_http_codes | No | HTTP codes considered successful. Accepts exact codes (200, 301) and masks (2xx, 5xx). | |
| is_follow_redirects | No | Follow HTTP redirects. Defaults to true for `http`/`keyword` (what the panel does) and to false for the protocols where redirects mean nothing. | |
| incident_confirm_delay | No | Delay (in seconds, up to 1 hour) before an incident is opened: the service must stay down continuously for longer than this, otherwise short blips raise no incident and no alert. 0 (default) opens the incident on the first failed check. Requires `incident_debounce_enabled` on the current plan (Team). | |
| heartbeat_grace_interval | No | Additional grace period (in seconds) past `check_interval` for `heartbeat` monitors. | |
| is_latency_alert_enabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive and not read-only, so there is no contradiction. The description adds useful behavioral context by specifying PATCH-style semantics and warning that creation-time plan constraints still apply, though it does not enumerate side effects like project moves or confirm requirements—those live in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The most important fact—partial update—is front-loaded, and the second sentence earns its place by pointing to plan-feature constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 29-parameter destructive tool, the rich schema and annotations carry a large share of the burden, and the description covers the update model and routes to monitor_create for plan constraints. No output schema exists, but the payload shape is not essential for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 79% schema coverage, most parameter documentation is already in the schema. The description adds the critical update-model rule that omitted fields are left unchanged and that plan constraints carry over, which is meaningful semantics beyond individual field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Partial update', naming both the verb and the resource while adding the key semantic that this tool patches rather than replaces a monitor. This distinguishes it from sibling tools like monitor_create and monitor_pause rather than merely restating the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear invocation guidance: pass only the fields you want to change. The reference to monitor_create also signals where plan-feature constraints live, but it stops short of explicitly stating 'use this when the monitor already exists and monitor_create when it does not'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notification_email_addAdd notification email (sends a confirmation code)ADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behaviors beyond the annotations: it sends a confirmation code immediately, requires confirmation before effectiveness, and returns specific error codes (409, 429, 403). Annotations already indicate readOnlyHint=false and destructiveHint=true, and the description is consistent with these. It adds valuable operational context without contradicting the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences) and front-loaded with the primary action and side effect. It efficiently includes error codes and the confirmation dependency. No filler words or redundant information, though it could be slightly more structured with a note on parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema), the description provides essential operational details: the confirmation requirement, error codes, and the trigger of sending a code. It does not mention the success response format, but that is often implicit. It is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 2 parameters, with only the 'confirm' parameter having a description (50% coverage). The tool description does not add any parameter-specific details; it does not explain the 'email' parameter beyond the schema's format, nor does it clarify the purpose of 'confirm' beyond what is already in the schema. Since schema coverage is only 50%, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Adds a new email address') and the immediate side effect ('sends a confirmation code'). It distinguishes this from sibling tools like notification_email_confirm, notification_email_resend, and notification_email_remove by focusing on the add operation and the subsequent confirmation step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the flow: the address becomes effective only after confirmation via notification_email_confirm, implying you should use this tool first and then the confirm tool. It also hints at when to use alternatives via error codes (429 if a code was just sent suggests waiting or using resend, 409 if already confirmed suggests using confirm or list). However, it does not explicitly name alternatives or state exclusions, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notification_email_confirmConfirm notification email with codeADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| code | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only and destructive, so the bar for disclosure is lower. The description adds valuable side-effect detail: wrong/expired/exhausted codes return 403, the code is invalidated, and a fresh code must be requested.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the core action and failure behavior are front-loaded. The routing to resend is concise and purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple confirmation call, the description plus annotations/schema are mostly sufficient, but the id parameter's origin and the success response are not addressed. The workflow context is also thin—an agent may not know id comes from an earlier add/list/resend step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, and the description does not explain the id parameter at all; it only clarifies that code is the emailed confirmation code. The confirm guard is documented in the schema, so the description adds little beyond schema for two of the three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation—verifying an emailed code and marking an address confirmed—and distinguishes it from the sibling resend tool by stating that a failed confirmation requires requesting a new code. This makes the tool's role clear without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives the when-to-use context: after receiving a code by email and needing to confirm the address. It also explicitly provides the fallback for failed attempts by directing to notification_email_resend, which is the key alternative among email-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notification_email_listList notification emailsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds valuable behavioral context: it explains that unconfirmed addresses are shown for UX but not used by notification rules, which is a meaningful behavioral trait beyond what annotations provide. It doesn't describe pagination or response format, but for a zero-parameter list tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence states the core function and the second adds the key behavioral nuance about confirmed vs unconfirmed addresses. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the description is complete enough. It explains what the tool returns (emails with confirmation status) and the practical implication of confirmation. It doesn't mention pagination or ordering, but these are minor gaps for a simple list operation. The sibling context shows this is one of many notification tools, and the description sufficiently distinguishes it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden on the description. The schema coverage is 100% (vacuously, since there are no properties). The description adds meaning about what the returned data represents (emails with confirmation status), which is the closest analog to parameter semantics for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists every email address added to the account for notifications, and it explicitly mentions confirmation status. It distinguishes itself from related notification tools like notification_email_add, notification_email_confirm, notification_email_resend, and notification_email_remove by focusing on listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this is a read-only listing tool for notification emails, and it explains the significance of confirmed vs unconfirmed addresses. It doesn't explicitly name alternatives, but the sibling list makes it obvious that this is the list operation among email management tools. The context about confirmed addresses being the only ones used by notification rules gives practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notification_email_removeRemove notification emailADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive and not read-only. The description adds crucial behavioral context beyond that: it is irreversible, and reusing the same address requires a fresh add-and-confirm cycle. It also explains the downstream effect on rules. This is valuable disclosure that goes beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and each sentence earns its place. It avoids redundancy and fluff, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter destructive tool, the description covers the essential context: purpose, effect on rules, and irreversibility. It does not explain the id parameter or mention when the confirm flag is needed, but those are partly covered by the schema. Given the tool's simplicity, the description is reasonably complete, though it could be improved by tying the id parameter to the email address.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% — the 'id' parameter has no description in the schema, and the tool description does not clarify what 'id' refers to (likely the identifier of the email address entry). The 'confirm' parameter is described in the schema, but the description adds nothing about it. With half the parameters undocumented and no compensation in the description, parameter semantics are weak.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Removes an email address from the notification recipients list.' It clearly distinguishes this from sibling tools like notification_email_add, notification_email_confirm, and notification_email_resend by focusing on removal. The effect on rules is also stated, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (to stop delivery to an address) but does not explicitly mention alternatives or exclusions. It doesn't say 'use this when you want to permanently remove an email' or contrast with temporary disabling or other notification tools. The context of sibling tools makes the purpose clear, but explicit routing guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notification_email_resendResend confirmation codeADestructiveInspect
Resends the confirmation letter to an unconfirmed email. If the address is already confirmed — 409; if you call too often — 429 (wait for cooldown).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as destructive (destructiveHint=true) and not read-only. The description adds error response codes (409, 429) and the cooldown behavior, which are valuable beyond the annotations. It doesn't mention success response or other side effects, but the error disclosures are useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero fluff. The primary action is front-loaded, and error conditions are stated compactly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple resend action with annotations covering safety, the description covers behavior and error states. However, it fails to explain the meaning of the required 'id' parameter, which is critical for correct invocation. Without that, the description is incomplete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only 'confirm' is described). The tool description adds no parameter details; it doesn't explain what 'id' refers to. Since the description is the main source for parameter meaning and it omits 'id', the agent is left guessing. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Resends the confirmation letter') and the target condition ('to an unconfirmed email'), distinguishing it from siblings like notification_email_confirm (which likely confirms) and notification_email_add (which adds). It also includes error codes that clarify the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use (unconfirmed email) and when not to (already confirmed → 409, too often → 429 with cooldown). It doesn't name alternative tools, but the conditions are clear enough for an agent to decide. This is strong guidance but lacks explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notification_rule_listList notification rulesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Whose monitoring rules to read. Omitted, the oldest project of the account is used — pass it explicitly when the account has more than one project, see `project_list`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds real context beyond that: account-level types default to off for work chats because those chats are usually shared with teams or clients, and webhook subscriptions are excluded from this view. That is useful disclosure about what the returned data will and won't contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the return shape comes first, then scope semantics, then the project_id fallback. The subscription types are enumerated twice (as a list and again split into monitoring types), which is mild redundancy, but each sentence carries genuine information about defaults and scoping.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates fully by spelling out the returned structure (per-type boolean channel flags, per-rule scope) and the project-vs-account split. An agent knows exactly what comes back and how to interpret it without any structured return definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description already explains the omitted-project_id fallback and the exclusiveMinimum constraint. The description's sentence about the oldest project largely restates the schema, so with a single well-documented parameter the baseline of 3 is appropriate rather than exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Returns') plus a precisely bounded resource: the matrix of notification rules across named subscription types and channel flags. It also names the sibling concept it excludes (webhooks have their own per-webhook subscriptions and do not appear here), so an agent can separate it from webhook_list and notification_rule_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context for the single decision an agent must make: omit project_id and the monitoring half is read from the oldest project, so pass it explicitly when the account has multiple projects, pointing to project_list. It does not explicitly route the agent to notification_rule_set for writes, but the read/write split is unambiguous from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notification_rule_setSet notification rule for a subscription typeADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max | Yes | ||
| type | Yes | ||
| Yes | |||
| slack | No | ||
| pachca | No | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| discord | No | ||
| telegram | Yes | ||
| mattermost | No | ||
| project_id | No | Which project the rule belongs to, for monitoring types. Omitted, the oldest project is changed — on an account with several projects that is rarely what the user means. Ignored for account-level types. | |
| rocketchat | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so safety is covered. The description goes beyond them by disclosing partial-update semantics ('a work-chat flag that is not passed stays as it is'), the scoping side effect on the oldest project, and the return payload ('full updated list of rules'). It does not mention that the call may need the `confirm` override, though the schema documents that parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph, but it is front-loaded with the core action and every clause carries information (partial update, granularity limit, scoping, return value). The em-dash-heavy phrasing is slightly hard to scan but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no output schema, the description covers the write semantics, the channel granularity limit, project vs account scoping, and the return shape. The only notable gap is the authorization/`confirm` path, which the schema documents but the description leaves unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 18%, so the description must carry the load, and it largely does: it groups the channel booleans, splits the `type` enum into monitoring vs account-level categories, and explains the `project_id` default and its pitfall. It omits any mention of `confirm`, and does not enumerate the enum values, but adds real meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource ('creates or updates the rule for a single subscription type') and immediately enumerates the toggleable channels, so an agent knows exactly what is being written. It also distinguishes itself from the adjacent `notification_rule_list` (this returns the full updated list) and from `project_channel_set` (which picks the actual addresses/chats).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the alternative (`project_channel_set`) and the condition that selects it: this tool only toggles channels on/off, and cannot select individual recipients. It also gives the decision rule for `project_id` (monitoring types apply to ONE project, oldest by default; account types ignore it), which is exactly the guidance an agent needs before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_listList public plansARead-onlyInspect
Returns the public Statuser plan catalog with prices, limits and features. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the 'No authentication required' detail, which is genuinely useful behavioral context beyond the annotations. However, it doesn't disclose return format, pagination, or whether the catalog is cached/static, which would add further value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The core action and resource are front-loaded, and the authentication note is a single short second sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only, public tool, the description is nearly complete. The only minor gap is that it doesn't describe the exact response shape (e.g., array of plan objects), but with no output schema and a simple catalog concept, the description's mention of 'prices, limits and features' is sufficient for an agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden. The description's mention of 'prices, limits and features' gives the agent a sense of what the response will contain, which is the closest analog to parameter semantics for a no-arg tool. Baseline 4 for 0 params is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Returns'), a specific resource ('public Statuser plan catalog'), and the content scope ('prices, limits and features'). It clearly distinguishes this from sibling tools like current_plan_get (which would return the caller's own plan) and project_list/monitor_list (which list user resources).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'No authentication required', which is a clear usage condition. It doesn't explicitly name alternatives or exclusions, but the public-catalog framing makes it clear this is for browsing available plans rather than checking the current account's plan. The sibling context (current_plan_get) reinforces this distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_channel_listList channels of a projectARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly/openWorld), and the description adds genuinely non-obvious semantics: account-level notifications (invoices, security, API keys) reach every channel regardless of the project setting, and webhook scope lives on the subscription. This is exactly the kind of behavioral context structured fields cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first clause, and the remaining content is substantive rather than filler. It is dense with em-dashes and parentheticals, which slightly hurts scannability, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description covers what is returned (channels plus per-project usage) and the surrounding semantics. It could say more about the response shape (e.g. the enable/disable flag field) but is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter, and the description never mentions project_id or its meaning. The name is self-explanatory, so the gap is mild, but the description adds nothing beyond the schema here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists the notification channels of the account') and clarifies the scope is account-level channels joined with per-project enablement. It explicitly excludes webhooks and routes them to a named sibling, so an agent can distinguish it from webhook_list/webhook_update and project_channel_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the domain model that governs usage: a channel is connected once for the whole account and a project only toggles it on/off for its own notifications, plus a pointer to webhook_update for the excluded case. It stops short of stating explicit preconditions or alternatives like project_channel_set for changing the setting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_channel_setSwitch a channel on or off in a projectADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Kind of channel to switch. | |
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| channel_id | Yes | Id of the channel inside its own list — as returned by `project_channel_list`, `notification_email_list`, `telegram_linked_list` or `max_linked_list`. For work chats (`chat_webhook`) take it from `project_channel_list`. | |
| is_enabled | Yes | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds useful behavior beyond the annotations: the call returns the full updated list, only monitoring notifications are affected, and turning a channel off does not disconnect it from the account. It does not mention the confirm/auth override, but that is documented in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences, front-loaded with the action and followed by key scope and side-effect constraints. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema, the description covers the main behavioral context: mutation effect, return shape, scope, and non-destructive account-level implications. It omits the confirm override and detailed parameter semantics, but the schema covers those.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, with type, channel_id, and confirm documented in the schema. The description ties the operation to a project and a notification channel but adds no syntax or meaning for is_enabled or project_id. Baseline 3 is appropriate given partial schema coverage and minimal added parameter context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: turning one notification channel on/off for a project, and clarifies it returns the full updated list. It distinguishes its scope from account-level channel operations by noting it affects monitoring notifications only and does not disconnect the channel from the account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (enable/disable a channel for monitoring notifications), but there is no explicit guidance on when to use this versus related siblings such as notification_rule_set or project_channel_list. The scope note is helpful but not a when-to-use/alternative directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_createCreate projectADestructiveInspect
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 | Required | Description | Default |
|---|---|---|---|
| name | Yes | Shown in the panel, in weekly report emails and on the public weekly report page (only when the account has more than one project). | |
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as destructive and not read-only, but the description adds substantial behavioral detail: 403 on plan limits, per-account count semantics, and the critical side effect that all notification channels start disabled. This goes well beyond the annotations and prepares the agent for important consequences of the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then delivers the most operationally significant side effects in a compact sequence. The explanatory sentence about why channels default off earns its place by preventing a user-visible surprise. No filler or redundancy is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema, the description covers all decision-relevant context: what is created, when it fails, how limits work, and what side effects occur. The reference to project_channel_set gives the agent a clear next step for enabling notifications. Nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (name and confirm) are already documented in the input schema. The description adds no new parameter-specific semantics; it focuses on behavioral outcomes instead. This meets the baseline for high schema coverage but does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb and resource: 'Creates a project.' This distinguishes it from sibling tools like project_update and project_delete, and the additional context about notification channels and plan limits clarifies what creating a project entails. An agent can immediately identify this as the create operation within the project family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's purpose as a create operation is clear, and the description gives important context about when it is relevant: creating a new client/project, with limits on the current plan. It does not explicitly name alternatives or say 'use this instead of project_update,' but the create semantic plus references to later configuration via project_channel_set provide solid implicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_deleteDelete projectADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| move_to_project_id | No | Where to move the monitors and status pages of the deleted project. Required when it is not empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as destructive (destructiveHint=true), but the description goes well beyond that: it discloses 409 failure cases, the fate of notification rules/channel switches/webhooks, and that moved monitors inherit destination-project rules. This is exactly the context an agent needs before invoking an irreversible operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: the core action is front-loaded, constraints follow logically, and the irreversible consequences are stated without redundancy. The length is appropriate for the complexity of a destructive operation with cascading effects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, multi-parameter tool with no output schema, the description covers the key failure modes, prerequisites, and side effects comprehensively. An agent can determine how to call it safely, what to pass, and what consequences to expect. No critical operational detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial meaning to move_to_project_id, explaining why it is required and what happens when content is moved. The schema already documents confirm and move_to_project_id; id is self-evident as the project identifier. With 67% schema coverage, the description compensates for the most important parameter semantics, though it leaves confirm entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence 'Deletes a project' states a precise verb and resource, and clearly identifies this as the deletion counterpart to project_create/project_update. The additional constraints about the last project and move_to_project_id reinforce the operation's identity without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational guidance: it explains when the call will fail (last project, project with monitors/status pages without move_to_project_id) and what must be provided to succeed. It does not explicitly contrast with alternatives like project_update or project_reorder, but the delete-specific prerequisites are well-covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_listList projectsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/openWorldHint, the description discloses ordering by id, the guarantee that every account has at least one project, and the subtle no-project_id fallback behavior that writes into the oldest project. These are non-obvious semantics an agent would otherwise only learn at runtime.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, each earning its place: the action/order, the ownership model, and the default-project use case. No fluff or repetition of structural fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only list tool, the description covers selection, invocation, ordering, and the account/project relationship. Even without an output schema, it fully supports correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is 100% covered, so there is no semantic gap. The description's note about `project_id` applies to other tools, not this one, so it doesn't add parameter meaning here; baseline 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States exactly what it does: list the account's projects, ordered oldest-first by id. It also clarifies the project/account ownership model, which distinguishes project-scoped resources from account-level ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when to call this tool: to discover the oldest/default project used by calls that omit `project_id`, and notes every account has at least one project. This is concrete routing guidance even though it doesn't name a specific sibling alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_reorderReorder projectsADestructiveInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| project_ids | Yes | All project ids of the account, in the wanted order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it notes that a partial list is rejected (400) and emphasizes the cosmetic nature ('the order changes nothing about delivery or about which project receives records created without one'). This goes beyond the destructiveHint=true annotation, clarifying that the effect is non-destructive in practice. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no fluff. The core purpose is front-loaded, followed by the critical parameter constraint and the cosmetic caveat. Each sentence adds necessary information, though the structure could be slightly more compact by merging the last two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters (one required), no output schema, and a clear destructive annotation, the description covers the essential operational details: what it does, the required full list, the rejection behavior, and the lack of side effects on delivery. It does not mention any prerequisites or error handling beyond the 400, but given the simplicity, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description reinforces the 'all project ids' requirement and adds the rejection consequence, but it does not elaborate on the confirm parameter, which is already described in the schema. The added value is modest, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Sets the order projects are listed in inside the panel') with a specific verb and resource. It distinguishes itself from sibling project tools (create, update, delete) by focusing on ordering, though it does not explicitly name alternatives. The purpose is unambiguous and appropriately scoped.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (reordering projects) but does not explicitly state when to use this tool versus alternatives or provide exclusions. There is no mention of 'use this only when...' or 'instead of project_update'. The context is clear but lacks explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_updateRename projectADestructiveInspect
Renames a project. Only the name can be changed here — moving content between projects is done through monitor_update and status_page_update.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as non-read-only and destructive, so the safety profile is covered. The description adds the constraint that only the name is editable, but it does not explain broader effects such as whether rename breaks existing references or when the confirm override is necessary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the core action first and the boundary/alternative immediately after. No wasted words or redundant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple rename operation, the purpose, scope, and alternative routing are adequately covered. The remaining gap is the lack of any output or side-effect information, though the confirm parameter is documented in the schema and this is a low-complexity mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description partially compensates by clarifying that name is the mutable field. However, id is left to be inferred from the schema, and confirm is only explained in the schema, not in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Renames a project' and narrows the scope with 'Only the name can be changed here'. This clearly distinguishes it from the sibling update tools monitor_update and status_page_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says moving content between projects is done through monitor_update and status_page_update, so an agent knows when not to use this tool and which siblings to choose instead. This is strong routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_announcement_createCreate an announcementADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Announcement text. | |
| link | No | Optional URL shown as a "Подробнее" button in the banner. | |
| type | No | Severity of the announcement: `info` (blue), `warning` (yellow) or `critical` (red). | |
| title | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| ended_at | No | ISO 8601. End of the display window (optional). | |
| started_at | No | ISO 8601. Start of the display window (optional). | |
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only signal openWorldHint/destructiveHint and non-read-only; the description adds real behavior: optional type defaults to info, omission of start/end makes the banner indefinite, and a 403 is returned if the plan lacks status_page_announcements_enabled. This goes beyond the structured hints and gives an agent actionable expectations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, information-dense and front-loaded: the action and object come first, then behavior, then failure mode. No filler or repetition of annotation values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and only sparse annotations, the description supplies the important operational context: default severity, duration behavior, and an explicit error condition. A status_page_id and title/body are sufficiently clear from the schema, so nothing critical for invoking the tool correctly seems missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 75%, so the schema does most of the work. The description adds meaning beyond it by stating the type default, treating started_at/ended_at as an optional display window, and linking their omission to unlimited visibility. It leaves status_page_id and title semantics largely to the schema, but that is acceptable at this coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Publishes a banner announcement on the status page' and enumerates the key fields (title, body, type). This clearly identifies a create-style action and distinguishes it from announcement list/update/delete siblings, so an agent knows what resource is affected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when the defaults and display-window behavior apply, including what happens if started_at/ended_at are omitted (shown until deleted/ended), and calls out the plan requirement. It does not explicitly name status_page_announcement_update/delete/list as alternatives, but the create semantics are unambiguous enough for a correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_announcement_deleteDelete an announcement from status pageBDestructiveInspect
Removes an announcement from the status page. Irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| status_page_id | Yes | ||
| announcement_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint: true, so the description's 'Irreversible' adds a small but useful extra layer (destructive ≠ irreversible). However, it does not disclose other behaviors such as whether the deletion cascades to related data, affects subscribers, or requires specific permissions. Given the presence of annotations, the bar is lower, and this modest contribution warrants a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences with no filler. It front-loads the primary action first and then adds the key caveat. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and only 33% schema description coverage, the description is insufficient. It does not explain the return value (or lack thereof), any side effects beyond irreversibility, prerequisites like whether an announcement must exist, or how the confirm parameter interacts with server config. An agent would have to infer too much to use this tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 33%, so the description must compensate. It does not: the two ID parameters (status_page_id, announcement_id) are not explained beyond their names and types. The confirm parameter is already documented in the schema, but the core identifiers lack any semantic clarification. This is a clear gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states precisely what the tool does: 'Removes an announcement from the status page.' This is a clear verb (removes) + resource (announcement on status page), and it implicitly differentiates from sibling tools like status_page_announcement_create and status_page_announcement_update. The added 'Irreversible' further clarifies the nature of the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description only states what it does, not when an agent should choose it over sibling tools like status_page_announcement_update or status_page_maintenance_delete. No conditions, prerequisites, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_announcement_listList announcements for a status pageARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only readOnlyHint and openWorldHint, so the description carries the behavioral burden. It adds useful behavior details: the response includes title, body, type/severity, optional display window, and optional link; all time states are returned; and filtering should happen client-side. Ordering and pagination are not mentioned, but the description is still meaningfully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the definition, enumerates the returned fields in parentheses, and ends with a clear note about client-side filtering. There is no filler or redundant restating of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only list tool, the description is complete: it identifies the target resource, names the returned fields, and explains the all-states behavior and client-side filtering. The lack of an output schema is mitigated by the explicit field enumeration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required integer parameter, status_page_id, which is self-explanatory and the description's 'for a status page' supplies some context. However, schema description coverage is 0% and the description doesn't explicitly describe the param or how to identify a valid status page, so it adds little semantic meaning on top of the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact operation ('Lists announcements'), the resource ('for a status page'), and clearly defines announcements as banner notices on the public status page. The field list and scope distinguish it from sibling tools like status_page_maintenance_list and status_page_incident_report_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when to use this tool: when you need announcements for a status page. It also explicitly says all scheduled, active, and ended entries are included and that time filtering must be client-side, preventing incorrect expectations. It doesn't name alternative sibling tools, but the context is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_announcement_updateEdit an announcementADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| link | No | ||
| type | No | Severity of the announcement: `info` (blue), `warning` (yellow) or `critical` (red). | |
| title | No | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| ended_at | No | ||
| started_at | No | ||
| status_page_id | Yes | ||
| announcement_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior, and the description adds useful behavioral detail beyond that: passing null clears started_at, ended_at, or link, and setting ended_at to the current time stops an announcement immediately. This gives the agent important overwrite semantics that the schema and annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core edit action and fields come first, followed by the two most important behavioral nuances: null-clearing and immediate stopping. Every clause adds necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers invocation semantics well, but some contextual gaps remain: exact datetime format for started_at/ended_at is unspecified, and there is no output schema to explain what the update returns. It also does not explicitly state whether omitted fields are left unchanged versus reset, though the null-clearing hint partially implies this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 22%, the description carries the explanatory burden and largely succeeds. It maps title, body, type, and link to their meanings, interprets 'display window' as started_at/ended_at, and explains the null-clearing behavior. The required IDs are self-evident from their names裀, and confirm has its own schema description, so no major parameter is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource, "Edits an announcement", then enumerates the exact fields involved: title, body, type, display window, and link. This clearly distinguishes the tool from status_page_announcement_create and status_page_announcement_delete without needing to consult the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this to modify an existing announcement's content and scheduling fields. It also provides a concrete usage scenario, stopping an active announcement by setting ended_at to the current timetingham. It does not explicitly name sibling alternatives or exclusions, but the edit-versus-create/delete distinction is strongly implied by the wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_check_domainCheck custom-domain availability and CNAMEARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, and the description adds an explicit return contract: { available, cname_valid } and what each field means. It does not go into DNS-propagation or error behavior, but for a simple read-only check the disclosure is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence that front-loads the return shape, then explains each field and the use case. No filler or redundant restating of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only check with no output schema, the description fully defines the return fields and their meaning, plus the intended moment to use it. Nothing essential is missing for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only says 'domain' is a non-empty string, so the description carries the burden. It clarifies that domain refers to a custom domain whose availability and CNAME are checked, but it does not specify input format details (e.g., no protocol, no subdomain requirements).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Returns') and resource ('custom-domain availability and CNAME'), and explicitly defines the two booleans returned. It also distinguishes this from sibling status_page_check_slug by focusing on domain/CNAME rather than slug.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful before attaching a custom domain' gives clear context for when the tool is relevant. It does not explicitly list sibling alternatives or exclusion conditions, but the domain-vs-slug contrast with status_page_check_slug makes the intended use apparent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_check_slugCheck if a slug is availableARead-onlyInspect
Returns { available: boolean } for the given slug. Useful before creating or renaming a status page.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is covered. The description adds the call purpose and return value, but doesn't disclose any edge cases (e.g., what happens for invalid slugs, race conditions). With annotations covering the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The return type is front-loaded, and the usage hint follows immediately. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only check with one unambiguous parameter and no output schema, the description covers the essential details: what it returns, when to use it, and the input. It lacks explicit error behavior, but given the tool's simplicity and annotation coverage, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden. The single parameter 'slug' is self-explanatory and the description references it ('for the given slug'), but it adds no format or validation details beyond the schema's minLength. Since the parameter is trivial, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (check), the resource (slug availability), and the exact return shape ({ available: boolean }). It distinguishes from siblings like status_page_check_domain by explicitly mentioning slug, and from creation/renaming tools by framing it as a pre-step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: 'Useful before creating or renaming a status page.' This tells the agent when to invoke it, though it does not explicitly state when not to use it or name alternative tools. Still, the guidance is actionable and sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_createCreate status pageADestructiveInspect
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 | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| slug | No | URL-safe slug (3–50 chars, lowercase Latin letters, digits, hyphens, underscores). If omitted on create, a random one is generated. | |
| domain | No | Custom domain (must be a subdomain pointing to Statuser via CNAME). Requires `custom_domain_enabled`. | |
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| language | No | Language of the public page, subscriber emails and RSS/Atom feeds: `ru`, `en`, `kk` (Kazakh, Cyrillic), `uz` (Uzbek, Latin), `tr`, `zh` (Simplified Chinese), `es`, `de`, `fr`. Visitors cannot switch it. Server names, incident reports and announcements are not translated — write them in the page language. Omitted on create, the page is in Russian. | |
| logo_url | No | ||
| password | No | Password to gate the page. Requires `password_protected_status_page`. | |
| timezone | No | ||
| is_indexed | No | Allow search engines to index the page. Requires `indexing_control_enabled` if you want to disable it. | |
| project_id | No | Project the status page belongs to. Omitted on create, it goes to the oldest project of the account; passed on update, the page moves there together with the monitors it shows. See `project_list`. | |
| theme_mode | No | `user` — follow viewer preference; `light` / `dark` — force theme. | |
| company_url | No | ||
| description | No | ||
| favicon_url | No | ||
| support_url | No | ||
| is_published | No | ||
| timeline_days | No | How many days the timeline on the page covers. Must be one of: 7, 14, 30, 60, 90, 180. | |
| is_white_labeled | No | Hide Statuser branding. Requires `white_label_enabled`. | |
| subscribers_enabled | No | Show the subscribe button on the public page so visitors can get emails about incident reports and planned maintenances (plus RSS/Atom feeds). Requires a plan with `status_page_subscribers_limit > 0`. | |
| subscribers_reply_to | No | Reply-To address for subscriber emails — where subscriber replies will arrive. Pass `null` to clear. | |
| subscribers_from_name | No | Display name of the sender in subscriber emails (the From address itself stays on the shared sending domain). Defaults to the status page name. Pass `null` to reset. | |
| uptime_decimal_places | No | ||
| minimum_incident_duration | No | Minimum incident duration (in seconds, 0–86400) before it appears on the page. Requires `status_page_minimum_incident_duration_enabled` to set above 0. | |
| is_not_monitored_operational | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the write/safety profile is covered. The description adds concrete behavior beyond that: random slug generation on omission, plan-feature gating across several fields, and a 403 failure mode on account-level overflow — useful operational context not derivable from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core action and the one required field, then escalating to constraints. No filler, though the plan-constraint sentence is a dense enumeration that could be slightly tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 24-parameter mutation tool with no output schema, the description covers creation semantics, the required field, slug defaults and limit errors reasonably. It omits the confirm/authorization requirement, the default project placement, and any indication of what is returned, leaving gaps an agent must fill from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 24 parameters and only 58% schema description coverage, the description carries meaningful load by grouping the feature-gated params (custom domain, password, indexing, white-label, timeline, minimum incident duration) under one plan-constraint statement. But it restates schema content rather than adding syntax or defaults, and it says nothing about confirm, project_id defaults, or language defaulting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Creates a public status page") and immediately distinguishes itself from status_page_update/status_page_delete by describing create-time-only semantics like slug auto-generation and plan gating. An agent can tell what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives prerequisites (name required, plan-feature constraints, 403 on account limit overflow), which is real usage context. However, it never routes the agent to alternatives or companions — e.g. status_page_check_slug before creating, or status_page_publish versus the is_published flag — so the when-to-use-vs-siblings guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_deleteDelete status pageADestructiveInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds value beyond the annotations by specifying exactly what gets destroyed (settings, groups, custom-domain binding) and emphasizing irreversibility. It doesn't cover auth requirements, though the schema's confirm parameter handles the write-override scenario.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence front-loads the destructive action and scope, and the second sentence immediately provides the non-destructive alternative. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one required integer parameter and one boolean guard, the description plus schema cover the essentials: what is deleted, irreversibility, the alternative, and the confirm flag's purpose. There is no output schema and no mention of the response shape, but that is a minor gap for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% — the confirm parameter is fully documented in the schema, and the id parameter is only typed as an integer greater than 0. The description adds no parameter-level meaning, though the meaning of 'id' is easily inferable from the tool's purpose. This is adequate but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Permanently deletes a status page') and enumerates exactly what is destroyed — settings, groups, and custom-domain binding. It also distinguishes itself from the publish sibling by framing the alternative, which helps an agent pick the right tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when NOT to use this tool: 'To hide a page without deleting, use status_page_publish with action = "unpublished"'. This gives a concrete alternative and the exact condition that routes to it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_getGet status pageARead-onlyInspect
Returns the full configuration of one status page by id: settings, groups, linked monitors and custom domains.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description adds the value: precisely what the returned configuration includes (settings, groups, linked monitors, custom domains), which an agent would otherwise not know without an output schema. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One well-formed sentence with the verb front-loaded immediately followed by the resource and by-id scope. Every phrase carries information; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter, read-only retrieval with no output schema, the description fully covers what an agent needs: the id required and the content of the returned configuration. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description carries the burden and partially compensates by clarifying that 'id' identifies a single status page whose configuration is returned. It doesn't add format details, but for a single integer parameter whose meaning is standard, this is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns'), a concrete resource (status page configuration), and the precise scope ('by id'). Lists exact content (settings, groups, linked monitors, custom domains), fully distinguishing it from status_page_list and the mutating status_page_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The by-id semantics make the usage context clear: call this when you need one specific page's full configuration, as opposed to status_page_list for all pages. It doesn't name the alternative explicitly, but for a single-id retrieval the intended use is unambiguous and no exclusion is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_incident_report_deleteDelete incident report from status pageADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| report_id | Yes | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description goes further by stating 'Irreversible' and 'with all its updates', and explicitly clarifying that only the public publication is removed. This adds valuable context about side effects and limitations beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with the main action first, then irreversibility, then scope. It is front-loaded, efficient, and contains no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with no output schema, the description covers the core behavior, irreversibility, and scope. It does not mention the confirm parameter or any return value, but those are arguably less critical. The openWorldHint annotation is not addressed, but the description's clarification of what is not affected helps. Overall, it is adequately complete for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'confirm' has a description); status_page_id and report_id are undocumented in both the schema and the description. The description does not explain what these parameters represent or how to obtain them, relying solely on their names. Since schema coverage is low, the description should compensate but does not, leaving parameter semantics under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Removes the incident report from a status page with all its updates.' It identifies the resource (incident report) and the parent (status page), and adds clarifying scope by noting what is not affected (underlying monitors/incidents). This distinguishes it from siblings like incident_delete or status_page_incident_report_publish.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful usage context by explicitly stating that underlying monitors and incidents are not affected, which implies this tool is only for removing the public publication and not the underlying data. However, it does not explicitly name alternative tools (e.g., incident_delete) or state when not to use it, but the scope clarification effectively guides selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_incident_report_listList incident reports for a status pageARead-onlyInspect
Lists incident reports published on a status page with their title, linked monitors, per-server affect statuses and the timeline of updates.
| Name | Required | Description | Default |
|---|---|---|---|
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already supply readOnlyHint and openWorldHint, and the description adds meaningful behavior: it returns only published reports and reveals the shape of the response (title, linked monitors, per-server statuses, update timeline). It does not mention ordering, pagination, or limits, but for a read-only list the added context is useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It leads with the action and then packs the relevant return fields into a compact, readable list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only list tool, the definition is nearly complete: the required ID is obvious, expected return content is summarized, and safety is covered by annotations. It loses a point for omitting pagination/ordering details and for the slightly unclear wording 'per-server affect statuses'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries some responsibility for parameter explanation, but it only indirectly maps 'on a status page' to status_page_id. The parameter name is self-explanatory and there is only one required integer, so this is a minor gap rather than a blocking one.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb ('Lists') and clearly names the resource ('incident reports published on a status page'). It also enumerates the key returned data, which makes it easy to distinguish from sibling operations like status_page_maintenance_list or incident_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied through the resource wording, but there is no explicit guidance for choosing this over incident_list or the status_page_incident_report_* write tools. No alternative conditions or exclusions are given, so the agent must infer when this listing is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_incident_report_publishPublish a new incident reportADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| servers | Yes | Per-server impact at the moment the report is published. Use `status_page_get` to find status-page server ids. | |
| started_at | Yes | ISO 8601 timestamp when the incident started. | |
| incident_ids | No | Statuser incidents to link to this report (optional). If set, the report is based on these existing incidents. | |
| status_page_id | Yes | ||
| initial_message | Yes | Text of the initial timeline update. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/write behavior; the description adds quota semantics (status_page_incident_reports_per_month_limit with 403 overflow), linking/aggregation behavior, and the update-path pointer. No contradiction with annotations, and no misleading safety claims.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tight, front-loaded description: first sentence states the action and core fields, next handles linking, next routes updates, last gives quota. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers required fields, optional linking, quota limits, and subsequent updates, while annotations carry the write/destructive profile. The only notable gap is lack of guidance for obtaining status_page_id, though this is partially inferable from the schema and sibling status_page_* tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description maps title, initial_message, started_at, and servers to their intent and explains the aggregation behavior of incident_ids. With schema coverage at 71%, it adds real value beyond the schema, though it does not explicitly describe how to obtain status_page_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Publishes) and resource (new incident report on a status page), enumerates the core payload fields, and distinguishes itself from the update path by referencing status_page_incident_report_update_add. Its role among the many status_page_incident_report_* siblings is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes subsequent timeline updates to status_page_incident_report_update_add and notes optional linking to existing incidents, giving an agent a clear 'when not this tool' cue. It does not explicitly exclude editing/deleting existing reports, but the publish verb and sibling names make that context inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_incident_report_updateEdit incident report fieldsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| report_id | Yes | ||
| started_at | No | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description communicates that the operation is an edit to the report itself, and that only title/started_at are affected. This adds context beyond annotations (readOnlyHint false, destructiveHint true) by scoping exactly what changes. The `confirm` mechanism is already documented in the schema, so no need to repeat.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action, specifies the affected fields, and provides a routing pointer. No redundancy, every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive write with no output schema, the description covers the scope of changes and directs to an alternative, but it leaves out any mention of the required identifiers or the `_update_edit` sibling, which could lead to incorrect selection in an edge case. Annotations cover the safety profile, so the main missing piece is sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only `confirm` has a description). The description adds meaning by identifying `title` and `started_at` as the editable fields, but it does not explain the format of `started_at` or the semantics of `status_page_id`/`report_id`. It partially compensates for the schema gap but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool edits the incident report itself and specifies the editable fields (`title`, `started_at`). It also names the sibling `status_page_incident_report_update_add` to contrast, though it does not mention the closely named `_update_edit` sibling, which could cause ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent when to use this tool (to edit report fields) and when not to (for per-server impact or new messages, use `_update_add`). However, it doesn't address the `_update_edit` sibling, which could be confused based on naming, so the routing is not fully complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_incident_report_update_addAdd timeline update to incident reportADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| message | Yes | ||
| servers | Yes | New per-server impact statuses delivered with this update. | |
| report_id | Yes | ||
| published_at | No | ISO 8601. Defaults to "now" on the server side. | |
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the write nature is known. The description adds valuable behavioral context: each call creates a separate timestamped record, and published_at validation rules (not future, not before report start, else 400). This goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each dense with information: what it does, how it behaves, and validation constraints. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema, the description covers the key behavioral aspects: append semantics, per-server impact, timestamp behavior, and validation failure mode. It doesn't mention response format, but that's not required without an output schema, and the annotations cover the destructive nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description compensates by explaining the semantics of `servers` ('updates per-server impact') and `published_at` (defaults to now, validation rules). It doesn't detail `confirm` or IDs, but those are reasonably self-explanatory from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Appends a new timeline message') and resource ('incident report'), and clarifies it updates per-server impact. It distinguishes from sibling tools like status_page_incident_report_update_edit and status_page_incident_report_update_delete by focusing on adding a new timeline record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for adding a new timeline update, and the sibling list includes edit/delete variants, so an agent can infer when to use this vs alternatives. It doesn't explicitly state 'use this instead of edit/delete when adding a new update,' but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_incident_report_update_deleteDelete a timeline update from incident reportADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| report_id | Yes | ||
| update_id | Yes | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds valuable behavioral context: the operation is scoped to one message, the report and other messages persist, and the initial update returns 400. It does not mention auth requirements or reversibility, but the annotations plus the explicit 400 behavior provide solid transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the action, the scope preservation, and the critical exception with the alternative. The most important constraint (cannot delete initial update) is front-loaded near the end but clearly stated. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive single-resource delete with no output schema, the description covers the action, the scope, the failure case, and the alternative. The only missing context is the confirm parameter's role in overriding write restrictions, which is documented in the schema but not in the description. Given the tool's simplicity, this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must compensate. It explains the role of update_id ('one timeline message by update_id') and implicitly clarifies report_id and status_page_id as the report and status page context. However, it does not explain the confirm parameter, which is a meaningful gap given the destructive nature and the write-override semantics described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Removes'), a specific resource ('one timeline message from a report'), and the key identifier ('update_id'). It also distinguishes itself from deleting the whole report, which is a sibling operation. This is a clear, non-tautological definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: to remove a single timeline message while keeping the report and other messages. It also gives an exclusion: the initial update cannot be deleted, and instructs to delete the whole report instead. This is explicit when/when-not guidance with an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_incident_report_update_editEdit a timeline update in an incident reportADestructiveInspect
Edits the text of a previously published timeline message (message only). Other fields of the update (timestamp, per-server status) cannot be changed.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| message | Yes | ||
| report_id | Yes | ||
| update_id | Yes | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state destructiveHint=true and readOnlyHint=false, so the description is not burdened with declaring mutation. It adds useful scoping: only the message text is editable and other fields are immutable. It does not disclose side effects such as overwriting the previously published text or any authorization requirement beyond the schema-documented confirm parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences fully establish what the tool does and its constraints. The operative clause is front-loaded, and the second sentence removes potential ambiguity about editing timestamp or status. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive write tool with no output schema, the description covers the essential invocation scenario: editing the text of an existing update. It does not state expected return behavior or how the IDs are obtained, but the required parameters and their purpose are largely inferable from names and the description. Adequate, but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20%, so the description must compensate. It does clarify that `message` carries the text and that the other IDs are identifiers, and it marks `message` as the only meaningful value to change. The ID parameters (status_page_id/report_id/update_id) are not elaborated, though their roles are inferable from their names and the incident-report context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Edits the text of a previously published timeline message (`message` only).' It also narrows the operation to the single mutable field and explicitly states what cannot be changed, which makes the tool's purpose unambiguous even among closely named siblings like status_page_incident_report_update_add/delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this when needing to change the text of an existing timeline update. However, there is no explicit when-not-to-use or named alternative (e.g., adding a new update with status_page_incident_report_update_add or deleting one with update_delete). The 'cannot be changed' clause is an exclusion of fields, not a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_listList status pagesARead-onlyInspect
Lists all status pages on the account with their full configuration: domain/slug, groups and linked monitors, theme, white-label, password protection, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Only status pages of this project. Omitted, the whole account is returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile and the world-dependent nature of the result set. The description adds useful context about the returned full configuration (domain/slug, groups, linked monitors, theme, white-label, password protection), but does not go further into ordering, pagination, or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single tight sentence with the main action front-loaded, followed by a compact enumeration of returned fields. There is no fluff, and the 'etc.' handles remaining configuration items without unnecessary padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description gives the agent what it returns (full configuration with key fields) and the scope (account or project). Combined with the schema and annotations, nothing essential is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, project_id, is fully documented in the schema ('Only status pages of this project. Omitted, the whole account is returned.'), so the baseline of 3 applies. The description does not add any parameter-level detail, but the schema already covers it completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Lists') and resource ('all status pages') and enumerates the configuration fields returned, making the core action clear. It also explicitly scopes the call to the account, but it doesn't name sibling tools like status_page_get, so differentiation relies on the word 'all' rather than an explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the tool's scope (all status pages on the account, with project filtering available) but gives no explicit guidance on when to choose this over siblings such as status_page_get, status_page_check_slug, or status_page_create. Usage is implied rather than stated, and no alternatives or when-not-to-use conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_maintenance_deleteDelete planned maintenance from status pageADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| maintenance_id | Yes | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, but the description adds critical context: irreversibility and that all updates are removed. This goes beyond the annotation and informs the agent of the full impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, with the action and its irreversible consequence front-loaded. The alternative guidance is placed second but still concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive delete with a confirm flag, the description covers the purpose, the impact (irreversible, all updates removed), and the preferred alternative. The confirm parameter is explained in the schema, and no output schema is needed. The tool is simple enough that this is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'confirm' has a description). The tool description does not compensate by explaining status_page_id or maintenance_id. While the parameter names are self-explanatory, the description adds no semantic value beyond the schema, and low coverage should be offset by the description per the rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Removes') and a precise resource ('planned maintenance entry from a status page'), clearly distinguishing it from siblings like status_page_maintenance_schedule or status_page_maintenance_update. It also mentions 'with all its updates', which narrows the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly provides an alternative: if a maintenance is just cancelled, publishing a 'cancelled' timeline update is preferable, otherwise history is lost. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_maintenance_listList planned maintenances for a status pageARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds behavioral nuance by stating the return includes both upcoming and completed entries and advises client-side filtering, which is not in the annotations. This adds value beyond the bare read-only flag without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero redundancy. The primary action is front-loaded, the colon introduces the return fields, and the second sentence adds a key behavioral detail about client-side filtering. No wasted words; structure is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is largely complete: it specifies the return fields, the inclusion of both upcoming and completed entries, and the filtering expectation. It does not mention pagination, ordering, or error conditions, but for a read-only list these are minor gaps given the annotation covers read-only behavior and the description covers the essential return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not explain the single parameter status_page_id beyond implying it identifies the status page. The description lacks explicit guidance on how to obtain or interpret this ID, leaving the agent to infer from the name alone. This is insufficient for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Lists planned maintenances published on a status page' and enumerates the fields returned (title, description, window, monitors, timeline). This directly distinguishes it from sibling tools like status_page_maintenance_schedule (which schedules) and other list tools (announcement_list, incident_report_list) by specifying the maintenance domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating it lists planned maintenances and explicitly notes 'Includes upcoming and completed entries — filter by time on the client side.' This informs the agent that all entries are returned and filtering is client-side, which guides usage without naming alternatives. It lacks explicit when-not statements, but the purpose is unambiguous for a list operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_maintenance_scheduleSchedule planned maintenanceADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| servers | Yes | Status-page servers affected by the maintenance. Use `status_page_get` to find ids. | |
| ended_at | Yes | ISO 8601 end time. | |
| started_at | Yes | ISO 8601 start time. | |
| description | Yes | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description adds meaningful extra behavioral context: monthly quota and the 403 overflow response. It does not contradict the annotations. The description could also mention public visibility and confirm/auth requirements, but the schema's confirm parameter already covers part of that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences that front-load the purpose, then cover requirements and quota. No filler or redundancy. The only structural flaw is the incomplete list of required fields, but that is more of a semantic issue than a conciseness issue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the quota risk and general required inputs, but it does not explain how to obtain the status_page_id, what happens on success, or that the maintenance will be publicly announced. For a destructive write tool with no output schema and several sibling maintenance tools, this is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description repeats server shape as `{id}[]` and says all fields are required, which the schema mostly already communicates. It omits status_page_id from the required-field list, which is confusing since status_page_id is actually required. With 57% schema coverage, the description adds marginal value but does not fully clarify remaining parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (announces/schedules a planned maintenance window) and the resource (a status page). It is distinguishable from siblings like status_page_maintenance_update and status_page_announcement_create because it specifies planned maintenance, not incidents or generic announcements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is the creation tool for planned maintenance, but it never explicitly says 'use status_page_maintenance_update to modify existing maintenance' or gives selection criteria against siblings. The quota and 403 note provide operational context, but no direct alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_maintenance_updateEdit planned maintenance fieldsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| servers | No | ||
| ended_at | No | ||
| started_at | No | ||
| description | No | ||
| maintenance_id | Yes | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the write/destructive nature is known. The description adds the clarification that it does not append timeline messages, which is a useful behavioral distinction. However, it does not disclose whether the update is partial or full (e.g., whether omitting fields resets them), nor any side effects on existing updates, which are relevant for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence states the purpose and fields, the second clarifies the boundary with a sibling. The most important information is front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter write operation with no output schema and low schema coverage, the description is insufficient. It omits crucial details like partial update behavior, how to specify servers, the role of the confirm parameter, and any prerequisites beyond the required IDs. An agent would likely need to inspect the schema for basic usage and still might miss the semantics of partial updates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13%, with descriptions present only on servers.id and confirm. The description maps 'time window' to started_at/ended_at and lists the affected servers, but it does not explain that the update may be partial, how servers are specified (e.g., requiring IDs from status_page_get), or the purpose of the confirm parameter for destructive authorization. Given the low schema coverage, the description should compensate more than it does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Edits') and resource ('the maintenance entry itself'), enumerates the editable fields (title, description, time window, affected servers), and explicitly distinguishes itself from status_page_maintenance_update_add by clarifying it does not append a timeline message. This makes its purpose unmistakable and differentiates it from the most confusable sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when not to use this tool: it states 'This does not append a timeline message' and directs the agent to status_page_maintenance_update_add for progress updates. This covers the primary alternative. It does not explicitly mention other siblings like status_page_maintenance_update_edit, but the naming and context make the intended use clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_maintenance_update_addAdd timeline update to planned maintenanceADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| message | Yes | ||
| published_at | No | ISO 8601. Must be between the maintenance `started_at` and now (inclusive). Omit to let the server stamp the current time. | |
| maintenance_id | Yes | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write and destructive operation. The description adds the timing validation for published_at but does not disclose other side effects such as subscriber notifications or maintenance status changes. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The action is front-loaded, and the published_at constraint is presented clearly with a conditional. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core behavior and the key constraint. It does not mention return values or prerequisites like an existing maintenance schedule, but for a simple append operation with no output schema, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, but the description adds crucial semantics for the most complex parameter, published_at, explaining the inclusive range and the default when omitted. It also implicitly clarifies that message is the text of the update. The ID parameters are self-explanatory from context, so the description adequately compensates for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: it appends a new message to the maintenance timeline, and it enumerates the types of updates ('started', 'in progress', 'completed', 'postponed'). It distinguishes itself from sibling edit/delete tools by using the verb 'appends' and the resource 'maintenance timeline'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about the operation and its timing constraints (published_at must be between started_at and now, pre-announce not supported). However, it does not explicitly mention alternatives like the edit or delete tools, or state when not to use this tool beyond the timing limitation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_maintenance_update_deleteDelete a timeline update from planned maintenanceADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| update_id | Yes | ||
| maintenance_id | Yes | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag destructive=true, so the description carries the behavioral burden and does it well: it specifies what is removed, what remains, and the 400 error for the initial update. This is exactly the kind of scoping information an agent needs before invoking a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the core action and scope come first, then the edge-case guidance. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, parent-scoped delete with no output schema, the description covers the caller's key questions: what gets deleted, what persists, how the initial update is rejected, and what to do instead. No additional operational detail is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, but the description adds real meaning to `update_id` by identifying it as a timeline message within the maintenance and distinguishing it from the maintenance entry. `status_page_id` and `maintenance_id` are left to their self-explanatory names, while `confirm` is already documented in the schema; only minor extra relation guidance is absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and object: removes one timeline message from a planned maintenance, keyed by `update_id`. It also clarifies what it is not (deleting the whole maintenance entry), which disambiguates it from `status_page_maintenance_delete` and the update add/edit siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the deletion scope: the entry and other messages stay, so the reader knows when this tool is appropriate. It also handles the exception case ('initial update cannot be deleted') and routes to the correct alternative ('delete the whole entry instead').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_maintenance_update_editEdit a timeline update in planned maintenanceADestructiveInspect
Edits the text of a previously published maintenance timeline message (message only).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| message | Yes | ||
| update_id | Yes | ||
| maintenance_id | Yes | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive and non-read-only, so the description does not need to restate that. It adds useful context by limiting the change to `message` only and noting the message must have been previously published, but it does not explain side effects, authorization requirements, or the confirm override behavior beyond what the schema already documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the action and the most important constraint (`message` only). There is no filler or redundant restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a straightforward edit call, but with no output schema it does not mention what response to expect. It also gives no guidance on how the three id parameters should be obtained or when to use edit versus add/delete, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, so the description must compensate. It adds the key semantic that only `message` is editable, but it does not explain the roles of status_page_id, maintenance_id, or update_id; the parameter names are suggestive but not fully documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it 'Edits the text of a previously published maintenance timeline message' and explicitly restricts the editable content to `message` only. This clearly distinguishes it from sibling add/delete timeline-update tools without needing to open schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for editing an existing, previously published timeline update, which gives some context. However, it does not explicitly state when to use this tool instead of status_page_maintenance_update_add or status_page_maintenance_update_delete, and it names no alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_publishPublish or unpublish status pageADestructiveInspect
Switches the page visibility for end users without deleting its configuration. action = "published" makes it reachable via slug/domain, "unpublished" hides it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| action | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal that this is a write and destructive call, so the description does not need to repeat that. It adds useful context beyond the annotations by explaining that configuration is preserved and that 'published' makes the page reachable via slug/domain while 'unpublished' hides it. This meaningfully clarifies the effect of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core action is front-loaded, and both the non-destructive nature and the parameter semantics are covered efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple visibility toggle, the description provides the core semantics: what published/unpublished do and that configuration is retained. The schema covers the `confirm` override requirement, and no output schema exists, so return values do not need explanation. The main gap is the under-described `id` parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description must compensate for undocumented parameters. It does clarify the behavioral meaning of the action enum values, which is helpful. However, the required `id` parameter is still not described in either the schema or description, and `confirm` is only explained in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: it toggles status page visibility for end users. It also adds the key distinction that this does not delete the page configuration, which separates it from delete-style operations. However, it does not explicitly name or contrast with sibling tools like status_page_update, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you want to publish or unpublish a status page without removing its configuration. It does not explicitly state alternatives or provide 'when not to use' guidance, leaving the choice to inference rather than direct routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_set_groupsReplace status page groups & monitorsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| groups | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and read-only=false, but the description adds critical detail beyond that: the operation is a full replacement, not a merge, and omitted groups/monitors are removed. This tells the agent exactly what will be destroyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences carry all key semantics: full replacement, idempotency, group/server shape, update-vs-create behavior, and removal of missing items. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, complex payload operation with no output schema, the description gives enough to call it correctly: full-replacement semantics, payload shape, id behavior, and source of server IDs. It could have explicitly named the top-level id as the status page ID, but the title and phrasing make that inferable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (33%), but the description compensates by explaining the group/server payload structure, the meaning of server_id (from monitor_list), and the create-vs-update semantics of the group id. It does not elaborate on the top-level id or confirm flag, but those are less ambiguous from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it 'fully replaces the structure of groups and monitors on the page'. It also clarifies the behavior is 'idempotent replace, not merge', which distinguishes this from update-style tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear operational context: pass an existing group id to update, omit it to create, and anything missing from the payload is removed. It does not explicitly name alternative tools or say when not to use it, but the replace semantics make the intended use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_subscriber_deleteDelete a subscriber from status pageADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| subscriber_id | Yes | ||
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description meaningfully adds behavioral context beyond the destructiveHint annotation: it states the permanent removal, the real-world consequence of stopping emails, and the recovery path of self-resubscription on the public page. It also clarifies the relationship to status_page_subscriber_list as the id source. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: three sentences, each earning its place. The primary action is front-loaded, followed by the irreversible consequence and the id source, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive tool with three parameters, the description covers the operation's core purpose, its permanent effect, and one of the key parameter origins. The main gap is that the status_page_id source is not mentioned and there is no guidance on response/error behavior, but the schema and sibling list make the remaining context reasonably discoverable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only explains the confirm parameter (33% coverage); the description compensates by explaining that subscriber_id values come from status_page_subscriber_list. However, status_page_id is left undocumented in both schema and description, so the agent must infer its source from the sibling tool names. This partial compensation is useful but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Removes') and resource ('a subscriber from the status page'), and clearly differentiates itself from sibling tools like status_page_subscriber_list and status_page_subscriber_export by emphasizing deletion and irreversibility. It also gives the concrete effect of the operation, which makes the tool's identity unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool and warns that deletion is irreversible. It explicitly points to status_page_subscriber_list as the source of subscriber ids, which is actionable guidance for a tool that only deletes. It does not explicitly state when not to use alternatives, but no alternative deletion tool exists for subscribers, so the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_subscriber_exportExport subscribers to CSVARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the output is CSV text with specific columns, which is useful behavioral context beyond the annotations. It doesn't mention pagination or limits, but for a read-only export with openWorldHint, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence states the action, resource, and output format; the second gives use cases. Everything earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only export tool with annotations covering safety, the description is nearly complete. It specifies the output format and columns, which is the key information an agent needs. It doesn't describe error cases or rate limits, but those are minor for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no description for status_page_id. The description mentions 'of a status page' which implies the parameter's role, but doesn't add detail about format or constraints beyond the schema's type and exclusiveMinimum. Baseline 3 is appropriate since the single parameter's purpose is inferable from the tool name and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Exports'), a specific resource ('all subscribers of a status page'), and the exact output format (CSV text with columns). It clearly distinguishes this from status_page_subscriber_list (which lists subscribers) and status_page_subscriber_delete (which removes them).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says it is 'useful for backups or migrating the audience elsewhere,' which gives clear context for when to use it. It doesn't explicitly name alternatives or exclusions, but the sibling list makes the distinction obvious and the use cases are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_subscriber_listList subscribers of a status pageARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status_page_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description goes beyond that by detailing the returned subscriber statuses, stats fields, the 'total' calculation, and the empty-list behavior when the plan limit is zero, adding genuinely useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately detailed but every clause earns its place: the email subscription context, the returned fields and stats, and the plan-limit edge case. It is compact and readable, though a slightly clearer separation between return-structure details and the prerequisite condition would improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately explains the return value including subscriber statuses, stats counts, total, and plan limit. It also covers the edge case where the plan lacks subscriber capacity. The main omission is details about pagination or ordering, but for a simple list tool with one parameter this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but there is only one parameter, status_page_id, whose meaning is transparent from the tool name, title, and description. The description also references 'per page' and 'plan limit', reinforcing that the parameter identifies a specific status page, so the absence of an explicit parameter explanation is not a meaningful gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Lists visitors subscribed to status page updates by email.' It clearly distinguishes this list operation from sibling tools like status_page_subscriber_export and status_page_subscriber_delete, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the resource and explaining what the tool returns, but it does not explicitly state when to prefer this tool over alternatives such as status_page_subscriber_export. The plan-limit caveat gives some situational context but no direct when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_page_updateUpdate status pageADestructiveInspect
Partial update of status-page settings. Pass only the fields you want to change. Slug/domain conflicts → 409; plan-feature constraints → 403.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | No | ||
| slug | No | URL-safe slug (3–50 chars, lowercase Latin letters, digits, hyphens, underscores). If omitted on create, a random one is generated. | |
| domain | No | Custom domain (must be a subdomain pointing to Statuser via CNAME). Requires `custom_domain_enabled`. | |
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| language | No | Language of the public page, subscriber emails and RSS/Atom feeds: `ru`, `en`, `kk` (Kazakh, Cyrillic), `uz` (Uzbek, Latin), `tr`, `zh` (Simplified Chinese), `es`, `de`, `fr`. Visitors cannot switch it. Server names, incident reports and announcements are not translated — write them in the page language. Omitted on create, the page is in Russian. | |
| logo_url | No | ||
| password | No | Password to gate the page. Requires `password_protected_status_page`. | |
| timezone | No | ||
| is_indexed | No | Allow search engines to index the page. Requires `indexing_control_enabled` if you want to disable it. | |
| project_id | No | Project the status page belongs to. Omitted on create, it goes to the oldest project of the account; passed on update, the page moves there together with the monitors it shows. See `project_list`. | |
| theme_mode | No | `user` — follow viewer preference; `light` / `dark` — force theme. | |
| company_url | No | ||
| description | No | ||
| favicon_url | No | ||
| support_url | No | ||
| is_published | No | ||
| timeline_days | No | How many days the timeline on the page covers. Must be one of: 7, 14, 30, 60, 90, 180. | |
| is_white_labeled | No | Hide Statuser branding. Requires `white_label_enabled`. | |
| subscribers_enabled | No | Show the subscribe button on the public page so visitors can get emails about incident reports and planned maintenances (plus RSS/Atom feeds). Requires a plan with `status_page_subscribers_limit > 0`. | |
| subscribers_reply_to | No | Reply-To address for subscriber emails — where subscriber replies will arrive. Pass `null` to clear. | |
| subscribers_from_name | No | Display name of the sender in subscriber emails (the From address itself stays on the shared sending domain). Defaults to the status page name. Pass `null` to reset. | |
| uptime_decimal_places | No | ||
| minimum_incident_duration | No | Minimum incident duration (in seconds, 0–86400) before it appears on the page. Requires `status_page_minimum_incident_duration_enabled` to set above 0. | |
| is_not_monitored_operational | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is partly covered. The description adds genuine context the annotations cannot: the operation is partial (unspecified fields are untouched) and the failure semantics (409 for slug/domain conflicts, 403 for plan-feature constraints). It does not explain what is destroyed or the write-authorization requirement, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences with zero filler, front-loading the operation and its partial nature before the error-code shorthand. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 25-parameter mutation with no output schema, the description covers the update semantics and key error codes but says nothing about the returned object or about the many parameters the schema leaves undocumented. Adequate but with visible gaps given the tool's surface area.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 56% across 25 parameters, so the schema carries much of the burden and the description must compensate for the rest. The only parameter-level guidance is the partial-update rule, which is useful but does not explain undocumented fields such as id, name, timezone, logo_url, or is_published. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Partial update of status-page settings') and makes the partial/PATCH semantics explicit. It does not name sibling boundaries (e.g., status_page_publish for publishing, status_page_set_groups for group assignment), but the 'settings' scope is clear enough to distinguish it from those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Pass only the fields you want to change' gives real guidance on how to invoke it, which is valuable for a 25-param tool. However, there is no when-to-use/when-not guidance versus siblings like status_page_publish or status_page_set_groups, and no mention of prerequisites such as the `confirm` flag for write authorization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_linked_listList linked Telegram chatsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful output detail (chat id, type, username, avatar, 2FA flag, selected topic, available topics) and a specific supergroup-forum edge case, without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence states the resource and then compacts the returned settings into a list. Every phrase earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description enumerates the key returned fields, which is sufficient for a parameterless read-only list. It does not mention pagination or the exact shape of topic data, but for this simple tool the context is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the 100% schema coverage meets the baseline; no parameter explanation is needed. The description appropriately adds no parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Returns') and a specific resource ('all Telegram personal accounts and group chats linked to the Statuser account') along with the settings included. It is unambiguous, though it does not explicitly differentiate itself from sibling list tools like max_linked_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is clear: call this when you need to retrieve linked Telegram chats and their settings. It does not explicitly mention alternatives or exclusions, but for a zero-parameter read-only list the context is sufficient for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_set_topicSet Telegram topic for notificationsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| telegram_id | Yes | Telegram chat id (from `telegram_linked_list`). | |
| message_thread_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write/destructive operation, and the description adds meaningful behavior details: setting a binding, clearing it with null, and the confirm override authorization path for one-off writes. This goes beyond the annotation's binary flags without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences with no filler: the core routing behavior is front-loaded, followed by the null edge case and a pointer to the discovery sibling. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter write tool with annotations and a partial schema, the description covers the main usage, the clearing edge case, and how to discover valid IDs. It does not describe the success/error response, but there is no output schema and the invocation path is otherwise clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 67% schema description coverage, the description compensates for the undocumented `message_thread_id` semantics by explaining that null clears the binding and routes to the main chat. It also notes `telegram_id` comes from `telegram_linked_list`, adding relational context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Routes') and resource ('Statuser notifications to a specific topic in a Telegram chat'), and clearly distinguishes the action from the discovery tool `telegram_linked_list`. The null-clearing behavior is also stated, making the tool's scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it is 'typically useful for supergroup forums,' tells the agent to pass null to clear the binding, and explicitly directs to `telegram_linked_list` for discovering available topics. It does not describe when not to use the tool, but there is no obvious sibling providing the same set action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
two_factor_infoGet 2FA infoARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and open-world aspects. The description adds value by specifying the exact fields and allowed values for `allowed_methods`, which goes beyond the annotations. No contradictions, and it discloses that `preferred_method` can be null. It doesn't mention rate limits or other behaviors, but for a read-only info endpoint this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is information-dense without redundancy. It front-loads the purpose and immediately lists the returned fields and their possible values. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter getter with no output schema, the description fully explains the return fields and their allowable values. The agent can correctly invoke and interpret the result without any additional guidance. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so schema coverage is trivially 100%. The description does not need to explain parameters. It instead explains the return structure, which is relevant to the agent's expectation of output. Since 0 params merit a baseline of 4, and the description enriches understanding of what the tool returns, a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') and resource ('two-factor authentication state'), and clearly enumerates the fields returned (`preferred_method`, `allowed_methods`). It distinguishes itself from siblings by focusing on the state of 2FA rather than settings or management tools like `max_set_2fa_account`. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: call it to inspect the current 2FA configuration. There are no directly competing getter tools for 2FA state, so explicit exclusions are not needed. However, it does not state when not to use it or mention any prerequisites, but given its read-only nature and no parameters, the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_createCreate webhookADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| name | Yes | ||
| secret | No | Signing secret. Omit (or pass `null`) if you do not want signatures. | |
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| project_ids | No | Projects whose monitoring events go to this webhook. Omitted, the oldest project of the account is used. An empty array is meaningful: it switches monitoring events off entirely, while account events (invoices, security, API keys) keep arriving regardless of projects. | |
| subscriptions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only and destructive, so the mutation profile is covered. The description adds useful behavioral context beyond the annotations: Statuser will POST events of the chosen subscription types, an optional secret enables payload signing for origin verification, and a plan feature is required. This gives the agent a solid mental model of what happens after creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying distinct information: what the resource is, how the webhook behaves, and what prerequisite exists. No filler, no repeated schema content, and the most important action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with six parameters, no output schema, and a destructive annotation, the description gives enough context to select and invoke it correctly: it explains the event delivery semantics, signing behavior, and plan requirement. It does not mention the `confirm` override or project filtering, but those are already described in the input schema, so the remaining gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for `subscriptions` (they are the event types that trigger POSTs) and `secret` (used for signing payloads), which the schema's enum and nullability do not fully convey. However, schema description coverage is only 50%, and the description does little to clarify required `name`/`url` semantics or the nuanced `project_ids` behavior, though those are documented in the schema. It partially compensates but not completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Registers a new webhook endpoint.' It clearly distinguishes this creation tool from sibling tools like webhook_update, webhook_delete, webhook_list, and webhook_test by emphasizing 'new' and by describing the post-registration behavior (POSTing events).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the core use case obvious: call this when creating a new webhook. It also gives a concrete prerequisite ('Requires webhook_notifications_enabled on the plan'), which helps an agent decide whether the call will succeed. It does not explicitly name alternatives or say 'use webhook_update instead to modify an existing webhook,' but the sibling names make that distinction clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_deleteDelete webhookADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and not read-only. The description adds specific behavioral context by stating Statuser will stop sending events to the endpoint, which clarifies the real-world consequence of the deletion. This is useful beyond the annotation flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The primary action and consequence come first, and the alternative usage is given in the second sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is complete for a simple delete operation: it names the action, the consequence, the alternative, and the safety profile is covered by annotations. The confirm parameter behavior is already documented in the schema, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the parameters. However, the id parameter is self-evident from the tool name and schema, and confirm already has a detailed schema description. With 50% schema coverage, the description does not need to compensate heavily, but it also adds no parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Removes a webhook endpoint.' It clearly differentiates from the sibling webhook_update by explaining that update is for partial subscription changes rather than full deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing guidance: if the goal is to stop only some event types, use webhook_update and shrink the subscriptions list instead of deleting. This tells the agent both when to use this tool and when to choose an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_listList webhooksARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds genuine value beyond annotations by disclosing exactly what is returned (name, URL, subscriptions) and, importantly, what is not returned (the secret set on creation). This is useful behavioral context an agent would not otherwise know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero wasted words. The purpose is front-loaded, returned fields are given in one compact clause, and the critical exclusion (secret not returned) is stated at the end. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description carries the burden of explaining return content and does so adequately: fields returned and the secret excluded. It omits minor details like ordering or pagination, but for a simple account-level listing with no inputs, the description is sufficiently complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema description coverage, so the schema leaves nothing undocumented. There are no parameters whose meaning the description must clarify, and it appropriately avoids inventing parameter-like detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Lists all webhook endpoints configured on the account" states a specific verb (lists), resource (webhook endpoints), and scope (account-level), and enumerates the returned fields (name, URL, subscriptions). This clearly distinguishes it from the sibling webhook_create/update/delete/test tools, which all perform different actions on the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the tool's context clear — enumerate all webhooks on the account — but provides no explicit when-to-use guidance or alternatives. With no webhook_get sibling, the usage is fairly inferable, but the description doesn't explicitly state when to prefer this over webhook_test or webhook_update, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_testSend test request to webhookADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true. The description adds valuable context: the payload is flagged as a test, and on delivery failure it returns 502 with details (`reason`, `webhook_status`). This goes beyond the annotations by explaining the test nature and the error response shape. It doesn't contradict annotations; the destructiveHint aligns with the 'confirm' parameter's mention of write/destructive authorization.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The primary action and purpose are front-loaded, and the failure-mode detail is placed second. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a test/diagnostic tool with no output schema, the description covers the key behavioral aspects: what is sent, that it's flagged as a test, and what happens on failure. It doesn't describe the success response format, but for a test tool the failure details are more critical. The annotations cover the write/destructive nature, and the `confirm` parameter is documented in the schema. A small gap: it doesn't mention what a successful response looks like, but this is minor for a test endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: the `confirm` parameter is documented in the schema, but `id` is not. The description doesn't explicitly explain `id`, but the tool name and context ('to the webhook') imply it's the webhook identifier. The description adds value by explaining the test payload behavior and the 502 response, which helps an agent understand what the call does. However, it doesn't explicitly state that `id` is the webhook ID, which is a minor gap given the 50% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Sends'), a specific resource ('test payload to the webhook'), and the purpose ('verify availability, signature handling and receiver behavior'). It clearly distinguishes this from sibling tools like webhook_create/webhook_update/webhook_delete, which are CRUD operations, and monitor_test_notify, which targets a different resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need to verify a webhook's availability, signature handling, or receiver behavior. It doesn't explicitly name alternatives or exclusions, but the context of 'test request' and the sibling list make the use case clear. A small gap: it doesn't state when NOT to use it (e.g., for permanent configuration changes, use webhook_update).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_updateUpdate webhookADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| url | No | ||
| name | No | ||
| secret | No | ||
| confirm | No | Set to true to authorize this write/destructive call even if STATUSER_ALLOW_WRITE is not enabled in the server config. Required for one-off overrides. | |
| project_ids | No | Full set of projects whose monitoring events go to this webhook — the list replaces the previous one. Omitted, the set stays as it was. An empty array switches monitoring events off entirely; account events keep arriving. | |
| subscriptions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive/non-readonly, so the bar is lower. The description adds valuable behavioral context beyond annotations: changing a webhook recomputes signatures and the receiver must be updated, and `secret: null` clears the signing secret. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler. The purpose is front-loaded, followed by the key usage rule and the most important side effect. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 7-parameter tool with no output schema, the description covers the core behavior and the most consequential side effect. The schema already documents the confirm authorization flag and project_ids replacement semantics, so the main gap is the lack of mention of a return value, which is not critical here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29%, so the description carries more responsibility. It compensates partially by explaining partial-update semantics and the secret-clearing behavior, but it does not add meaning for url, name, or subscriptions, leaving those to the schema or inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description leads with a specific action and resource: 'Partial update of an existing webhook.' The word 'partial' and 'existing' cleanly distinguish it from sibling tools like webhook_create, webhook_delete, and webhook_test, so an agent can select it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage guidance ('Pass only the fields you want to change') and implies this tool is for existing webhooks, but it never names alternatives or explicitly states when not to use it (e.g., use webhook_create for new webhooks). The context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.4.8- Changed
status_page_create1 field changed- added
Input schema / properties / languageAdded value: +{ + "description": "Language of the public page, subscriber emails and RSS/Atom feeds: `ru`, `en`, `kk` (Kazakh, Cyrillic), `uz` (Uzbek, Latin), `tr`, `zh` (Simplified Chinese), `es`, `de`, `fr`. Visitors cannot switch it. Server names, incident reports and announcements are not translated — write them in the page language. Omitted on create, the page is in Russian.", + "enum": [ + "ru", + "en", + "kk", + "uz", + "tr", + "zh", + "es", + "de", + "fr" + ], + "type": "string" +}
- Changed
status_page_update1 field changed- added
Input schema / properties / languageAdded value: +{ + "description": "Language of the public page, subscriber emails and RSS/Atom feeds: `ru`, `en`, `kk` (Kazakh, Cyrillic), `uz` (Uzbek, Latin), `tr`, `zh` (Simplified Chinese), `es`, `de`, `fr`. Visitors cannot switch it. Server names, incident reports and announcements are not translated — write them in the page language. Omitted on create, the page is in Russian.", + "enum": [ + "ru", + "en", + "kk", + "uz", + "tr", + "zh", + "es", + "de", + "fr" + ], + "type": "string" +}
2 tool updates
v0.4.7- Changed
notification_rule_set5 fields changed- added
Input schema / properties / discordAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / mattermostAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / pachcaAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / rocketchatAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / slackAdded value: +{ + "type": "boolean" +}
- Changed
project_channel_set2 fields changed- changed
Input schema / properties / channel_id / descriptionPrevious value: -"Id of the channel inside its own list — as returned by `project_channel_list`, `notification_email_list`, `telegram_linked_list` or `max_linked_list`."New value: +"Id of the channel inside its own list — as returned by `project_channel_list`, `notification_email_list`, `telegram_linked_list` or `max_linked_list`. For work chats (`chat_webhook`) take it from `project_channel_list`." - changed
Input schema / properties / type / enumPrevious value: -[ - "email", - "telegram", - "max" -]New value: +[ + "email", + "telegram", + "max", + "chat_webhook" +]
87 tool updates
v0.4.5- First observed
account_get - First observed
account_update - First observed
activity_log_export - First observed
activity_log_list - First observed
current_plan_get - First observed
holiday_mode_get - First observed
holiday_mode_set - First observed
incident_comment_create - First observed
incident_comment_delete - First observed
incident_comment_list - First observed
incident_comment_update - First observed
incident_comment_upload_file - First observed
incident_delete - First observed
incident_generate_ai_summary - First observed
incident_get - First observed
incident_get_events - First observed
incident_get_report_pdf - First observed
incident_get_server - First observed
incident_list - First observed
incident_rate_ai_summary - First observed
max_get_link - First observed
max_linked_list - First observed
max_set_2fa_account - First observed
max_unlink - First observed
monitor_create - First observed
monitor_delete - First observed
monitor_get - First observed
monitor_get_checks - First observed
monitor_get_dns_history - First observed
monitor_get_heartbeat_events - First observed
monitor_list - First observed
monitor_pause - First observed
monitor_test_notify - First observed
monitor_update - First observed
notification_email_add - First observed
notification_email_confirm - First observed
notification_email_list - First observed
notification_email_remove - First observed
notification_email_resend - First observed
notification_rule_list - First observed
notification_rule_set - First observed
plan_list - First observed
project_channel_list - First observed
project_channel_set - First observed
project_create - First observed
project_delete - First observed
project_list - First observed
project_reorder - First observed
project_update - First observed
status_page_announcement_create - First observed
status_page_announcement_delete - First observed
status_page_announcement_list - First observed
status_page_announcement_update - First observed
status_page_check_domain - First observed
status_page_check_slug - First observed
status_page_create - First observed
status_page_delete - First observed
status_page_get - First observed
status_page_incident_report_delete - First observed
status_page_incident_report_list - First observed
status_page_incident_report_publish - First observed
status_page_incident_report_update - First observed
status_page_incident_report_update_add - First observed
status_page_incident_report_update_delete - First observed
status_page_incident_report_update_edit - First observed
status_page_list - First observed
status_page_maintenance_delete - First observed
status_page_maintenance_list - First observed
status_page_maintenance_schedule - First observed
status_page_maintenance_update - First observed
status_page_maintenance_update_add - First observed
status_page_maintenance_update_delete - First observed
status_page_maintenance_update_edit - First observed
status_page_publish - First observed
status_page_set_groups - First observed
status_page_subscriber_delete - First observed
status_page_subscriber_export - First observed
status_page_subscriber_list - First observed
status_page_update - First observed
telegram_linked_list - First observed
telegram_set_topic - First observed
two_factor_info - First observed
webhook_create - First observed
webhook_delete - First observed
webhook_list - First observed
webhook_test - First observed
webhook_update
TDQS
Scored across 87 tools
Several tool families have near-identical names and overlapping operations, especially status_page_maintenance_update* and status_page_incident_report_update*, where update, update_add, update_edit, and update_delete are hard to distinguish without careful reading. Other overlaps like project_channel_set vs notification_rule_set and monitor_test_notify vs webhook_test also require domain knowledge to separate correctly.
Almost all tools use snake_case with an object prefix and a verb, e.g. monitor_create, incident_list, webhook_delete. Minor deviations exist such as two_factor_info, telegram_linked_list, max_linked_list, and mixed verb choices (get/list/info), but the overall pattern is predictable.
87 tools is far beyond a practical MCP surface and exceeds the 50+ threshold for extreme over-scoping. Many fine-grained operations, especially around status-page timeline updates and incident reports, could be consolidated into fewer tools without losing capability.
The surface covers the domain comprehensively: monitor lifecycle, incidents and comments, status pages with groups, announcements, maintenance, incident reports, subscribers, webhooks, notification rules, emails, account settings, plans, audit logs, holiday mode, and 2FA/linking. No obvious lifecycle gap stands out for the stated monitoring and status-page platform.
Maintenance
Related MCP Connectors
Connect AI assistants to Xitoring monitoring: servers, uptime, incidents, metrics, SSL, and alerts.
Manage monitors, status pages, incidents and maintenances in your openstatus workspace.
Give your AI agents trusted access to the full Postman platform.
- StatOSSOAuthcom.statoss
Status pages and uptime monitoring: read status, monitors and incidents; open incidents.
Related MCP Servers
AlicenseCqualityBmaintenanceConnects AI assistants to GetMonitor status pages, monitors, incidents, and maintenance schedules via read-only tools.10023 npmApache 2.0- AlicenseAqualityDmaintenanceEnables AI assistants to manage PagerDuty incidents, view alerts, and check on-call schedules with both read-only and write operations.9Apache 2.0
- FlicenseBqualityCmaintenanceEnables AI assistants to manage Sciple platform content including environments, services, dashboards, runbooks, projects, and tickets through the Sciple REST API.6052 PyPI-

SutramX MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents and assistants to manage a SutramX workspace by listing and changing monitors, reading check results, handling incidents, and managing status pages through the SutramX API. Access can be limited to read-only or optionally allow destructive operations.277 npmMIT