remnawave-mcp
Click on "Install 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., "@remnawave-mcplist active users and their subscription expiry dates"
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.
remnawave-mcp
Автономный MCP-сервер (Model Context Protocol) для панели Remnawave. Один
инструмент — на каждую операцию method + path из OpenAPI-спеки панели
(217 операций), плюс несколько служебных инструментов. Сервер сгенерирован
из спеки, но не зависит от неё в рантайме — сгенерированный файл
src/generated/tools.ts закоммитен в репозиторий.
Пакет самодостаточен: копия спеки лежит в spec/remnawave_openapi.json,
внешних рантайм-зависимостей кроме @modelcontextprotocol/sdk и zod нет.
Что это
Полное покрытие API Remnawave 3.4.3: пользователи, ноды, хосты, подписки, инбаунды, шаблоны конфигов, bulk-операции и т.д. — 217 инструментов.
Слой безопасности в рантайме: режимы
ro/rw, deny-листы, подтверждение мутирующих операций (confirm), dry-run, лимит на bulk-операции, редактирование секретов в ответах, аудит-журнал вызовов.Служебные инструменты:
api_search,api_describe,api_status,api_audit_tail,system_metrics.Транспорт: stdio (по умолчанию) и опционально Streamable HTTP.
Related MCP server: Remnawave Tools MCP
Установка
npm ci
npm run buildnpm ci ставит зависимости строго по package-lock.json. Для разработки:
npm test, npm run typecheck.
Конфигурация
Все настройки — через переменные окружения. Скопируйте .env.example в .env
и заполните нужные поля (для локального запуска сервера через npm start;
.env в .gitignore, секреты никуда не коммитятся).
Ключевые переменные (полный список с комментариями — в .env.example):
Переменная | Назначение | По умолчанию |
| URL панели, без завершающего слэша | — (обязателен) |
| Bearer JWT-токен панели (или путь к файлу с токеном) | — |
| Basic-auth для | — |
|
|
|
| Доп. правила | пусто |
| Включить встроенный deny-лист Remnawave |
|
| Требовать |
|
| Не-GET никогда не отправляются, всегда превью |
|
| Путь к JSONL-журналу аудита |
|
| Таймаут HTTP-запроса к панели |
|
| Лимит размера ответа инструмента |
|
| Regex по имени инструмента — публикует подмножество | пусто (все) |
| Редактирование секретов в ответах |
|
| Доп. редактирование полей подписки (trojanPassword и т.д.) |
|
| Лимит длины массивов |
|
| Опциональный HTTP-транспорт (см. ниже) | — |
Режимы безопасности
ro (по умолчанию)
Разрешены только GET-запросы. Любая попытка вызвать не-GET инструмент
возвращает отказ (isError: true, denied: true).
rw
Разрешены все операции, кроме тех, что попадают в deny-лист. Для не-GET
операций по умолчанию (MCP_CONFIRM=1) первый вызов без confirm: true
возвращает превью запроса (метод, URL, тело) и ничего не отправляет.
Повторный вызов с confirm: true выполняет запрос.
// 1) без confirm — превью
{ "name": "users_create_user", "arguments": { "body": { "username": "bob", "expireAt": "2030-01-01T00:00:00Z" } } }
// -> { "preview": true, "method": "POST", "url": ".../api/users", "body": {...} }
// 2) с confirm — выполняется
{ "name": "users_create_user", "arguments": { "body": { "username": "bob", "expireAt": "2030-01-01T00:00:00Z" }, "confirm": true } }
// -> { "status": 201, "ok": true, "data": {...}, "truncated": false }Deny-лист
Действует независимо от режима. Встроенный дефолт для Remnawave
(MCP_DENY_DEFAULTS=1):
/api/keygenPOST /api/tokens/api/auth/api/passkeysPOST /api/nodes/actions/restart-allPOST /api/users/bulk/delete-by-status
Эти операции выдают постоянные админ-креды, генерируют ключи или уничтожают
пользователей — они запрещены, даже если модель попросит confirm: true.
Отключить дефолт: MCP_DENY_DEFAULTS=0. Добавить свои правила:
MCP_DENY="DELETE /api/users,POST /api/hosts/bulk".
Dry-run
MCP_DRY_RUN=1 — ни одна не-GET операция не отправляется на панель, всегда
возвращается превью, даже с confirm: true. Полезно для проверки, что делает
модель, без реального изменения данных.
Bulk-лимит
Для bulk-инструментов (/api/users/bulk/*, /api/hosts/bulk/*) массивы
uuids/ids в теле не могут превышать MCP_MAX_BULK_ITEMS (по умолчанию
100) — при превышении вызов отклоняется без обращения к панели.
Редактирование секретов
По умолчанию (MCP_REDACT=1) в ответах инструментов заменяются на
<redacted> ключи, подходящие под
/(password|passwd|secret|token|api_key|apikey|private_key|privateKey|authorization|cookie)/i.
Поля, специфичные для подписок Remnawave (trojanPassword, vlessUuid,
ssPassword, subscriptionUrl, links, happ.cryptoLink) — это рабочие
данные, нужные клиентам, поэтому по умолчанию не редактируются, даже если
формально подпадают под базовый паттерн (например trojanPassword). Включить
их редактирование: MCP_REDACT_SUBSCRIPTION=1. Полностью выключить
редактирование: MCP_REDACT=0.
Заголовок Authorization никогда не попадает ни в ответы, ни в аудит-журнал.
Подключение к Claude Code
При старте сервер сам читает
.envиз корня своего каталога (уже заданные переменные окружения имеют приоритет). Поэтому проще всего заполнить.envи подключать без--env, чтобы секреты не попали в конфиг MCP-клиента:claude mcp add remnawave -- node /абсолютный/путь/до/remnawave-mcp/dist/index.js
claude mcp add remnawave \
--env REMNA_BASE_URL=https://panel.example.com \
--env REMNA_API_TOKEN=xxxxx \
--env MCP_MODE=ro \
-- node /абсолютный/путь/до/remnawave-mcp/dist/index.jsДля rw-режима добавьте --env MCP_MODE=rw (и, по вкусу, MCP_CONFIRM,
MCP_DENY). Не забудьте npm run build перед подключением — сервер
запускается из dist/index.js.
Подключение через generic JSON-конфиг (любой MCP-клиент)
{
"mcpServers": {
"remnawave": {
"command": "node",
"args": ["/абсолютный/путь/до/remnawave-mcp/dist/index.js"],
"env": {
"REMNA_BASE_URL": "https://panel.example.com",
"REMNA_API_TOKEN": "xxxxx",
"MCP_MODE": "ro"
}
}
}
}Опциональный HTTP-транспорт
npm run start:http поднимает Streamable HTTP на 127.0.0.1:$MCP_HTTP_PORT.
Обязателен MCP_HTTP_TOKEN — без него сервер откажется стартовать. Каждый
HTTP-запрос должен нести заголовок Authorization: Bearer <MCP_HTTP_TOKEN>
(это отдельный токен транспорта, не токен панели).
Имена инструментов
snake_case, ASCII, ≤ 60 символов, уникальные. Правило: из operationId
вида XxxController_yyyZzz отрезается Controller, обе части переводятся
в snake_case и склеиваются через _. Например:
UsersController_getUsers → users_get_users,
SystemController_getRemnawaveHealth → system_get_remnawave_health.
Слишком длинные имена (после конвертации > 60 символов) обрезаются с
добавлением короткого хэша для сохранения уникальности.
Примеры вызова часто используемых инструментов
Список пользователей (users_get_users, GET /api/users, пагинация
через start/size):
{ "name": "users_get_users", "arguments": { "size": 20, "start": 0 } }Пользователь по ID (users_get_user_by_id, GET /api/users/{userId}):
{ "name": "users_get_user_by_id", "arguments": { "userId": 42 } }Список нод (nodes_get_nodes, GET /api/nodes):
{ "name": "nodes_get_nodes", "arguments": {} }Здоровье панели (system_get_remnawave_health,
GET /api/system/health; это же дёргает служебный api_status):
{ "name": "system_get_remnawave_health", "arguments": {} }Список хостов (hosts_get_hosts, GET /api/hosts):
{ "name": "hosts_get_hosts", "arguments": {} }Найти нужный инструмент, если имя не угадывается:
{ "name": "api_search", "arguments": { "query": "subscription" } }Посмотреть полную входную схему конкретного инструмента:
{ "name": "api_describe", "arguments": { "tool": "users_create_user" } }Как перегенерировать при обновлении панели
Скопируйте актуальный
openapi.jsonиз контейнера панели, например:docker cp <remnawave-container>:/opt/app/openapi.json ./new_openapi.jsonЗамените файл спеки в пакете:
cp new_openapi.json spec/remnawave_openapi.jsonПерегенерируйте инструменты и пересоберите:
npm run generate npm run buildПрогоните тесты (число инструментов в тестах жёстко зашито — 217; если панель добавила/убрала операции, обновите ожидаемое число в
test/generator.test.ts):npm testПроверьте
git diff src/generated/tools.ts— новые/изменённые инструменты, изменившиеся deny-правила (если появились новые опасные операции — добавьте их вDEFAULT_DENY_RULESвsrc/config.tsи вMCP_DENYв.env.example).
Разработка
npm run typecheck— проверка типов без сборки.npm test— vitest, все сетевые вызовы замоканы (vi.stubGlobal("fetch", ...)).npm run smoke— живая проверкаapi_status+ одинGETк реальной панели; выполняется только если в корне пакета есть заполненный.env, иначе печатаетskippedи завершается с кодом 0. Использует только GET.
Примечания к реализации
/metrics(Basic-auth, схемаPrometheus) отсутствует как отдельныйpathв OpenAPI-спеке панели, поэтому не генерируется автоматически. Вместо этого добавлен вручную написанный служебный инструментsystem_metrics, который используетREMNA_METRICS_USER/REMNA_METRICS_PASSи Basic-auth (а не Bearer-токен панели). Без этих переменных возвращает понятный отказ, не пытаясь ничего вызвать.Ответы панели, обёрнутые в
{ "response": ... }, возвращаются как есть — сервер не разворачивает эту обёртку.
Available Tools
222 toolsapi_audit_tailC
Последние N записей журнала аудита вызовов.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Сколько последних записей вернуть (по умолчанию 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only restates the read itself. It does not disclose ordering (newest-first?), whether entries are paginated, retention limits, or any authorization requirement for reading the audit log.
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 with zero filler; the resource and count are stated immediately. It is efficient, though so terse that it borders on under-specification rather than optimal conciseness.
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 tool with no output schema, the description covers purpose and the count parameter adequately. It is nonetheless thin for a log-reading tool: ordering, time range, and permission context are left 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 100%, with the 'n' parameter already documented as 'Сколько последних записей вернуть (по умолчанию 20)'. The description only echoes that same meaning ('Последние N записей'), adding no extra semantics such as a maximum value, so the baseline 3 applies.
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 resource ('журнал аудита вызовов' – API call audit log) and an operation ('Последние N записей' – return the last N records), so an agent knows exactly what it retrieves. It does not contrast itself with any sibling, but the audit-tail resource is clearly distinct from siblings like api_search, api_describe, or api_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?
There is no guidance on when to use this tool versus alternatives such as api_search or api_describe, and no stated exclusions or prerequisites. The word 'Последние' implies recency but the description never explains the trigger condition for calling it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_describeC
Полная схема входа и заметки по конкретному инструменту (по имени).
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | Имя инструмента, как в списке tools/list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state whether this is a read-only/local operation, that no side effects occur, or how the tool name is resolved - a meaningful gap for a meta-tool that could mislead an agent into thinking it invokes the target 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?
A single compact sentence with no filler, front-loading the two outputs (schema and notes). It is efficient, though slightly terse given the meta nature of the tool.
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 introspection tool with no annotations and no output schema, the description covers the minimum: what it returns and that it takes a name. It omits the crucial clarification that it describes a tool rather than executing it, which the sibling-heavy context makes 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 100% and the single 'tool' parameter is fully documented in the schema (name as in tools/list). The description adds only the requirement that the name match, which is baseline-level value given the schema already does the heavy lifting.
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 tool returns the full input schema and notes for a named tool, which is a recognizable meta/introspection purpose. However, it does not distinguish itself from the similar meta-tool api_search in the sibling list, leaving ambiguity about when introspection-by-name is preferred over search.
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 api_search or vs reading the parent tool's own schema directly. The 'по имени' phrase implies it requires a known tool name, but that constraint is not framed as a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_searchA
Поиск инструментов Remnawave API по подстроке в имени, пути, описании или теге. Возвращает имя, метод, путь, описание.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Подстрока для поиска (регистронезависимо). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the matching fields and the four returned fields (name, method, path, description), which is genuinely useful. It does not state auth requirements, result limits, or pagination for a search endpoint.
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 search behavior is front-loaded and the return shape follows immediately. Nothing is padded.
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 compensates by naming the returned fields, and the single parameter is fully documented. Only the absence of any routing relative to sibling discovery tools keeps it short of 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 100%, so the baseline is 3, but the description adds real value by specifying that the query is matched against name, path, description and tag — information the schema's generic 'substring' wording does not convey.
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: searches Remnawave API tools by substring, and enumerates the searched fields (name, path, description, tag). An agent knows exactly what it does, though it never distinguishes itself from the similarly named sibling api_describe.
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 rather than stated — an agent can infer this is a discovery tool for locating other API endpoints, but the description gives no explicit when-to-use, when-not, or alternative (e.g. api_describe, api_status).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_statusB
Статус сервера: режим (ro/rw), базовый URL (хост, без секретов), число опубликованных инструментов, версия спеки, доступность панели (GET /api/system/health, только код ответа).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose useful traits: the base URL is returned 'without secrets' and the panel check reports 'only the response code' (GET /api/system/health). It still omits auth requirements and whether the health probe has a timeout or can fail the call, leaving meaningful gaps for an unannotated 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?
A single dense sentence with the key facts front-loaded and no filler. It is on the long side for a status tool, but every clause adds distinct 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?
With no output schema, the description appropriately enumerates the returned fields, which is exactly what an agent needs to interpret the response. Complexity is low, so little else is required; only the auth/prerequisite context 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 takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter-level detail is needed or 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 states a specific resource (server status) and enumerates exactly what it reports: mode ro/rw, base URL, published tool count, spec version, and panel availability. It is clear and self-contained, but it never names or contrasts with nearby siblings like auth_get_status, system_get_remnawave_health, or system_get_metadata, so an agent gets no explicit routing help.
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 statement of when to call this versus alternatives, nor any prerequisite (e.g., auth requirement). Usage is only inferable from the listed return fields, which is weak given several overlapping status/health siblings exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_tokens_create_api_tokenB
POST /api/tokens Create a new API token This endpoint is forbidden to use via "API-key". It can only be used with an admin JWT-token. Tags: API Tokens Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose an important behavioral trait: the admin-JWT-only auth requirement. It omits other behavior an agent needs — the confirm/preview gating, whether the secret is returned only once, and irreversibility — so it adds value but is incomplete.
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 purpose is front-loaded and the auth note is useful, but 'POST /api/tokens' duplicates the operation already conveyed by the name, and 'Tags: API Tokens Controller' is framework noise that earns no 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?
This is a mutation tool with no annotations and no output schema, so the description must carry the behavioral load. It covers auth but omits the confirm/preview semantics and, critically for a token tool, whether the generated token value is returned once and cannot be retrieved again.
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%, but the nested body properties (name, scopes, expiresInDays) and the confirm flag all carry their own schema descriptions, so the schema does most of the work. The description adds no parameter-level meaning, which is acceptable given the schema already documents the fields.
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: 'Create a new API token'. This clearly distinguishes it from the sibling read tools (api_tokens_get_api_tokens, api_tokens_get_scopes) and delete tool (api_tokens_delete_api_token). It does not explicitly name those siblings, so it stays just short of a 5.
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 one meaningful precondition — the endpoint cannot be used with an API-key and requires an admin JWT — which is genuinely useful routing context. However, it never states when to create a token vs. using existing ones, and does not reference the sibling token tools as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_tokens_delete_api_tokenB
DELETE /api/tokens/{uuid} Delete API token This endpoint is forbidden to use via "API-key". It can be used only with an admin JWT-token. Tags: API Tokens Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | UUID of the API token | |
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose the meaningful auth requirement (admin JWT only). It does not state that deletion is irreversible, what happens to the token's sessions, or the confirm/preview behavior, so the disclosure is partial.
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 short and front-loads the action and route, with the auth caveat following immediately. The trailing 'Tags: API Tokens Controller' line is controller metadata that does not earn its place, a minor blemish.
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, no-annotation, no-output-schema operation, the description covers the auth gate and the schema covers 'confirm', but it omits any warning about irreversibility or side effects. It is adequate but not complete 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 100%, so both 'uuid' and 'confirm' are already documented in the schema. The description adds no syntax or format detail beyond that, which is the expected baseline when the schema does the heavy lifting.
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 ('Delete API token') plus the exact route 'DELETE /api/tokens/{uuid}', which unambiguously separates it from siblings like api_tokens_create_api_token and api_tokens_get_api_tokens. It does not explicitly name those siblings, but the action is specific and self-identifying.
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 an important usage constraint: the endpoint is forbidden via API-key and requires an admin JWT-token. However, it offers no when-to-use vs when-not guidance relative to alternatives, and no prerequisites around the required 'confirm' preview step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_tokens_get_api_tokensA
GET /api/tokens Get all API tokens This endpoint is forbidden to use via "API-key". It can only be used with admin JWT-token. Tags: API Tokens Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the authentication requirement (admin JWT only, API-key forbidden), which is real behavioral context. It does not describe the return shape, ordering, or whether secrets/token values are masked, leaving some gaps for a zero-param read endpoint.
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 useful content (verb, resource, auth constraint) is front-loaded, but the raw OpenAPI dump includes a redundant path line and a trailing 'Tags: API Tokens Controller' that adds no decision-relevant 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 zero-parameter read endpoint with no output schema, the key gotcha — the admin-only JWT auth requirement — is disclosed. Nothing critical is missing, though pagination/return details are absent.
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 takes no parameters, so there is nothing to document and the baseline is 4. The description adds no parameter meaning, but none is 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?
States a specific verb (GET) and resource (all API tokens), so the agent knows exactly what it retrieves. It is distinguishable from siblings like api_tokens_create_api_token and api_tokens_delete_api_token by the 'Get all' phrasing, though it does not explicitly name those alternatives.
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 a hard usage constraint — it cannot be used with an API-key and requires an admin JWT-token — which is genuine context for selecting/invoking the tool. However, it offers no guidance on when to prefer this over siblings such as api_tokens_get_scopes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_tokens_get_scopesA
GET /api/tokens/scopes Get available API token scopes Returns the catalog of scopes that can be granted to an API token, grouped by resource. Forbidden via "API-key", admin JWT only. Tags: API Tokens Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a key behavioral trait: the endpoint is forbidden to API-key auth and requires an admin JWT. It also states the response is a catalog grouped by resource. It stops short of error semantics or rate limits, but the auth model is the critical disclosure here.
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 payload is short, but the leading 'GET /api/tokens/scopes' line merely restates the tool name and the trailing 'Tags: API Tokens Controller' is generator noise. The substantive sentence ('Returns the catalog of scopes...') is the only one that earns its place, and it sits third rather than first.
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 correctly describes the return (scope catalog grouped by resource) and the auth prerequisite. For a zero-parameter read tool this is close to complete, though error behavior for unauthorized callers is 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?
The tool takes zero parameters, so the baseline is 4. Nothing in the description contradicts or misstates 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+resource: retrieves the catalog of API token scopes, grouped by resource. This is clearly distinguishable from its siblings (create/delete/list tokens), which all operate on token instances rather than the scope catalog.
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 or named alternative, but the description implies its role (discovering what scopes a token can be granted) and supplies the operative access condition: 'Forbidden via "API-key", admin JWT only.' That condition is useful selection context even without a comparative statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_get_statusC
GET /api/auth/status Get the status of the authentication Tags: Auth Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The 'GET' verb hints at a read-only call, but the description never states whether authentication is required, what the status payload distinguishes (e.g., authenticated vs. anonymous vs. expired), or what happens on failure.
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?
Extremely short and front-loaded, which is good, but roughly a third of the text is an HTTP route echo and a 'Tags:' artifact that add no decision-relevant information for an agent. It is terse rather than economical.
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 annotations, no output schema, and no parameter schema, the description is the only source of truth, and it omits what the status value means and any auth prerequisite. For an auth-status endpoint that an agent may use to decide whether to log in, this is a real 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 tool takes zero parameters, so the schema carries no semantics to document and the baseline is 4. Nothing in the description conflicts with the empty 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 verb and resource ('Get the status of the authentication'), which is understandable, but it essentially restates the tool name and adds no differentiation from siblings such as auth_login, auth_register, or auth_passkey_authentication_verify. An agent cannot tell what 'authentication status' actually reports.
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 guidance on when this endpoint should be called versus the other auth_* tools, nor any prerequisite (e.g., whether a session/token is required first). The Tag fragment 'Auth Controller' is generator metadata, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_loginC
POST /api/auth/login Login as superadmin Tags: Auth Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it omits that this is a credential-submitting authentication call, what it returns (token/session?), and any security implications. The 'superadmin' scope is mentioned but its effect on returned privileges or permissions is not explained.
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?
Extremely short but that shortness is under-specification rather than concision. The route line and 'Tags: Auth Controller' are boilerplate that consume the entire description without earning their 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?
No annotations, no output schema, nested required body, and a confirm-preview mechanism that is crucial to correct invocation. The description says nothing about the confirm flow or the login result, leaving a login tool materially under-documented.
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%: the nested body's username/password are documented in the schema, but the top-level 'confirm' parameter's preview/confirmation behavior is invisible in the description. For a login tool, the description should at least say credentials go in the body; it does not compensate for the 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?
States a verb+resource ('Login as superadmin') but is generic boilerplate generated from an OpenAPI route; it does not distinguish itself from sibling auth tools like auth_register or auth_passkey_authentication_verify beyond the superadmin note. The route path adds little for an agent choosing between auth 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?
No indication of when to prefer this login over other auth paths (auth_oauth2_authorize, auth_passkey_authentication_options/verify, auth_register), nor prerequisites. The significance of 'superadmin' login is left unexplained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_oauth2_authorizeC
POST /api/auth/oauth2/authorize Initiate OAuth2 authorization Tags: Auth Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but adds essentially nothing beyond the HTTP route and tag. It does not mention that this likely returns an authorization URL/redirect, what permissions or state are required, or any side effects; the only behavioral hint (the confirm preview mechanism) lives in the schema, not the description.
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 text is short and front-loaded with the route, but it is essentially boilerplate ('POST /api/auth/oauth2/authorize', 'Tags: Auth Controller') that conveys little semantic value. It is concise without being wasteful, yet barely any sentence earns its place as guidance.
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 stateful OAuth2 initiation endpoint with a nested body and no output schema, the description omits what the call returns (e.g., a redirect/auth URL), how it interacts with the callback tool, and what the provider choice implies. It is too thin to let an agent call it correctly with confidence.
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% and the description explains neither the provider enum values nor the nested body structure. The only documented parameter (confirm) is described in the schema itself, so the description adds no meaning beyond structured fields.
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 recognizable verb+resource ('Initiate OAuth2 authorization') and exposes the HTTP route, so the general purpose is understandable. However, it does not distinguish this from close siblings such as auth_oauth2_callback or auth_login, and the 'Initiate' step is not explained beyond the route line.
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 auth_login, auth_register, or auth_oauth2_callback, and no prerequisites or context are given. An agent must infer the place of this endpoint in the OAuth2 flow entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_oauth2_callbackC
POST /api/auth/oauth2/callback Callback from OAuth2 Tags: Auth Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no statement about side effects (session/token issuance), state validation, idempotency, or auth requirements. Only the bare POST method hints at mutation.
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 very short and front-loads the method/path, but the 'Tags: Auth Controller' line is generator noise that adds no value. Efficiency comes from omission rather than deliberate editing.
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 OAuth2 callback with a nested required body, no output schema, and no annotations, the description leaves critical questions unanswered (what it returns, whether it establishes a session, what state is validated). It is not sufficient 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 coverage is only 50%: the confirm flag is documented in the schema, but code, state, and provider in the nested body object are undocumented. The description adds no parameter meaning whatsoever, so it fails to compensate for the coverage gap on a nested request body.
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 reads 'POST /api/auth/oauth2/callback' plus 'Callback from OAuth2', which essentially restates the tool name rather than explaining what the endpoint does (e.g. exchanges the OAuth2 code for a session/token). It gives the HTTP method and path, but no functional verb that distinguishes it from the sibling auth_oauth2_authorize.
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 call this versus auth_oauth2_authorize or auth_login, no mention that it is the redirect target of the OAuth2 flow, and no exclusions. An agent must infer usage entirely from the endpoint name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_passkey_authentication_optionsC
GET /api/auth/passkey/authentication/options Get the authentication options for passkey Tags: Auth Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says nothing about whether this requires an existing session, returns a challenge, or is a read-only step in a multi-step flow; for an auth endpoint with zero annotation coverage this is a meaningful gap in behavioral disclosure.
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 meaningful sentence is front-loaded, but the description is cluttered with the raw route string and a 'Tags:' line that add no value to an agent. It's short but not efficient.
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 authentication endpoint with no annotations and no output schema, an agent would need to know this returns a challenge/options payload and that it precedes verify. None of that flow context is provided, so the definition is not complete enough for reliable 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?
There are zero parameters, so the schema fully covers the input surface and the baseline is 4. The description adds nothing further needed, and none is required.
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 (Get) and resource (authentication options for passkey), and the HTTP path/verb anchors it to a concrete endpoint. It's slightly obscured by the raw route and 'Tags: Auth Controller' boilerplate, but the resource is identifiable and distinct from siblings like auth_passkey_authentication_verify.
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 guidance on when to use this versus auth_passkey_authentication_verify or auth_login. The passkey flow context (this is the first step before verify) is left entirely to inference, so an agent has no explicit routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_passkey_authentication_verifyC
POST /api/auth/passkey/authentication/verify Verify the authentication for passkey Tags: Auth Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses nothing about side effects, session/token issuance on success, failure behavior, or authentication requirements beyond the word 'Verify'. The only behavioral hint (the 'confirm' parameter's non-GET preview behavior) comes from the schema, not the description.
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 text is short but padded with non-earning content: the HTTP method/path echo and 'Tags: Auth Controller' are mechanical filler that do not help an agent invoke the tool. What little remains is not front-loaded with the operationally useful 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 two-step passkey authentication flow with a nested WebAuthn response object, no output schema, and no annotations, the description leaves the agent without enough context to call it correctly. It neither explains the expected credential/response shape nor the sequence relative to its 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 only 50% and the critical nested 'body'/'response' parameter is entirely undocumented (no type or description) in both schema and text. The description adds zero parameter meaning, so it fails to compensate 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 recognizable verb and resource ('Verify the authentication for passkey'), so an agent can tell roughly what it does. However, it does not differentiate from closely-related siblings such as auth_passkey_authentication_options or passkey_passkey_registration_verify, and the leading 'POST /api/auth/passkey/authentication/verify' line is mechanical path echo rather than added meaning.
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 indication of when this tool should be invoked versus the options-generation or registration siblings, nor any stated precondition (e.g., that it must follow a prior authentication-options call). Usage is only weakly implied by the verb 'Verify'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_registerC
POST /api/auth/register Register as superadmin Tags: Auth Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that this creates a superadmin-level account (a privileged mutation), whether it requires prior authentication, rate limits, or that the confirm parameter must be set to actually execute rather than preview. The 'superadmin' hint is the only behavioral signal.
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 text is short but poorly structured: it front-loads a raw HTTP endpoint and a controller tag, both of which are low-value for an agent choosing a tool. Only 'Register as superadmin' carries real meaning, and the rest is filler that does not help the agent decide or invoke correctly.
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?
This is a privileged mutation tool with nested body parameters, a non-obvious confirm gate, and no annotations or output schema. The description fails to explain the superadmin creation implications, the confirm preview behavior (critical for correct invocation), or any auth/permission requirements. It is inadequate for the tool's 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 coverage is 50%; the schema documents username and confirm (with a detailed Russian description of the preview/confirm mechanism), but the password field only has a regex pattern, not a description. The description adds nothing about parameters, so it does not compensate for the coverage gap. Baseline 3 is appropriate given half the parameters are self-documenting 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 and resource ('Register as superadmin') plus the HTTP endpoint POST /api/auth/register. This clearly distinguishes it from sibling auth tools like auth_login and auth_oauth2_authorize, though the raw HTTP line and 'Tags: Auth Controller' add noise rather than clarity.
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 a registration context but provides no explicit when-to-use or when-not-to-use guidance versus alternatives like auth_login or auth_get_status. The 'Register as superadmin' phrasing hints at a privileged operation, but there is no stated prerequisite or condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bandwidth_stats_nodes_get_node_usageC
POST /api/bandwidth-stats/nodes/usage Get users exceeding a traffic threshold on the given nodes for a period Returns users whose total usage over the period on the given nodes is >= minTotalBytes. Underlying usage data is flushed to the database roughly every 2 minutes. Tags: Bandwidth Stats Controller Пагинация через query-параметры: start.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (YYYY-MM-DD) | |
| body | Yes | ||
| start | Yes | Start date (YYYY-MM-DD) | |
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). | |
| minTotalBytes | No | Only include users whose total usage over the period is >= this (bytes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It usefully discloses data-freshness behavior ('usage data is flushed to the database roughly every 2 minutes') and the threshold semantics, but it never clarifies that this POST is effectively a read operation, nor mentions auth or rate-limit 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 core sentence is front-loaded and useful, but the definition includes raw HTTP method/path, a 'Tags:' line, and a stray Russian pagination line that do not earn their place. Size is acceptable but structure is noisy.
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 and 5 parameters (nested body object), the description covers purpose and data freshness but omits usage guidance, response shape, and correctly-specified pagination. It is adequate to attempt a call but leaves meaningful 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 coverage is 80%, so the baseline is 3, but the description actively introduces confusion: it says 'Пагинация через query-параметры: start', yet the schema defines 'start' as a date bound, not a pagination cursor, and there is no other pagination parameter. This contradiction with the schema undermines rather than clarifies 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 gives a specific verb and resource: 'Get users exceeding a traffic threshold on the given nodes for a period', and clarifies the exact predicate ('total usage ... >= minTotalBytes'). This is much clearer than a bare endpoint, but it does not distinguish itself from close siblings like bandwidth_stats_nodes_get_stats_node_users_usage or bandwidth_stats_users_get_stats_nodes_usage.
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 when-to-use guidance and no alternative named, despite several near-identical bandwidth-stats siblings. The trailing Russian line about pagination does not tell the agent when this tool is the right choice, so usage context is essentially absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bandwidth_stats_nodes_get_stats_nodes_users_usageC
POST /api/bandwidth-stats/nodes/users Get Nodes Users Usage by Nodes UUIDs Tags: Bandwidth Stats Controller Пагинация через query-параметры: start.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (YYYY-MM-DD) | |
| body | Yes | ||
| start | Yes | Start date (YYYY-MM-DD) | |
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). | |
| topUsersLimit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It reveals the HTTP verb and path (POST) and a pagination note about 'start', but never explains the confirmation/preview behavior of this non-GET operation, rate limits, or auth needs. The safety-relevant behavior is hidden in the schema, not the description.
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 short, but front-loaded with an HTTP method/path and a 'Tags:' dump rather than the tool's purpose. The trailing Russian pagination sentence is oddly placed and low-value, so structure is poor even though word count is low.
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, nested-body POST tool with no annotations and no output schema, the description is inadequate. It omits the confirm requirement, the body structure (nodesUuids), date-range semantics, and return shape, leaving the agent under-informed.
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 60% and topUsersLimit has no description anywhere. The description only mentions pagination via 'start', which actually conflicts with the schema's date-typed start parameter, adding confusion rather than clarity for end, confirm, and topUsersLimit.
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 line 'Get Nodes Users Usage by Nodes UUIDs' largely restates the tool name and offers no specificity beyond 'by Nodes UUIDs'. It is nearly indistinguishable from siblings like bandwidth_stats_nodes_get_node_usage and bandwidth_stats_nodes_get_stats_node_users_usage, and an agent cannot tell which stat this returns.
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 the many near-identical bandwidth-stats siblings. No prerequisites, no mention of the required confirm flag, nothing that would 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.
bandwidth_stats_nodes_get_stats_node_users_usageC
GET /api/bandwidth-stats/nodes/{uuid}/users Get Node Users Usage by Node UUID Tags: Bandwidth Stats Controller Пагинация через query-параметры: start.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (YYYY-MM-DD) | |
| uuid | Yes | ||
| start | Yes | Start date (YYYY-MM-DD) | |
| topUsersLimit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses only the HTTP method/path and a controller tag, saying nothing about auth requirements, rate limits, result size, or the meaning of the returned data. Worse, the pagination claim ('Пагинация через query-параметры: start') is likely inaccurate since 'start' is a required date bound, so the one behavioral hint it gives may mislead.
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 text is short and front-loads the core operation, but it spends half its length on low-value boilerplate (raw route, 'Tags: Bandwidth Stats Controller') and includes the misleading pagination sentence instead of useful 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?
With 4 parameters (3 required), no annotations, and no output schema, the description is the only source of behavioral context and it is insufficient: it never explains what usage dimensions are returned, how the date range is applied, or what topUsersLimit controls.
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%: 'start', 'end', and 'uuid' are documented in the schema, but 'topUsersLimit' (default 100, minimum 1) is undocumented anywhere. The description adds no clarifying meaning for any parameter and actively mislabels 'start' as a pagination parameter rather than a date range bound.
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 verb and resource ('Get Node Users Usage by Node UUID'), but it is largely a restatement of the tool name and raw HTTP path. It does not explain what 'users usage' actually returns (per-user traffic? per-user connection counts?) nor differentiate it from the near-identical siblings bandwidth_stats_nodes_get_node_usage and bandwidth_stats_nodes_get_stats_nodes_users_usage.
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 when-to-use or when-not-to-use guidance and no mention of alternatives despite three closely-named sibling bandwidth-stats tools. The only usage note is the Russian sentence claiming pagination via 'start', which is not an exclusion or selection criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bandwidth_stats_users_get_stats_nodes_usageC
GET /api/bandwidth-stats/users/{userId} Get User Usage by Range Tags: Bandwidth Stats Controller Пагинация через query-параметры: start.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (YYYY-MM-DD) | |
| start | Yes | Start date (YYYY-MM-DD) | |
| userId | Yes | ID of the user | |
| topNodesLimit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it delivers little. The GET route implies a read operation, and the trailing note hints at pagination, but there is no disclosure of auth requirements, rate limits, whether the range is inclusive, or what happens for out-of-range dates. Worse, the pagination note is attached to 'start', which the schema defines as a required start date, so the behavioral hint is likely wrong.
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 text is short but poorly front-loaded for an agent: it leads with a raw HTTP route, then a purpose line, then a tag list, then a Russian pagination fragment. The tag line and the pagination fragment do not earn their place and the fragment is confusing rather than informative.
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 4-parameter tool with no annotations and no output schema, the description is not complete enough. It never explains the topNodesLimit parameter, never clarifies the range semantics, and its one parameter reference is misleading. The only compensating detail is the route, which at least confirms this is a per-user read 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 75% (end, start, userId documented; topNodesLimit has no description). The description only mentions 'start', and does so in a misleading way, framing it as a pagination query parameter when it is actually a required date bound. It adds no correct meaning beyond the schema and omits the undocumented topNodesLimit entirely.
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 line 'Get User Usage by Range' gives a specific verb+resource, and the route '/api/bandwidth-stats/users/{userId}' confirms the scope is per-user bandwidth usage over a date range. However, the tool name mentions 'stats_nodes_usage' while the description says user usage, creating ambiguity, and nothing distinguishes it from siblings like bandwidth_stats_nodes_get_stats_node_users_usage or internal_squad_stats_get_internal_squad_user_usage. The 'Tags: Bandwidth Stats Controller' line is noise that does not clarify purpose.
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 statement of when to use this tool versus the many similarly-named bandwidth-stats siblings. The only usage-flavored sentence is the Russian note about pagination via query parameters, which does not tell the agent when this tool is the right choice. The agent must infer selection purely from the route and name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_create_config_profileC
POST /api/config-profiles Create config profile Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The only signal is the raw 'POST /api/config-profiles' path, which implies a mutation, but the description never states that creation is persistent, whether it requires auth, or what the confirm-preview flow (documented only in the schema) actually does.
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 text is short but a large fraction is noise: the raw 'POST /api/config-profiles' line and the 'Tags: Config Profiles Controller' line add nothing an agent can act on. Only 'Create config profile' is substantive.
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 mutation tool with no annotations, no output schema, a nested required body, and a non-obvious confirm/preview mechanism, the description is far too thin. It omits return behavior, permission needs, and the confirmation workflow that the agent must understand 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% and the description adds no parameter meaning at all. It does not explain the required body (name/config), the name pattern/length constraints, or the confirm-preview semantics, leaving the nested-object payload largely undocumented in prose.
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 verb+resource combination ('Create config profile'), which is enough to distinguish it from the sibling read/update/delete config-profile tools. It does not, however, differentiate itself explicitly from those siblings or explain the scope of what is created.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as update_config_profile or reorder_config_profiles. The agent gets the operation name but nothing about context or conditions for invoking it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_delete_config_profile_by_uuidC
DELETE /api/config-profiles/{uuid} Delete config profile Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | UUID of the config profile | |
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the HTTP verb. For a destructive DELETE it omits whether the operation is reversible, what dependent resources are affected, permission requirements, and the fact that the schema's 'confirm' flag gates execution (without it only a preview is returned).
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 short and front-loaded, but the 'DELETE /api/config-profiles/{uuid}' line largely duplicates the tool name and the 'Tags: Config Profiles Controller' line is auto-generated filler that contributes no selection 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 destructive operation with no annotations and no output schema, the description is too thin. Most critically, it never mentions the confirm/preview behavior defined in the schema, which materially changes how an agent must invoke the 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 100%, so both the uuid and the confirm parameters are already documented in the schema. The description adds no additional meaning about either parameter, which is acceptable given the high coverage, so the baseline of 3 applies.
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 verb and resource ('Delete config profile') plus the raw REST endpoint, so the basic action is understandable. However, it is essentially a restatement of the tool name and adds no differentiation from siblings like config_profile_update_config_profile or config_profile_get_config_profile_by_uuid.
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 when-to-use guidance, no prerequisites, and no mention of alternatives. An agent gets no signal about when deletion is appropriate versus updating or retrieving the profile, nor any warning about consequences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_get_all_inboundsB
GET /api/config-profiles/inbounds Get all inbounds from all config profiles Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses essentially nothing: no pagination behavior, no auth/permission requirements, no indication of how results are grouped by profile, and no volume expectations for an endpoint that fans out across all profiles. The only behavioral hint is the 'GET' verb embedded in the raw route string.
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 core sentence is short and front-loaded, which is good, but the raw 'GET /api/config-profiles/inbounds' line restates the tool name as a route, and the 'Tags: Config Profiles Controller' line is generator boilerplate that adds no decision-relevant information to an agent.
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 endpoint this is minimally adequate, but with no output schema and no annotations the description should at least describe the shape or grouping of the returned inbounds (e.g., whether they are flat or keyed by config profile). It is complete enough to call, not complete enough to predict the response.
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 takes zero parameters, so there is no parameter semantics to document and the baseline of 4 applies. Nothing in the description is needed to call it correctly with respect to arguments.
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 gives a clear verb+resource ('Get all inbounds') and a scope qualifier ('from all config profiles') that implicitly separates it from the per-profile sibling config_profile_get_inbounds_by_profile_uuid. It does not name that sibling, so the differentiation is inferred rather than 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 'from all config profiles' scope implies this is the aggregate variant to use when you want every profile's inbounds rather than one profile's, which is usable guidance. However, it never names the alternative tool or states when NOT to use this one, leaving the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_get_computed_config_profile_by_uuidC
GET /api/config-profiles/{uuid}/computed-config Get computed config profile by uuid Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description adds almost nothing beyond the HTTP method 'GET', which weakly implies a read-only operation. It does not explain what 'computed' means, whether the result is derived/rendered at request time, auth requirements, or whether any caching or rate limits apply.
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?
Short, but the raw 'GET /api/...' line and the 'Get computed config profile by uuid' sentence are redundant restatements of the same fact, and the 'Tags: Config Profiles Controller' trailer is internal noise rather than agent-facing guidance.
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 one parameter, no annotations, and no output schema, the description is the only source of context, yet it omits any description of the returned computed configuration or error behavior. It is barely sufficient for an agent to call the tool blindly by uuid.
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 carry parameter meaning. It only shows uuid as a path segment; the uuid regex pattern and format live entirely in the schema. No explanation of what the uuid identifies or what happens if it is unknown.
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 ('Get computed config profile by uuid') and the HTTP route confirms the operation. It is clear what the tool does, but it never contrasts itself with the closely named sibling config_profile_get_config_profile_by_uuid, so an agent must infer the 'computed' distinction on its own.
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 when-to-use guidance, no prerequisites, and no mention of alternatives, even though config_profile_get_config_profile_by_uuid is an obvious neighboring read tool. Usage is only implied by the endpoint name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_get_config_profile_by_uuidC
GET /api/config-profiles/{uuid} Get config profile by uuid Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden, and it discloses almost nothing: no auth requirements, no error behavior for unknown UUIDs, no note that this is a read-only operation. It is a bare restatement of the route.
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?
Very short and front-loaded, but the content is essentially redundant: the route line, the sentence, and the 'Tags' footer repeat each other. Concise but not economical.
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 tool with no annotations and no output schema, the description should at least hint at what a config profile contains or what errors are possible. None of that is present, leaving the agent with only the route.
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?
Only one parameter (uuid) with 0% schema description coverage. The name 'uuid' and its format/pattern make the meaning self-evident, so the description's '{uuid}' route placeholder adds nothing but the parameter is also hard to misinterpret. Baseline for a trivial single-param 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 states a verb+resource ('Get config profile by uuid'), and the HTTP method/route line reinforces it, but it is a near-tautology of the tool name and offers no differentiation from siblings like config_profile_get_computed_config_profile_by_uuid or config_profile_get_config_profiles.
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 when-to-use guidance, no mention of alternatives, and no indication of when the plain profile is preferable to the computed variant or the list endpoint. The agent must infer all routing decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_get_config_profilesC
GET /api/config-profiles Get config profiles Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses essentially nothing beyond the HTTP method — no auth requirements, no pagination, no volume or ordering characteristics of the returned profile list. The URL string is the only concrete behavioral hint.
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 very short, which is good, but the second half is auto-generated boilerplate ('Tags: Config Profiles Controller') that conveys no information to an agent. The one useful line is front-loaded, so structure is acceptable but padded.
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, no annotations, and no parameters, the description is the only source of information, and it omits anything an agent would need — return shape, whether the list is filtered or paginated, and how it relates to the by-uuid and tags variants. It is not adequate for a listing endpoint in this dense tool family.
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 takes zero parameters, so per the baseline there is no parameter semantics to explain and nothing for the description to compensate for. The empty schema is unambiguous.
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 verb and resource ('Get config profiles'), so the basic purpose is legible. However, it does nothing to distinguish itself from closely named siblings such as config_profile_get_config_profile_by_uuid, config_profile_get_tags, or config_profile_get_computed_config_profile_by_uuid — an agent cannot tell from the text why it would pick this list endpoint over 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?
There is no when-to-use guidance, no statement of what the returned set represents, and no mention of alternatives among the large config_profile sibling group. The HTTP verb 'GET' is the only implicit usage signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_get_inbounds_by_profile_uuidC
GET /api/config-profiles/{uuid}/inbounds Get inbounds by profile uuid Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | UUID of the config profile |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden, yet it only reveals that this is a GET (implying a safe read). It says nothing about authentication/scope requirements, whether results are paginated or cached, or what the payload contains.
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 operation is stated in one short line, which is efficient, but the trailing 'Tags: Config Profiles Controller' is backend grouping metadata that adds no decision value for an agent. Front-loading is fine; one of the three lines does not earn 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?
With no annotations, no output schema, and no clarification of what an 'inbound' is in this domain, the definition is thin for an agent that must decide whether to call it and how to interpret results. Only the required input is reasonably covered.
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 single uuid parameter is fully documented in the schema with a format and pattern. The description adds only the phrase 'profile uuid', which matches the schema and contributes no extra meaning, so the baseline 3 applies.
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 verb+resource ('Get inbounds') scoped by an identifier ('by profile uuid'), and the raw route GET /api/config-profiles/{uuid}/inbounds reinforces it. It does not, however, distinguish this from sibling config_profile_get_all_inbounds or explain how the two differ.
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 when-to-use guidance and no mention of alternatives such as config_profile_get_all_inbounds or config_profile_get_computed_config_profile_by_uuid. The agent must infer the selection criteria from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_get_tagsB
GET /api/config-profiles/tags Get tags of Config Profiles Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The 'GET' prefix and 'Get' verb do convey that this is a read operation, but nothing is said about what the tags represent, whether the list can be empty, or the response shape. For a zero-annotation tool this is thin.
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 short and front-loaded, but the raw 'GET /api/config-profiles/tags' line duplicates the following sentence and the 'Tags: Config Profiles Controller' line is autogenerated metadata of little value to an agent.
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 no-param read with no output schema, the description states what is returned at a high level, but it does not describe the return format (e.g. list of tag strings) that an agent would otherwise get from an output schema.
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 takes no parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify beyond what the empty schema already conveys.
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 (Get) and resource (tags of Config Profiles), so an agent can distinguish it from set_tags, get_config_profiles, and other *_get_tags siblings by the 'Config Profiles' scope. It is clear but offers no explicit sibling differentiation beyond the resource name.
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 guidance on when to use this versus config_profile_set_tags or the many other tag-fetching endpoints. There are no prerequisites, exclusions, or named alternatives, leaving usage entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_reorder_config_profilesC
POST /api/config-profiles/actions/reorder Reorder config profiles Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says 'reorder' (implying a mutation of ordering state) but does not disclose whether items must be exhaustive, whether partial lists are allowed, whether viewPosition values must be unique/contiguous, or that reordering affects downstream config resolution. The confirm/dry-run behavior is only documented in the schema, not here.
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?
Very short, but front-loads the raw endpoint and a 'Tags: Config Profiles Controller' line that consume space without helping selection. The actual purpose sentence is buried behind protocol noise.
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?
A nested-object mutation with no annotations and no output schema requires more disclosure: ordering semantics, required payload shape, and effect on existing profile order are all missing. The confirm semantics are only in the schema, leaving the description inadequate 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 50%: the nested body.items[].uuid and viewPosition have no descriptions at all, and the description adds no meaning beyond their types. Only the confirm parameter is documented, and that documentation lives in the schema rather than the description, so nothing is compensated for the undocumented half.
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: 'Reorder config profiles'. Clear enough for an agent to understand the operation, but it offers no differentiation from the many sibling reorder tools (nodes_reorder_nodes, hosts_reorder_hosts, internal_squad_reorder_internal_squads, etc.). The HTTP method/path prefix adds nothing to purpose.
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 guidance on when to use this versus config_profile_update_config_profile or the other reorder tools. No prerequisites, no mention of whether the payload must contain the full ordered set of profiles. The agent must infer everything.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_set_tagsC
PATCH /api/config-profiles/tags Set tags of Config Profile Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It does not disclose that this is a mutation that presumably replaces the existing tag set, nor mention permissions, idempotency, or the confirm/preview behavior which is only captured in the schema's Russian confirm field.
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 definition is short and front-loads the operation, but it includes low-value noise: the raw 'PATCH /api/config-profiles/tags' path and the 'Tags: Config Profiles Controller' controller label, which don't help an agent invoke the tool correctly.
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 mutation tool with no annotations and no output schema, the description is under-specified. It omits whether tags are replaced or merged, what a successful response contains, and any error/confirmation expectations beyond the schema field.
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 documented in the schema itself (including its preview semantics), and the nested body structure is typed. The description adds no meaning beyond the structured fields, so the baseline 3 applies.
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 ('Set tags of Config Profile'), which is clearer than a bare name restatement. However, it does not differentiate itself from the sibling config_profile_get_tags or explain the scope 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?
No when-to-use guidance is provided. It does not say when to call this versus reading tags, nor any prerequisites such as requiring the profile to exist or a prior lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profile_update_config_profileC
PATCH /api/config-profiles Update Core Config in specific config profile Tags: Config Profiles Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies mutation via PATCH but says nothing about permissions, reversibility, partial-merge vs replace semantics of a PATCH, or how the nested config object is treated. The only behavioral hint (preview-without-confirm) lives in the schema's confirm field, not the description, so structured data is doing all the work here.
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?
Short, but two of the three lines are low-value metadata: a raw REST path ("PATCH /api/config-profiles") and "Tags: Config Profiles Controller". The one useful sentence is buried in the middle rather than 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 mutation tool with no annotations, no output schema, a nested body object, and only 50% parameter coverage, the description is far too thin. It omits the required uuid, the meaning of the nested config payload, and any notion of return or failure behavior.
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%, with the confirm parameter fully documented in the schema and the body (name, uuid, config) left undocumented. The description adds no parameter meaning beyond the schema — it does not clarify what goes in "config" or how it merges, so it fails to compensate 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?
"Update Core Config in specific config profile" gives a recognizable verb (update) and resource (config profile), so the general purpose is inferable. However, "Core Config" is undefined jargon, and the description does nothing to distinguish this from siblings like config_profile_set_tags, config_profile_reorder_config_profiles, or subscription_page_config_update_config.
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 indication of when to use this tool versus alternatives, no prerequisites (e.g., a valid existing profile uuid), and no mention of what happens on success. An agent must guess from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_connections_by_nodeC
POST /api/connections/by-node/{nodeUuid} Request Connections for Node Tags: Connections Controller
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). | |
| nodeUuid | Yes | Node UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only reveals the HTTP verb (POST) and route; it says nothing about permissions, rate limits, side effects, or that the operation may be asynchronous with results fetched via a separate `_result` tool. The confirm/preview semantics live in the schema, not the description, so the description adds little 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 short and front-loads the HTTP route, but it also carries boilerplate that does not earn its place ('Tags: Connections Controller') and a raw path/verb that adds little decision value. It is brief without being high-signal.
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?
This is a request-initiating tool with no annotations and no output schema, yet the description does not explain what a 'connection' is, what the call returns (e.g. a job or identifier), or how it relates to the `_result` sibling. For a tool with this complexity and no structured support, the description is under-specified.
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%, with `nodeUuid` documented as a UUID and `confirm` documented in detail (including the preview/no-send behavior). The description adds no parameter meaning beyond the schema, which is the expected baseline when the schema fully documents both 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 verb-plus-resource pair ('Request Connections for Node') and exposes the underlying route, so an agent can tell roughly what it does. However, it reads as an auto-generated HTTP stub and gives no signal that distinguishes it from the very similar sibling `connections_connections_by_node_result`, which likely returns the outcome of this same request. Purpose is stated but not 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?
There is no when-to-use, when-not-to-use, or alternative-routing guidance anywhere in the description. Nothing tells the agent that this issues a request while `connections_connections_by_node_result` presumably retrieves the resulting data, nor what conditions make this the right call. Guidance is effectively absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_connections_by_node_resultC
GET /api/connections/by-node/{jobId} Get Connections for Node by Job ID Tags: Connections Controller
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: not whether the job must be complete before calling, not what happens if the jobId is unknown or the job is still running, not the return shape, and not any auth or rate-limit context. Only the jobId parameter name hints at asynchronous 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 text is short and front-loads the verb and resource, but a raw HTTP route ("/api/connections/by-node/{jobId}") and the "Tags: Connections Controller" line are noise that consumes most of the description without helping an agent.
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 job-result retrieval endpoint with no annotations, no output schema, and an undocumented required parameter, the description should explain the async workflow and what the result contains. Instead it repeats the route, leaving the agent without enough to invoke it confidently or interpret its output.
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 jobId parameter, and the description adds no meaning beyond echoing the parameter name ("by Job ID"). It does not say where the jobId comes from, whether it is a UUID, or how long it remains valid, so the schema gap is left unfilled.
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 verb and resource ("Get Connections for Node by Job ID") and the required jobId implies result retrieval, but the text is essentially a restatement of the raw HTTP route with controller/tag boilerplate. It does not differentiate this result-fetching tool from the sibling connections_connections_by_node that presumably launches the job, so an agent must infer the pairing from the name alone.
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 call this versus connections_connections_by_node or connections_connections_by_user_result. The async job workflow (start with the sibling, then poll this with the returned jobId) is never stated, and there are no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_connections_by_userD
POST /api/connections/by-user/{userId} Request Connections for User Tags: Connections Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only discloses the HTTP verb and path. It does not explain the non-GET 'confirm' preview flow, whether this is a read despite being a POST, or any authorization requirement.
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 text is short but is a raw metadata dump (method, path, 'Tags: Connections Controller') rather than a useful sentence. It is under-specified rather than concise, and the tag line is noise.
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 no annotations, an undocumented required parameter, and no output schema, the description leaves everything an agent needs unanswered: return shape, why a POST reads data, and the confirm behavior. It is effectively incomplete.
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%: userId has no description, and while the path template hints userId is a route parameter, the description says nothing about it. It also ignores the confirm parameter, whose preview semantics (documented only in the schema) are central to correct invocation.
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 phrase 'Request Connections for User' essentially restates the tool name 'connections_connections_by_user' and adds nothing about what 'connections' means (active sessions, IPs, etc.). It provides no differentiation from the sibling connections_connections_by_user_result, so an agent cannot tell them apart from the text alone.
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 when-to-use guidance, no prerequisites, and no mention of the closely related siblings (connections_connections_by_user_result, connections_connections_by_node). The description is raw endpoint metadata with zero routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_connections_by_user_resultC
GET /api/connections/by-user/{jobId} Get Connections for User by Job ID Tags: Connections Controller
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden, and it discloses almost nothing. An agent cannot tell whether the job must be complete, what happens for an unknown/expired jobId, whether this requires auth, or whether results are transient.
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 body is short and front-loads the endpoint, but it wastes lines on a raw HTTP route and a 'Tags: Connections Controller' artifact that give the agent no actionable 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 tool that appears to be the result-fetch half of a job pair, with no output schema, no annotations, and an undocumented parameter, the description is under-specified. It omits the job lifecycle, return shape, and error behavior an agent needs 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 description coverage is 0%, so the description would need to compensate for the single required parameter. It only echoes jobId as a path placeholder ({jobId}); it never explains what a job ID is, its format, or where the agent obtains 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 names a verb (Get) and resource (Connections for User) and exposes the endpoint path, so the literal purpose is discernible. However, it never distincts itself from the sibling 'connections_connections_by_user' – the 'result' suffix and jobId parameter strongly imply it retrieves the output of an async job, but that is left for the agent to infer.
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 statement of when to call this versus connections_connections_by_user or connections_connections_by_node_result, nor any prerequisite (e.g. that a job must first be started). Usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_drop_connectionsC
POST /api/connections/drop Drop Connections for Users or IPs Tags: Connections Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, yet it discloses nothing about permissions, irreversibility, or the confirm-gate that determines whether the request is actually sent. "Drop" implies a mutating, destructive action, but the description never confirms or qualifies 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?
It is short and front-loaded, but the leading HTTP route and trailing "Tags: Connections Controller" are boilerplate that costs space without adding agent-relevant meaning. The one substantive sentence is buried under that noise.
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 two-parameter tool with no annotations and no output schema, the description should cover what happens on execution and the confirm behavior. Instead the confirm semantics live only in a Russian-language schema description, and the tool description explains nothing about outcomes or auth.
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%, and the nested union members (dropBy, targetNodes) already carry their own descriptions, so the schema does much of the work. The description's "for Users or IPs" loosely maps to the dropBy union but adds no syntax, defaults, or clarity about the confirm parameter.
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 line "Drop Connections for Users or IPs" gives a verb and resource, but "drop" is never explained (terminate active sessions vs. remove records) and the definition is padded with a raw REST route and tag metadata. It does not distinguish this tool from the read-only connections siblings (connections_by_user, connections_by_node).
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 statement of when to use this tool versus alternatives, no prerequisites, and no mention that a confirmation flag exists. The only hint of scope is the phrase "for Users or IPs," which implies targeting but gives no usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_geocheck_by_nodeA
POST /api/connections/geocheck/{nodeUuid} Request Geocheck for Node Queues a geocheck on the node and returns a job ID. Poll "Get Geocheck for Node by Job ID" for the result, the node may take up to a minute to answer. Tags: Connections Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). | |
| nodeUuid | Yes | Node UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the key trait: this is an async operation that returns a job ID rather than a result, plus the up-to-a-minute latency. However, it omits that this is a POST mutation, that the confirm parameter gates actual execution (preview otherwise), and any 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 operative content is two tight sentences, but the raw endpoint line 'POST /api/connections/geocheck/{nodeUuid}' and the 'Tags: Connections Controller' trailer are generated filler that pushes the real purpose behind noise instead of front-loading it.
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 async, no-output-schema tool, the description covers the critical gotcha (returns a job ID, must poll a sibling, up to a minute delay). It lacks detail on what a geocheck actually does and the confirm-preview behavior, but the information an agent needs to call it correctly is essentially present.
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%, so most parameters are already documented in the schema (nodeUuid, body.ip, body.interface, and the confirm flag with a detailed Russian-language explanation). The description adds only the implied role of nodeUuid via the URL template and no meaning for the body fields, so it neither compensates for nor extends 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 and resource ('Queues a geocheck on the node') and explicitly frames the tool as the queueing half of an async pair, naming the sibling result tool 'Get Geocheck for Node by Job ID'. An agent can tell it apart from connections_geocheck_by_node_result without opening either 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?
Explicitly routes the agent to the follow-up tool for the result and gives a timing expectation ('the node may take up to a minute to answer'), which is exactly the when-to-use context for an async job tool. It stops short of stating when-not to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_geocheck_by_node_resultC
GET /api/connections/geocheck/{jobId} Get Geocheck for Node by Job ID Tags: Connections Controller
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. The 'GET' prefix hints at a read-only operation, but nothing is said about whether the job may still be running, whether polling is required, or what errors occur for an unknown jobId.
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?
Very short, but the body is just the raw HTTP path plus a restated title, and the trailing 'Tags: Connections Controller' line is generator noise that consumes space without informing an agent.
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 job-result retrieval tool with no output schema and no annotations, the description should at least sketch the returned geocheck payload or the job lifecycle; instead it leaves the agent with only an endpoint path.
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 jobId parameter. The description only repeats the term 'Job ID' (already in the name), adding no format details, sourcing guidance, or distinction between job identifiers of different endpoint families.
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 phrasing 'Get Geocheck for Node by Job ID' names a verb and resource, but it largely restates the tool name and does not distinguish this result-fetching endpoint from its sibling connections_geocheck_by_node, with which an agent could easily confuse it.
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 when-to-use guidance is given: it doesn't say this retrieves the outcome of a previously-started geocheck job, nor when to prefer connections_geocheck_by_node or connections_connections_by_node_result instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_squad_add_users_to_external_squadC
POST /api/external-squads/{uuid}/bulk-actions/add-users Add all users to external squad Tags: External Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | UUID of the external squad | |
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals only that this is a POST bulk mutation via the raw HTTP line; it omits that the operation requires confirm:true (documented only in the schema), what the bulk action affects, whether it is reversible, and any permission 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?
It is short, but the content is largely raw scaffolding: the HTTP verb/path line and a 'Tags:' controller label are generated noise rather than useful front-loaded information. The one meaningful sentence is buried after the route string.
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 mutation tool with no annotations and no output schema, the description is too thin: it neither repeats the confirm/preview behavior nor explains the effect on the target squad. It lacks the safety and scope context an agent needs before invoking a bulk write.
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 the uuid and confirm parameters are already fully documented in the schema, and the description adds nothing beyond the path it repeats. Baseline 3 applies when the schema does the semantic work.
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 verb and resource ('Add all users to external squad'), which is clearer than a bare endpoint dump and does distinguish the external-squad family from internal-squad siblings by name. However, 'add all users' is ambiguous and arguably inconsistent with the tool name, which implies adding specific users; no user list exists in the schema, leaving it unclear what is actually being added.
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 versus external_squad_remove_users_from_external_squad or the internal-squad add tools, nor any prerequisites, idempotency notes, or mention of the required confirm flag. The only routing signal is the endpoint path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_squad_create_external_squadC
POST /api/external-squads Create external squad Tags: External Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden, yet it only restates the route and name. It does not say what a squad is, what permissions are required, whether the call is idempotent, or how duplicates are handled. The dry-run/confirm behavior appears only in the schema, not the description.
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 text is short and front-loaded with the route and action, which is efficient, but the 'Tags: External Squads Controller' line is framework noise that consumes part of an already thin description.
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 mutation tool with a nested required body, no annotations, and no output schema, this description is under-specified. An agent gets the endpoint but nothing about required permissions, side effects, or the confirm-preview workflow that governs whether the request is actually sent.
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 adds no parameter meaning at all. It does not explain the nested body shape, the name constraint (2-30 chars, allowed character pattern), or the confirm flag, leaving the nested-object semantics to the schema alone.
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 (Create) and resource (external squad) plus the underlying route POST /api/external-squads, so an agent knows exactly what the tool does. It does not, however, distinguish this from neighboring tools such as external_squad_update_external_squad or internal_squad_create_internal_squad.
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, no prerequisites, and no exclusions. The only signal is the raw HTTP verb/route, which the agent must interpret on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_squad_delete_external_squadC
DELETE /api/external-squads/{uuid} Delete external squad Tags: External Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | UUID of the external squad | |
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the HTTP method and route (which implies destructive mutation) but doesn't disclose what is destroyed, whether deletion is reversible, cascade effects on squad members, or permission requirements. The confirm gating appears only in the schema, not the description.
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?
Very short but wastes lines on redundant metadata: 'Delete external squad' restates the tool name, and 'Tags: External Squads Controller' is HTTP client boilerplate rather than useful agent-facing context. The route line is the only genuinely informative part.
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 deletion tool with no annotations and no output schema, the description is inadequate: no confirmation of irreversible effects, no cascade/member implications, no error or not-found behavior. The schema's confirm field hints at a safety flow but the description never explains 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?
Schema coverage is 100% – both the uuid and confirm parameters have descriptions in the schema, including the important confirm-preview behavior. The description adds no parameter meaning beyond what the schema already provides, so baseline 3 applies.
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 (Delete) and resource (external squad) plus the exact route DELETE /api/external-squads/{uuid}. Siblings like external_squad_get_external_squads and external_squad_update_external_squad are implicitly distinguished by the verb, though the description doesn't explicitly contrast 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?
No when-to-use guidance, prerequisites, or alternatives named. The confirm parameter implies a preview-then-confirm flow, but the tool description itself doesn't explain when to call this versus related tools like external_squad_remove_users_from_external_squad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_squad_get_external_squad_by_uuidC
GET /api/external-squads/{uuid} Get external squad by uuid Tags: External Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | UUID of the external squad |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only echoes the route signature. The HTTP verb implies a read, but there is no statement about authentication requirements, error behavior for unknown UUIDs, or whether the response is cached/partitioned.
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 short and front-loaded, but the trailing "Tags: External Squads Controller" is classifier noise with no value to an agent, and the raw route line duplicates information already conveyed by the 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 single-parameter GET with no output schema, the description is only barely sufficient — it confirms this returns one squad identified by UUID. It omits return-shape hints and failure modes, which an agent would need to plan around.
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 single uuid parameter is fully documented in the schema, so the baseline is 3. The description's "{uuid}" path token adds no meaning beyond what the schema already states.
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?
"Get external squad by uuid" names a verb and resource and the identifying key, so the intent is unambiguous, but it is nearly a verbatim restatement of the tool name and adds nothing about what an 'external squad' is. No differentiation from the sibling external_squad_get_external_squads (list all) is offered.
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 when-to-use guidance at all. The description never says when to fetch a single squad versus the collection endpoint, nor mentions any precondition (squad must exist, valid UUID).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_squad_get_external_squadsC
GET /api/external-squads Get all external squads Tags: External Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, yet it only dumps the raw HTTP method/path. It does not state pagination behavior, result ordering, auth/permission requirements, or whether the full squad list is returned. "GET" implies a safe read, but nothing is explicitly disclosed.
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 short and front-loads the intent, but it wastes space on a raw REST path and a "Tags: External Squads Controller" artifact that add no meaning for an agent. The useful content is a single clause.
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-argument list tool this is minimally adequate, but with no annotations and no output schema the description should at least indicate whether the response is paginated or filtered, which it omits. It leaves the agent guessing about the shape and size of the result.
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 takes zero parameters, which is the baseline-4 case; there is nothing for the description to explain beyond what the empty schema already communicates.
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 "Get all external squads", which names the resource and the list-all scope, but it largely restates the tool name and gives no differentiation from the sibling external_squad_get_external_squad_by_uuid or from internal_squad_get_internal_squads. An agent gets the gist but must infer how it relates to its 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?
There is no guidance on when to use this versus get_external_squad_by_uuid or the internal-squad equivalents, nor any prerequisite or filtering context. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_squad_get_tagsC
GET /api/external-squads/tags Get tags of External Squads Tags: External Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not state whether this requires authentication, whether results are paginated, what the response shape is, or any rate limits. 'Get' implies read-only but nothing beyond that is disclosed.
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 short and front-loaded, but includes redundant boilerplate: the raw GET path and 'Tags: External Squads Controller' add no agent-facing 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 zero-param, no-annotation, no-output-schema tool, the description is minimal. It doesn't explain what 'tags' means in this domain (the set of tags used by external squads) or how it differs from the sibling external_squad_get_external_squads endpoint, leaving the agent without enough context to choose it 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?
There are zero parameters, so the baseline is 4. The description correctly implies no input is required.
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 'Get tags of External Squads', which is a clear verb+resource, but it is partially a restatement of the tool name and does not distinguish it from similar tag-fetching siblings like internal_squad_get_tags, hosts_get_hosts_tags, or config_profile_get_tags. The raw GET path adds little semantic value.
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 the many other *_get_tags siblings. No context, prerequisites, or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_squad_remove_users_from_external_squadC
DELETE /api/external-squads/{uuid}/bulk-actions/remove-users Delete users from external squad Tags: External Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | UUID of the external squad | |
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only restates the HTTP call. It omits that the operation is destructive/bulk, whether removals are reversible, what permissions are needed, and — most importantly — the preview-only behavior when confirm is absent (that detail exists only in a Russian-language schema description).
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?
Very short and front-loaded with the verb and resource, but the raw HTTP path and the 'Tags: External Squads Controller' line are autogenerated noise that consumes part of an already minimal description.
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, unannotated bulk mutation with no output schema, the description should explain the confirmation/preview flow and what 'remove users' operates on. Neither appears, so an agent could invoke it without realizing the call is a dry run and may be missing a user-list argument.
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 baseline 3 applies; the uuid and confirm parameters are documented in the schema. However, the description adds nothing beyond the endpoint, and it is silent on how the target users are identified for a 'remove-users' bulk endpoint, which is not clarified anywhere in either field.
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 ('Delete users from external squad') and includes the exact HTTP method and path, so the action is unambiguous. It does not explicitly distinguish itself from close siblings like external_squad_delete_external_squad (whole squad) or internal_squad_remove_users_from_internal_squad, though the name and path make the scope inferable.
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 guidance on when to use this versus external_squad_update_external_squad or the add-users counterpart, and no mention that this is a bulk operation requiring a user list. The critical precondition that confirm:true must be passed for the request to actually execute is never surfaced in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_squad_reorder_external_squadsC
POST /api/external-squads/actions/reorder Reorder external squads Tags: External Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The 'POST' prefix implies mutation, but the description does not disclose what gets destroyed, whether the item list must be exhaustive, whether omitted squads lose their position, or what authorization is required. The confirm-parameter behavior is documented in the schema, not the description.
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 short and front-loads the method and route, but the trailing 'Tags: External Squads Controller' is auto-generated filler that adds no value, and the core purpose line is a bare restatement with no 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 mutation tool with nested object parameters, no annotations, and no output schema, the description is inadequate. It omits payload semantics, ordering behavior, and error/confirmation expectations that an agent would need 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 50%: only the confirm parameter is described in the schema, while the nested body/items structure (uuid + viewPosition) is undocumented. The description adds nothing about how to construct the reorder payload, so it fails to compensate 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?
States a specific verb (reorder) and resource (external squads), which is enough to distinguish it from the get/create/delete external squad siblings. However, it never explains what reordering means operationally (view positions), so the agent must infer intent from the name alone.
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 no when-to-use guidance, no prerequisites, and no mention of the sibling reorder tools (internal_squad_reorder_internal_squads, config_profile_reorder_config_profiles). The only context is the HTTP verb and route.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_squad_set_tagsC
PATCH /api/external-squads/tags Set tags of External Squad Tags: External Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, and it discloses almost nothing. It does not state that tags are fully replaced, whether the operation is idempotent, what permissions are required, or the fact that a confirm:true flag gates actual execution. The PATCH keyword vs the 'Set tags' wording also leaves the replace-vs-merge semantics ambiguous.
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 short, but a full third of the content ('Tags: External Squads Controller') is a doc-generator artifact that carries no meaning, and the leading HTTP method/URL duplicates information an agent can infer from the name. Front-loading is undermined by the low-value raw endpoint string.
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 nested-body mutation tool with a confirm-gated preview mechanism, no annotations, and no output schema, the description is far too thin. It omits the confirm/preseview contract, replacement semantics, and any return information, leaving the agent unable to call it 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 only 50%, and the description adds no parameter meaning at all. It does not explain the uuid target, the tags array constraints (10 items, 36-char pattern), or the preview/confirm behavior of the confirm flag, all of which matter for correct invocation.
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 phrase 'Set tags of External Squad' gives a clear verb and resource, so an agent knows exactly what the tool mutates. However, it does not differentiate itself from near-identical siblings like internal_squad_set_tags, node_plugin_set_tags, or config_profile_set_tags, which all share the same 'set tags' verb pattern. The 'PATCH /api/external-squads/tags' header is redundant restatement.
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 external_squad_get_tags (read) or external_squad_update_external_squad (general update). No prerequisites, no note that it likely replaces the entire tag set rather than appending. The agent is left to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_squad_update_external_squadC
PATCH /api/external-squads Update external squad Tags: External Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about auth requirements, partial-update semantics, or reversibility. The important confirm/preview gate is only documented inside the schema (in Russian), not the description.
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 short, but 'Tags: External Squads Controller' is auto-generated noise that does not earn its place, and nothing useful is front-loaded before it.
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 mutation tool with a deeply nested body, no annotations, no output schema, and a confirmation gate, this description is far too thin. An agent cannot determine correct invocation behavior without opening the schema.
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 only 50% schema description coverage and two parameters, the description adds no meaning for any field. The large nested body (templates, hwidSettings, customRemarks, etc.) is left entirely to the schema with no descriptive 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 'Update external squad' is essentially a restatement of the tool name (external_squad_update_external_squad). Beyond the HTTP verb PATCH, it adds no resource scope or differentiation from siblings like external_squad_create_external_squad or internal_squad_update_internal_squad.
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 such as external_squad_get_external_squad_by_uuid or the create/delete variants. The 'Update' verb implies a mutation but no context, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_bulk_actions_delete_hostsC
POST /api/hosts/bulk/delete Delete hosts by UUIDs Tags: Hosts Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses nothing beyond the endpoint. It does not say the deletion is irreversible/destructive, that it is a bulk mutation, or how the confirm flag gates execution (preview vs. actual send) — that safety-relevant behavior is buried in the schema field description, not the tool description.
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 single operative sentence is front-loaded and waste-free, but the leading HTTP verb/path and trailing 'Tags: Hosts Bulk Actions Controller' line are framework boilerplate that consume space without helping an agent decide or invoke.
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 bulk mutation with a nested request body, no annotations, and no output schema, the description is thin: it omits reversibility, the confirm/preview mechanic, partial-failure semantics, and any return expectations. An agent has enough to guess the call but not enough to use it safely.
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 nested 'confirm' boolean is documented in the schema, but the 'uuids' array has no field-level description. The phrase 'by UUIDs' conveys the key input's meaning, so the description breaks even with the schema baseline without adding format, limits, or behavior for confirm.
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 ('Delete hosts by UUIDs'), which distinguishes it from the single-host sibling hosts_delete_host and from hosts_bulk_actions_disable_hosts/enable_hosts. It never explicitly names those siblings, so it falls short of a 5, and the raw HTTP path/tag line adds noise rather than clarity.
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 when-to-use guidance, no statement of when to prefer this over hosts_delete_host (single) or the other bulk host actions, and no prerequisites called out. The description only asserts what the endpoint does, leaving selection entirely to inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_bulk_actions_disable_hostsC
POST /api/hosts/bulk/disable Disable hosts by UUIDs Tags: Hosts Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only restates the HTTP verb/path. It does not state whether disabling is reversible, whether it affects active connections/subscriptions, what permissions are required, or how many UUIDs can be processed at once. The confirm/preview behavior is not surfaced, though the schema does cover 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?
Very short and front-loaded, with the action stated immediately. The raw 'POST /api/hosts/bulk/disable' line and the 'Tags: ...' controller line are boilerplate that contribute little to tool selection, keeping it from a 5.
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 bulk mutation with no annotations and no output schema, the description is thin: it omits reversibility, side effects on live hosts/connections, and any warning about the preview/confirm gate. The nested body object and confirm semantics are left entirely to the schema, leaving real gaps 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 50%, and the one undocumented parameter (uuids) is the one the description gestures at with 'by UUIDs'. That adds marginal meaning beyond the schema's bare UUID-pattern array, but it supplies no limits, ordering, or duplicate-handling semantics. 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 gives a specific verb and resource: 'Disable hosts by UUIDs', which cleanly separates this tool from hosts_bulk_actions_enable_hosts, hosts_bulk_actions_delete_hosts and hosts_bulk_actions_set_port_to_hosts. It stops short of explicitly naming those siblings, so an agent relies on tool names rather than text to disambiguate.
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 statement of when to use this bulk-disable operation versus disabling hosts individually (hosts_update_host) or via other bulk actions. The 'Tags:' and controller lines are provenance metadata, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_bulk_actions_enable_hostsC
POST /api/hosts/bulk/enable Enable hosts by UUIDs Tags: Hosts Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only restates the HTTP route and verb. It does not disclose the consequence of enabling (e.g., effect on already-enabled hosts), whether the operation is reversible, or that confirm:true is required for this non-GET 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?
Very short and front-loaded with the endpoint and action, wasting no words on the core intent. The trailing "Tags: Hosts Bulk Actions Controller" line is metadata noise for an agent, which keeps it from a 5.
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 bulk mutation tool with no annotations and no output schema, the description should disclose effect, prerequisites, and the confirm requirement, but it only gives the route and verb. It is minimally adequate but leaves meaningful gaps an agent would need to resolve.
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-schema, while the uuids parameter is not. The phrase "by UUIDs" maps to and mildly clarifies the required uuids array, but adds no format or batch-size detail, so the description 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?
States a specific verb and resource ("Enable hosts") plus the selection mechanism ("by UUIDs"), so an agent can distinguish it from hosts_bulk_actions_disable_hosts and hosts_bulk_actions_delete_hosts by the verb alone. It does not explicitly name or contrast with those siblings, keeping it below 5.
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 when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as a single-host update. The agent is told what the endpoint does but not under what circumstances to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_bulk_actions_set_port_to_hostsC
PATCH /api/hosts/bulk/update Update many hosts Tags: Hosts Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for a multi-host mutation. It discloses nothing about permissions, reversibility, partial-failure behavior, or the confirm/preview gate (that detail lives only in the schema's 'confirm' description). Only the bare PATCH/update semantics are conveyed, which the name already implies.
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 short and front-loads the endpoint, but the brevity is under-specification rather than disciplined conciseness. The 'Tags:' line is metadata boilerplate that does not help an agent decide or call correctly.
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 high-complexity bulk mutation with a deeply nested body, no output schema, and no annotations, the description is far too thin. An agent cannot safely determine scope, side effects, or required confirmation from this text 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?
The description adds no meaning for either parameter. With only 50% schema description coverage and a large nested 'body' object (mapper, internalSquads, subscriptions, etc.), the description should compensate but does not, leaving the complex override/mapper payload entirely to the schema. Note the schema itself does document parts of the body richly, but the description text contributes nothing.
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 verb and resource ('Update many hosts') plus the raw PATCH endpoint, so the intent is identifiable. However, it never clarifies that this sets specific host properties (e.g. port/sni/address) in bulk, nor distinguishes it from siblings like hosts_update_host, hosts_bulk_actions_disable_hosts, or hosts_bulk_actions_delete_hosts. The tool name ('set_port_to_hosts') actually narrows scope more than the description 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?
There is no guidance on when to use this bulk endpoint versus the single-host update (hosts_update_host) or the other bulk actions. No prerequisites, no conditions, no alternatives are named. The agent is left to infer everything from the name and HTTP path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_create_hostC
POST /api/hosts Create a new host Tags: Hosts Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing: it says the operation is a POST create but not that it is a write/mutation, what permissions are required, or that a confirmation gate (confirm) applies. For a create operation with a deeply nested, complex body, this is a significant gap.
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 short, but the brevity is under-specification rather than conciseness. The valuable content is one line; the route and "Tags: Hosts Controller" fragments add no decision-relevant information and only pad the string.
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 a large nested input object, no annotations, and no output schema, the description should at least describe the create semantics and confirmation behavior. It leaves the agent without enough context to call the tool confidently beyond the bare verb.
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 the confirm parameter is documented (in the schema, not the description). The description adds zero parameter meaning, and does not explain the required body envelope or its key sub-objects (inbound, mapper, internalSquads) despite their complexity.
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 ("Create a new host") and the underlying route POST /api/hosts makes the mutation unambiguous. It distinguishes itself from hosts_update_host / hosts_delete_host by name alone, but adds no scope or context about what a host is or how it relates to inbounds/config profiles.
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 when-to-use guidance, no prerequisites (e.g. needing a config profile inbound UUID first), and no mention of alternatives such as hosts_update_host or hosts_bulk_actions_*. The agent must infer everything from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_delete_hostC
DELETE /api/hosts/{uuid} Delete a host by UUID Tags: Hosts Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose that deletion is irreversible, whether related configs/subscriptions are affected, or what authorization is required. The confirm/preview behavior exists only in the schema, not the description.
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 text is short and front-loaded with the action, but the 'DELETE /api/hosts/{uuid}' line largely restates the name and 'Tags: Hosts Controller' is generated boilerplate that earns no 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 mutation with no annotations and no output schema, the description is too thin. It should convey irreversibility, side effects, and the confirm-gated preview flow, none of which appear.
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%: uuid has only format/pattern with no prose, and confirm's meaning lives in the schema itself. The description adds nothing beyond echoing '{uuid}', so it does not compensate for the undocumented uuid parameter.
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: 'Delete a host by UUID', and the REST path 'DELETE /api/hosts/{uuid}' reinforces it. However, it offers no differentiation from siblings like hosts_bulk_actions_delete_hosts or hosts_create_host, leaving the agent to infer the singular-vs-bulk distinction from the name alone.
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 the bulk delete sibling, nor any mention of prerequisites or when-not-to-use conditions. The agent must infer that this deletes exactly one host.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_get_hostsC
GET /api/hosts Get hosts Tags: Hosts Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it discloses no behavioral traits at all: no auth requirements, no pagination/limit behavior, no scope of what 'hosts' includes, no result expectations. 'GET /api/hosts' plus a controller tag restates the name rather than adding 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?
It is short and front-loaded, but two of the three lines are generated boilerplate ('GET /api/hosts', 'Tags: Hosts Controller') that add no decision-relevant information. Efficient in size, thin in substance.
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 tool with no output schema and no annotations, the description should at least convey what is returned or whether results are filtered/paginated. It does neither, leaving the agent guessing about return shape and scope.
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 takes zero parameters, so there are no parameter semantics to clarify; the baseline of 4 applies. Nothing in the description misleads about inputs.
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 gives a verb+resource ('Get hosts') plus the raw endpoint, so the basic purpose is identifiable. However, it offers nothing to distinguish it from close siblings like hosts_get_one_host or hosts_get_hosts_tags beyond the plural noun. It is minimally viable rather than descriptive.
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 when-to-use guidance, no mention of prerequisites, and no reference to the alternative sibling tools for fetching a single host or host tags. The listing use case is only weakly implied by the plural 'hosts'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_get_hosts_tagsB
GET /api/hosts/tags Get tags of hosts Tags: Hosts Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only restates the HTTP method and controller. It does not state that this is a safe read, whether results are paginated, or what the tag payload looks like.
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?
Very short and front-loaded with the operation, so nothing is buried. The trailing 'Tags: Hosts Controller' line is generated metadata noise rather than useful content, which keeps it out of the top band.
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 tool with no output schema, the description tells the agent what is retrieved but not the return shape (e.g., a list of tag strings) or any grouping/ordering. Adequate but with a clear 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 tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies a parameterless call with no filtering.
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 ('Get tags of hosts') plus the underlying endpoint, which is enough to tell it apart from the many sibling tag endpoints (nodes_get_nodes_tags, users_get_users_tags, config_profile_get_tags) since it is scoped to hosts. It is clear, though it does not explicitly call out those 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?
There is no when-to-use or when-not-to-use guidance and no named alternative. The purpose implies the usage context (listing the tag vocabulary for hosts), but an agent gets no help distinguishing it from the other 'get tags' tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_get_one_hostC
GET /api/hosts/{uuid} Get a host by UUID Tags: Hosts Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing beyond the HTTP endpoint. Auth requirements, error behavior for a missing/unknown UUID, and return shape are all unstated.
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 lines, front-loaded with the operative meaning; the raw endpoint path and "Tags: Hosts Controller" are spec boilerplate but not actively harmful.
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 annotations and no output schema, the description should say more about the returned host object and any access constraints. For a single-resource fetch it leaves the agent guessing about failure modes and response content.
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 single parameter is covered by the schema's type, format, and pattern, though schema description coverage is 0%. "By UUID" confirms the parameter's meaning but adds nothing about where the UUID comes from or what happens if it does 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?
"Get a host by UUID" names a specific verb and resource, and the "by UUID" qualifier separates it from the list tool hosts_get_hosts. It never explicitly names or contrasts with a sibling, but the scope 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?
There is no guidance on when to use this versus hosts_get_hosts, hosts_get_hosts_tags, or the single-host retrieval alternatives. The agent must infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_reorder_hostsC
POST /api/hosts/actions/reorder Reorder hosts Tags: Hosts Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. "POST" implies a mutation, but nothing is disclosed about what is changed, whether ordering is global or scoped, side effects on existing hosts, or permissions required. The confirm/preview behavior is only documented in the schema in Russian, not in the description.
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 short, but the content is an unedited OpenAPI dump: an HTTP method plus path and a "Tags: Hosts Controller" line that carries no meaning for an agent. The useful statement ("Reorder hosts") is present but there is no restructuring or added value, so brevity comes from under-specification rather than conciseness.
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 a nested-object body, a confirmation parameter, no annotations, and no output schema, the description is completely inadequate. It gives the agent nothing beyond the endpoint signature to call this mutation 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 50% — the nested body.hosts array (uuid + viewPosition pairs) is undocumented, and the description adds nothing about it. The one documented parameter (confirm) is described only in the schema, not the description, so the description does not compensate for the coverage gap on a complex nested payload.
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?
"Reorder hosts" names a verb and a resource, so the basic operation is inferable, but it is essentially the tool name normalized (hosts_reorder_hosts → Reorder hosts). It offers no scope detail — what ordering means, whether it affects view order globally, or how it differs from hosts_update_host or the other reorder_* 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?
There is no when-to-use guidance at all. The agent is not told when reordering hosts is appropriate, what prerequisites exist (e.g., that hosts must exist), or how this relates to the similarly named reorder tools for nodes, squads, or config profiles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_update_hostC
PATCH /api/hosts Update a host Tags: Hosts Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It reveals only that the operation is a PATCH (mutating), but says nothing about permissions, whether fields are merged or replaced, the partial-update semantics, or the confirm/preview workflow. For a mutation tool with zero annotation coverage this is a significant gap.
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 lines with the HTTP method front-loaded and no wasted words, so it is structurally clean. But the brevity reflects under-specification rather than disciplined conciseness for a tool this complex.
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?
This is a complex host-update tool with a deeply nested schema, no annotations, and no output schema. The description provides none of the context an agent needs about merge behavior, the mapper-rewrite mechanism, or the preview-then-confirm flow, leaving it far short of 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?
With only 50% schema description coverage and a large nested body (mapper with base64/mihomo/singbox/xrayJson operations, internalSquads, inbound, etc.), the description adds zero meaning about any parameter. It does not explain the required uuid, which fields are optional, or the required confirm flag described only inside 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 verb and resource ('Update a host') and discloses the endpoint (PATCH /api/hosts), so the basic purpose is clear and distinguishes it from siblings like hosts_create_host or hosts_delete_host by implication. However, it is essentially a restatement of the tool name with no elaboration on what 'update' covers, making it minimum-viable rather than genuinely clarifying.
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 when-to-use guidance, no mention of prerequisites (e.g., host must exist), and no routing to alternatives such as hosts_bulk_nodes_update or hosts_create_host. The agent is left to infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hwid_user_devices_create_user_hwid_deviceC
POST /api/hwid/devices Create a user HWID device Tags: HWID User Devices Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about the mutation's effects (e.g. duplicate HWID handling), permission requirements, or the confirm/preview gate described only in the schema, leaving key behavioral traits undisclosed for a state-changing 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?
The text is short but poorly spent: the raw 'POST /api/hwid/devices' line and 'Tags: ...' metadata consume most of it while conveying nothing the agent can act on. This is under-specification rather than effective conciseness.
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 mutating tool with a nested seven-field body, no annotations, no output schema, and no usage guidance, the description is far too thin. An agent cannot confirm the write semantics, the confirm gate, or how to handle duplicates from this text 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?
Schema description coverage is only 50%, and the description adds no parameter meaning at all. The nested body object (hwid pattern, required userId, optional platform/osVersion/requestIp/userAgent/deviceModel) is left entirely to the schema, and the confirm preview behavior is documented only in the schema, not 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 states a clear verb and resource ('Create a user HWID device'), which tells the agent this is the write counterpart to the hwid_user_devices_get_* and delete_* siblings. However, 'POST /api/hwid/devices' is pure noise and the sentence merely restates the tool name without adding scope or distinguishing detail beyond the verb.
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 such as hwid_user_devices_get_user_hwid_devices or delete_user_hwid_device, nor any prerequisite or precondition (e.g. that the target user must exist). Usage must be fully inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hwid_user_devices_delete_all_user_hwid_devicesC
POST /api/hwid/devices/delete-all Delete all user HWID devices Tags: HWID User Devices Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, yet it only restates the operation and endpoint. It never discloses that this is an irreversible bulk destruction, what permissions are required, or the confirm:true preview behavior (which it leaves to the schema). For a destructive operation with zero annotation coverage this is a significant gap.
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 very short and front-loads the operation, but two of the three lines (the raw 'POST /api/...' path and the 'Tags: HWID User Devices Controller' boilerplate) are auto-generated noise that adds no decision 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 destructive, non-GET bulk operation with no annotations and no output schema, the description is under-specified: it omits irreversibility, scope, and the confirm/preview workflow needed to call it safely. The 50% parameter coverage gap is also left 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 coverage is 50%: the confirm parameter is well documented, but body.userId is undocumented. The description adds no parameter meaning beyond the schema — it never clarifies that userId selects which user's devices are wiped, nor how the confirm preview interacts with the request.
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: 'Delete all user HWID devices', plus the underlying endpoint POST /api/hwid/devices/delete-all. The word 'all' implicitly distinguishes it from the single-device sibling hwid_user_devices_delete_user_hwid_device, though it never names that sibling. Clear purpose, but no explicit 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?
There is no guidance on when to use this bulk delete versus the single-device delete sibling, nor any stated prerequisite (permissions, confirm flow). The agent must infer usage entirely from the name. This is the minimum guidance level, not explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hwid_user_devices_delete_user_hwid_deviceC
POST /api/hwid/devices/delete Delete a user HWID device Tags: HWID User Devices Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says 'Delete' but does not disclose irreversibility, required permissions, or side effects on the user's device limit. The confirm/preview mechanism is documented only in the schema parameter, not in the description.
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?
Purpose is front-loaded and the text is short, but it wastes a line on the auto-generated 'Tags: HWID User Devices Controller' and the raw HTTP method/path, neither of which helps an agent decide or invoke. Appropriately sized but not fully earning its space.
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 mutation with no annotations, no output schema, and a nested undocumented body, the description should explain the confirm gate, irreversibility, and the target identifiers. It supplies only the action, leaving key invocation context to 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?
Schema description coverage is 50% – the 'confirm' parameter is documented, but the nested body fields (userId, hwid) carry no descriptions anywhere. The description mentions no parameters at all, so it adds zero meaning to the userId/hwid identifiers it requires.
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: 'Delete a user HWID device'. The singular 'a user HWID device' implicitly distinguishes it from the sibling hwid_user_devices_delete_all_user_hwid_devices, but the description never names that sibling or makes the contrast explicit. Clear purpose, no explicit 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?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as the delete-all or create-device siblings. The agent gets the endpoint and the action, but nothing about which conditions select this tool over its near neighbors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hwid_user_devices_get_all_usersC
GET /api/hwid/devices Get HWID devices Please note that the filters here are primarily intended for use by the frontend and rely on expensive operators such as LIKE under the hood. Misusing these filters may negatively impact the performance of your database. Tags: HWID User Devices Controller Пагинация через query-параметры: start, size.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results to return, no more than 1000 | |
| start | No | Start index (offset) of the results to return, default is 0 | |
| filters | No | ||
| sorting | No | ||
| filterModes | No | ||
| globalFilterMode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses that filters use expensive LIKE operators and can degrade database performance, which is genuine behavioral context, and that pagination is via start/size. It omits confirmation that this is a read-only listing, auth requirements, and the shape/volume of returned data.
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 functional core is front-loaded, but there is redundancy (HTTP path line plus 'Get HWID devices') and non-earning chrome such as the 'Tags: HWID User Devices Controller' line. A Russian-language pagination sentence amid otherwise English text also hurts 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 6 parameters (several nested), no output schema, and no annotations, the description should carry substantial weight but does not. It explains neither the return payload nor the structure of filters/sorting/filterModes/globalFilterMode, so an agent lacks the detail needed to invoke it 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 only 33% (size and start), yet the description merely restates that pagination uses start/size and mentions filters generically. It does not explain the nested 'filters' id/value structure, 'sorting' id/desc objects, 'filterModes', or 'globalFilterMode', leaving four complex parameters undocumented in both description and 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 verb+resource ('Get HWID devices') and echoes the endpoint 'GET /api/hwid/devices', so the core action is identifiable. However it does not reconcile itself with the tool name ('get_all_users') or distinguish this list-everything tool from siblings like hwid_user_devices_get_user_hwid_devices or hwid_user_devices_get_hwid_devices_stats. The purpose is only adequately 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?
It gives an operational warning that the filters are frontend-oriented and use expensive LIKE operators, implying cautious filter use. But it offers no when-to-use vs alternative guidance against the many sibling hwid/devices and users tools. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hwid_user_devices_get_hwid_devices_statsC
GET /api/hwid/devices/stats Get HWID devices stats Tags: HWID User Devices Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no statement of what statistics are computed, over what population or time window, whether a user/device identifier is required, or auth requirements. The GET verb weakly implies read-only behavior, which is the only signal present.
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 lines where one would do: the raw HTTP route duplicates the name, and the 'Tags:' line is framework noise that consumes space without informing the agent. It is short but not efficiently structured.
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 annotations, no output schema, and a 'stats' return value never characterized, an agent knows neither what it will receive nor the conditions for calling it. For a zero-param endpoint this is still under-specified, since the entire contract rests on the description.
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 takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify beyond the empty 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 restates the tool name almost verbatim ('Get HWID devices stats') and adds only the HTTP route. 'Stats' is unspecified, so an agent cannot tell what is actually returned or how this differs from hwid_user_devices_get_top_users_by_hwid_devices or hwid_user_devices_get_all_users.
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 guidance on when to use this tool versus sibling HWID endpoints, no prerequisites, no scope. The 'Tags: HWID User Devices Controller' line is generated metadata, not usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hwid_user_devices_get_top_users_by_hwid_devicesC
GET /api/hwid/devices/top-users Get top users by HWID devices Tags: HWID User Devices Controller Пагинация через query-параметры: start, size.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results to return, no more than 100 | |
| start | No | Start index (offset) of the results to return, default is 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and mostly doesn't. The embedded 'GET /api/hwid/devices/top-users' line weakly implies a read-only operation, but there is no mention of ordering semantics, what 'top' means, result limits, permissions, or return shape.
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 body is short but padded with low-value artifacts: a raw HTTP method/path line and a 'Tags: HWID User Devices Controller' line that convey nothing to an agent, plus an untranslated Russian sentence that mixes languages in a single definition.
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 no annotations, so the description must compensate — but it never explains what a 'top user' entry contains, how the ranking is computed, or what the result ordering is. For a ranking/aggregation endpoint this leaves the agent guessing about the response.
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% — both start and size are documented in the schema with defaults and bounds. The description's pagination note merely restates what the schema already says, so the baseline 3 applies with no added semantic value.
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 verb and resource — 'Get top users by HWID devices' — so an agent can tell what the call returns without opening the schema. However, it gives no differentiation from nearby siblings such as hwid_user_devices_get_all_users or get_hwid_devices_stats, and the ranking metric behind 'top' is left undefined.
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 statement of when to use this tool versus the sibling HWID endpoints (get_all_users, get_hwid_devices_stats, get_user_hwid_devices). The only operational note is a Russian sentence about pagination, which is a mechanics hint, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hwid_user_devices_get_user_hwid_devicesC
GET /api/hwid/devices/{userId} Get user HWID devices Tags: HWID User Devices Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The 'GET' prefix weakly implies a read-only fetch, but the description never confirms it is non-mutating, nor does it describe pagination, empty results, or what a device record contains.
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?
Very short and front-loaded with the endpoint, which is fine, but the trailing 'Tags: HWID User Devices Controller' line is low-value filler that consumes part of an already minimal description.
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?
No output schema exists, so the description should describe the returned device list, yet it says nothing about the response shape or size. For a lookup tool with zero annotations and an undocumented parameter, this is not enough for an agent to call it 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?
One required parameter at 0% schema description coverage. The path template '{userId}' only restates the parameter name already visible in the schema, adding no meaning about expected format, valid range, or where to source the 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?
The description states a specific verb+resource ('Get user HWID devices') and the inclusion of the path template '/api/hwid/devices/{userId}' makes clear this is the per-user variant, distinguishing it from siblings like hwid_user_devices_get_all_users and hwid_user_devices_get_top_users_by_hwid_devices. It stops short of explicitly naming those siblings as alternatives.
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 when-to-use guidance, no exclusions, and no mention of the four sibling HWID tools that also list device data. The agent must infer from the name alone that this is the single-user lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_create_infra_billing_nodeC
POST /api/infra-billing/nodes Create infra billing node Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only implies a write via "POST" and "Create" but says nothing about authentication requirements, side effects, idempotency, or the confirm/preview workflow (which is only documented in the schema's confirm parameter, not the description).
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 short and front-loaded, but most of its content is boilerplate (HTTP method, path, tag) rather than useful information, so the brevity comes at the cost of substance.
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 mutation tool with a nested request body, no annotations, and no output schema, the description is far too thin. It omits permissions, the meaning of the confirm flag, and any behavioral expectations an agent needs before issuing a write.
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%, and the description adds no parameter meaning whatsoever. The nested body object's required fields (providerUuid, nodeUuid, name, nextBillingAt) and their relationships to infra providers/nodes are left 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?
States a specific verb and resource ("Create infra billing node") which is clear enough, but it essentially restates the tool name plus HTTP boilerplate ("POST /api/infra-billing/nodes", "Tags: Infra Billing Controller"). No effort is made to distinguish it from close siblings like infra_billing_create_infra_billing_record or infra_billing_create_infra_provider.
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 when-to-use guidance, no prerequisites, and no mention of alternatives despite many sibling create tools existing in the same namespace. The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_create_infra_billing_recordC
POST /api/infra-billing/history Create infra billing history Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure, yet it only restates the HTTP endpoint. It omits auth/permission requirements, side effects, and the fact that without confirm:true a preview is returned rather than a write — a meaningful behavior documented only 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?
It is short and front-loads the endpoint, but the raw 'POST /api/infra-billing/history' path and the boilerplate 'Tags: Infra Billing Controller' add little value over the tool name. Minimal but not wasteful-to-the-point-of-harm.
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?
This is a mutation tool with no annotations, no output schema, a nested body object, and a thin description. The critical safe-write behavior (confirm-based preview) is left to the schema, and there is no indication of the response or error conditions, leaving the definition incomplete.
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 and the nested body fields (amount, billedAt) are documented in the schema, but the description adds no meaning beyond what the schema already declares. It neither explains the confirm-then-execute flow nor the provider/amount/date 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?
States a specific verb+resource ('Create infra billing history'), which is clear enough to separate from the read (get_infra_billing_records) and delete (delete_infra_billing_record) siblings. However it does not explicitly differentiate itself or note the provider/node relationship, so it stops short of a 5.
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 guidance on when to use this versus alternatives. It does not mention preconditions such as needing an existing providerUuid (which create_infra_provider would supply) or when to record billing history. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_create_infra_providerC
POST /api/infra-billing/providers Create infra provider Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. The confirm parameter's schema description reveals a preview/confirmation gating mechanism, but the tool description itself never mentions this critical behavioral trait (non-GET operations require confirm:true, otherwise a preview is returned and nothing is sent). For a mutation tool with no annotations, this omission is significant.
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?
Extremely short, but not front-loaded with useful content – it leads with a raw HTTP method/path and ends with a tag line. Minimal but not wasteful; no sentence earns much 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 mutation tool with no annotations, no output schema, nested body object, and a confirm-preview behavior, the description is far too thin. It omits required body semantics, the confirm gating, and any return expectations.
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 description adds no parameter meaning beyond the schema. The confirm parameter has a rich schema description, but name/loginUrl/faviconLink are undescribed in both the description and schema. Baseline 3 given the confirm documentation does exist in structured fields.
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 (create) and resource (infra provider), which is clear enough. However, 'POST /api/infra-billing/providers' and 'Tags: Infra Billing Controller' are raw router metadata rather than human-readable purpose. It doesn't differentiate from siblings like infra_billing_update_infra_provider or infra_billing_create_infra_billing_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?
No when-to-use guidance, no prerequisites, no mention of alternatives. Sibling tools (infra_billing_get_infra_providers, infra_billing_update_infra_provider) exist but are never referenced to route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_delete_infra_billing_nodeC
DELETE /api/infra-billing/nodes/{uuid} Delete infra billing node Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, yet it says nothing beyond implying a DELETE. It does not state whether deletion is permanent, whether it cascades to related billing records, what permissions are required, or what the response looks like. The only behavioral nuance (the confirm/preview mechanism) lives in the schema, not the description.
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 text is short and front-loaded with the operation, which is good, but the raw HTTP line and the 'Tags: Infra Billing Controller' artifact are low-value filler that duplicate the name rather than inform the agent.
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 no annotations, no output schema, and half the parameters undocumented, the description is too thin. An agent cannot learn permanence, side effects, or confirmation requirements from it, leaving meaningful gaps for a mutation 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 only 50%: the required uuid parameter has format/pattern but no prose, and the description adds nothing about it. The confirm parameter's meaning is documented only inside the schema (and in Russian), so the description does not compensate 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 line 'Delete infra billing node' states a specific verb and resource, so an agent can tell it deletes a billing node. However, the bulk of the text is a raw HTTP verb/path and a controller tag that merely restate the tool name, and there is no differentiation from nearby siblings like infra_billing_delete_infra_billing_record or infra_billing_delte_infra_provider beyond the name itself.
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, no prerequisites, and no mention of what a caller should do before deleting a billing node. The description is a bare endpoint statement with zero contextual routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_delete_infra_billing_recordC
DELETE /api/infra-billing/history/{uuid} Delete infra billing history Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Delete' implies a destructive mutation, but the description doesn't state irreversibility, permission requirements, or side effects. It does surface the confirm parameter's behavior indirectly via the schema, and the confirm parameter description explains the preview behavior. This is minimal but not absent.
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?
Very concise: one HTTP method/path line, one purpose line, and a tags line. Front-loaded with the operation. However, the 'Tags: Infra Billing Controller' line adds no actionable information and could be considered noise.
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?
This is a destructive mutation tool with no annotations, no output schema, and a critical 'confirm' safety parameter with 50% schema coverage. The description provides no information about permissions, reversibility, or the confirm semantics (which are only in the schema). It is insufficient for an agent to safely invoke this deletion tool without additional 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 50%: the 'confirm' parameter has a detailed description in the schema (explaining the preview behavior without confirm:true). The 'uuid' parameter lacks a description in both the schema and the tool description. The description adds no parameter-level meaning beyond what the schema provides for confirm.
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: 'Delete infra billing history'. Distinguishable from siblings like infra_billing_get_infra_billing_records or infra_billing_create_infra_billing_record. However, it doesn't differentiate this tool from other deletion tools in the infra billing family (delete_infra_billing_node, delte_infra_provider), leaving some ambiguity about the exact target.
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 when-to-use or when-not-to-use guidance is provided. The description doesn't mention alternatives, prerequisites, or conditions for selecting this deletion tool over others. The agent receives no guidance on when deletion is the appropriate action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_delte_infra_providerC
DELETE /api/infra-billing/providers/{uuid} Delete infra provider by uuid Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Delete' implies a destructive mutation, and the schema's confirm parameter hints at a preview-before-send safety mechanism, but the description never states irreversibility, permission requirements, or what happens to dependent billing records. The mutation semantics are inferable but not disclosed.
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 lines that are front-loaded with the operation, but the raw HTTP route and controller tag ('Tags: Infra Billing Controller') add little agent-facing value and read as API-doc boilerplate rather than concise guidance.
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 annotations and no output schema, the description should disclose irreversibility, authorization needs, and side effects on related billing entities. Instead it provides only the endpoint and a restated purpose, leaving the agent to infer the risk profile entirely.
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 description names the uuid target but adds nothing about its format or about the confirm flag, whose meaning is only explained in the Russian schema description. Since half of the parameters are documented and the schema carries the confirmation semantics, 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?
States a specific verb and resource (delete infra provider by uuid) and includes the underlying HTTP route, so the agent knows exactly which entity is removed from the infra billing domain. It is clear but does not reference the sibling read/update tools it complements.
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 statement of when to use this tool versus alternatives, nor any prerequisite or exclusion guidance. The only context is the raw endpoint path and a controller tag, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_get_billing_nodesC
GET /api/infra-billing/nodes Get infra billing nodes Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not state whether this is a safe read (implied by GET, but not declared), whether pagination/filtering applies, or what the response contains. Nothing beyond the method and path is disclosed.
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 text is short but largely redundant: the title line repeats the name, the second line is a restatement, and the third is a controller tag. Very little content is front-loaded because there is barely any 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 parameterless GET whose siblings are numerous, the description omits any hint of return shape, filtering, or relationship to infra billing records/providers. It is not enough to let an agent confidently pick it over adjacent endpoints.
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 takes zero parameters, so the baseline is 4. There is nothing for the description to document on the parameter side, and it does not misrepresent the input.
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 restates the tool name ('Get infra billing nodes') and echoes the HTTP route. It adds no distinguishing scope beyond the title. It is technically a verb+resource, but it is essentially a tautology of the name and does not differentiate from siblings like infra_billing_get_infra_billing_records or infra_billing_get_infra_providers.
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 guidance on when to use this versus the sibling infra billing endpoints is provided. The 'Tags: Infra Billing Controller' line is metadata, not usage context. An agent has to infer its purpose solely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_get_infra_billing_recordsC
GET /api/infra-billing/history Get infra billing history Tags: Infra Billing Controller Пагинация через query-параметры: start, size.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of billing records to return, no more than 500 | |
| start | No | Start index (offset) of the billing history records to return, default is 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It implies a read via the GET route and mentions pagination, but says nothing about result volume, default/maximum sizes, ordering, or what a response contains, which is thin for an unannotated 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?
The description is short and the purpose is front-loaded, but it wastes space on the raw HTTP endpoint and a boilerplate "Tags: Infra Billing Controller" line, and the trailing Russian sentence duplicates the schema's pagination info.
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 read-only list endpoint with no output schema, the definition covers the essentials: what it fetches and how to paginate. It stops short of describing default ordering or response shape, a very minor gap for this kind of 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 100%, so both start and size are already fully documented in the schema (including defaults and the 500 maximum). The description's Russian sentence about pagination merely repeats what the schema already states, adding no new semantics; the baseline of 3 applies.
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 gives a clear verb+resource ("Get infra billing history") and even names the underlying HTTP route, so an agent can tell it retrieves billing history records. However, it never distinguishes itself from nearby siblings such as infra_billing_get_billing_nodes or infra_billing_get_infra_providers, so the agent must infer the boundary from the name alone.
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 the many other infra_billing read tools, and no prerequisites are stated. The only actionable hint is the pagination note, which describes how to call it rather than when.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_get_infra_providerC
GET /api/infra-billing/providers/{uuid} Get infra provider by uuid Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It implies a read via 'GET'/'Get', but says nothing about permission requirements, error behavior for unknown UUIDs, rate limits, or the shape/format of the returned provider. Only the read-only nature is inferable.
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 core statement ('Get infra provider by uuid') is short and front-loaded, but the leading 'GET /api/infra-billing/providers/{uuid}' duplicates the same information and the 'Tags: Infra Billing Controller' line is framework noise that adds nothing for an agent. Roughly half the text is redundant scaffolding.
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?
This is a simple single-parameter read, so the bar is low and the description covers the essential identity of the tool. However, with no annotations and no output schema, an agent gets no signal about safety, failure modes, or return contents, leaving the definition only minimally adequate.
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 is one parameter, uuid, with 0% schema description coverage, but the schema itself declares format=uuid and a strict UUID regex, and the description's 'by uuid' confirms the parameter identifies which provider to fetch. The description adds little beyond the schema's own format constraints, so this lands at the baseline 3 for a well-typed single identifier.
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 ('Get') and resource ('infra provider') plus the identifier ('by uuid'), so the agent knows this is a single-record fetch. The sibling list contains infra_billing_get_infra_providers (plural, list) and infra_billing_update/delete/create provider tools, and the singular 'get...by uuid' clearly distinguishes this one. It stops short of explicitly contrasting with the list sibling, hence 4 rather than 5.
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 no guidance on when to use this versus infra_billing_get_infra_providers or whether a provider must already exist. There are no prerequisites, no exclusion conditions, and no mention of alternatives. It simply restates the endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_get_infra_providersC
GET /api/infra-billing/providers Get all infra providers Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, yet it discloses nothing beyond the raw HTTP verb. It does not state whether results are paginated, what permissions are required, or what the response contains. The implied read-only nature comes solely from 'GET'.
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 short and front-loaded, but the raw path and the trailing 'Tags: Infra Billing Controller' line are OpenAPI scaffolding that adds no selection value to an agent; the content is efficient but partly noise.
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 parameterless list endpoint this is minimally adequate, but with no output schema the description should hint at what a provider object contains or how many are returned. The absence of annotations and output schema leaves the description thinner than it should be.
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 takes zero parameters (empty object schema, additionalProperties false), so there is nothing for the description to elaborate on. Baseline for a parameterless tool 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 and resource ('Get all infra providers'), which conveys a list-all operation, but it is essentially a restatement of the tool name and gives no differentiation from the closely named sibling infra_billing_get_infra_provider (singular). An agent can infer the purpose but gets no distinguishing signal beyond 'all'.
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 such as infra_billing_get_infra_billing_records, infra_billing_get_billing_nodes, or the singular provider lookup. No prerequisites, no exclusions, no context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_update_infra_billing_nodeC
PATCH /api/infra-billing/nodes Update infra billing nodes Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but only discloses the HTTP method (PATCH) and route. It never says this is a bulk mutation that rewrites next-billing dates for multiple node UUIDs, nor does it mention the preview/confirm flow that the schema hints at. For a write operation with zero annotation coverage this is a substantial gap.
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 lines with no filler, and the endpoint is front-loaded. It is not padded, but it is under-specified rather than genuinely concise, so it sits at the minimum-viable level.
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 mutation tool with a nested required body, no annotations, no output schema, and half the parameters undocumented, the description should explain the update semantics and confirmation behavior. As written it omits everything an agent would need beyond the raw route.
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 nested body properties (uuids, nextBillingAt) are undocumented, while only 'confirm' carries a schema description. The description adds nothing about parameter meaning, so it fails to compensate for the coverage gap on the required body object.
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 verb and resource ("Update infra billing nodes"), which is enough to separate it from the create/delete billing-node siblings. However, it does not specify what is actually being updated (billing dates for a set of nodes), so the purpose is only minimally more informative than the tool name itself.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as infra_billing_create_infra_billing_node or infra_billing_delete_infra_billing_node. The agent gets only the HTTP verb and path, leaving selection entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infra_billing_update_infra_providerC
PATCH /api/infra-billing/providers Update infra provider Tags: Infra Billing Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions PATCH (implying mutation) but does not disclose whether partial updates are supported, what happens to omitted fields, permission requirements, or any side effects. The confirm parameter's behavior is described in the schema, not the description, so the description adds almost nothing beyond the HTTP method.
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 short lines (HTTP method/path plus a one-line summary) and is front-loaded. It is efficient, though the 'Tags' line is extraneous boilerplate that does not earn 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 mutation tool with no annotations, no output schema, and a nested body object with undocumented fields, the description is inadequate. It omits when to use it, what it modifies, the confirm-preview behavior that affects invocation, and any return semantics. The schema carries most of the burden, but the description does not compensate for the missing behavioral 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 50%. The body object's properties (name, uuid, loginUrl, faviconLink) have no descriptions, but the confirm parameter has a detailed schema description explaining the preview behavior. The description itself adds no parameter meaning; baseline 3 is appropriate given partial 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 states 'Update infra provider' with the HTTP verb PATCH and endpoint path, which is a clear verb+resource. However, it does not distinguish this from sibling tools like infra_billing_update_infra_billing_node or infra_billing_create_infra_provider, and the 'Tags: Infra Billing Controller' is boilerplate. The purpose is identifiable but sibling differentiation is absent.
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 such as infra_billing_create_infra_provider or the update-node variant. The description is purely a REST endpoint restatement with no usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_add_many_users_to_internal_squadC
POST /api/internal-squads/{uuid}/bulk-actions/add-many-users Add many users to internal squad Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals only that the operation is a POST, and says nothing about the destructive/mutating nature, the 1000-user cap, partial-failure behavior, or the fact that the request is only previewed until confirm:true is supplied.
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 short and front-loads the endpoint, which is mildly useful for API mapping, but the 'Tags: Internal Squads Controller' line is framework noise that earns no place. Brevity here reflects under-specification rather than disciplined conciseness.
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 mutating bulk operation with a nested body, no annotations, no output schema, and low schema coverage, the description omits the confirm-preview flow, the maxItems limit, and error/rollback behavior. An agent could invoke it correctly only by reading the schema closely rather than the description.
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%: userIds and uuid are undocumented in the schema, and the description adds no meaning to either. The critical constraints (1-1000 numeric user IDs, required uuid) are discoverable only by reading the raw schema, and the confirm/preview semantics documented in the schema are not surfaced 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?
States a specific verb and resource ('Add many users to internal squad') and includes the underlying route, so an agent knows exactly what it does. It does not, however, distinguish itself from the near-identical sibling internal_squad_add_users_to_internal_squad (singular) or route to internal_squad_remove_many_users_from_internal_squad, leaving the many-vs-single distinction to inference.
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 when-to-use guidance at all. With a sibling that adds users one at a time and a sibling that removes many users, the description never says when bulk-add is the right choice, nor does it mention prerequisites such as confirmation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_add_users_to_internal_squadC
POST /api/internal-squads/{uuid}/bulk-actions/add-users Add all users to internal squad Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but only states the HTTP method (POST), implying mutation. It does not disclose the potentially massive side effect of adding every user to the squad, whether the action is reversible or idempotent, or any permission 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 text is short, but the opening raw HTTP path and the trailing 'Tags: Internal Squads Controller' are boilerplate that does not earn its place. The one meaningful clause is buried in the middle rather than 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 two-parameter mutating bulk operation with no annotations, no output schema, and half-documented parameters, the description is far too thin. It omits the critical fact that this affects all users and says nothing about the confirm/preview flow that the 'confirm' parameter enables.
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% (uuid has no description, only pattern/format). The description adds no meaning for either parameter and does not explain how uuid scopes the operation. It fails to compensate 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 verb+resource phrase 'Add all users to internal squad' identifies an operation, but it does not distinguish this tool from sibling 'internal_squad_add_many_users_to_internal_squad'. The leading line is just a raw HTTP path ('POST /api/internal-squads/{uuid}/bulk-actions/add-users'), so an agent cannot tell the 'all users' variant from the 'many users' variant without opening both 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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as 'internal_squad_add_many_users_to_internal_squad' or 'internal_squad_remove_users_from_internal_squad'. The description offers no routing signal for choosing this over its near-siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_create_internal_squadC
POST /api/internal-squads Create internal squad Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it discloses almost nothing: it does not mention auth requirements, the confirmation/preview gate, or what creating a squad affects. Only the raw 'POST' method hints at mutation, and that same gate is documented solely inside the schema's confirm property.
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 short and front-loaded with the action, which is good, but the content is a verbatim OpenAPI fragment including a useless 'Tags:' line, so brevity here reflects low information rather than tight writing.
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 mutating tool with a nested required body object, no annotations, no output schema, and a confirmation gate, the description should at minimum explain the required payload and the confirm behavior. Nearly all of that is missing, leaving an agent to infer everything from the schema.
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 confirm parameter is documented in-schema; body.name and body.inbounds are not), so the description was expected to compensate and does not. It says nothing about the required name constraints or that inbounds is a list of inbound UUIDs.
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 verb and resource ('Create internal squad') plus the raw HTTP route, so the basic action is identifiable. However, it is nearly a restatement of the tool name, adds no scope or field detail, and does nothing to distinguish it from siblings such as internal_squad_update_internal_squad or external_squad_create_external_squad.
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, no preconditions (e.g., required inbound UUIDs must already exist), and no note that non-GET calls need confirmation. The 'Tags: Internal Squads Controller' line is routing metadata, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_delete_internal_squadC
DELETE /api/internal-squads/{uuid} Delete internal squad Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. For a destructive DELETE it discloses nothing about irreversibility, whether associated users are cascaded or orphaned, required permissions, or side effects; only the raw HTTP method is exposed, which the agent could already infer.
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 text is short and front-loads the endpoint, but the 'Tags: Internal Squads Controller' line is scaffolding noise that adds nothing for an agent. It is compact without being informative.
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, no-annotation tool with no output schema, the description omits critical context, notably that without confirm:true the call only returns a preview and is not sent. That safety-critical behavior lives only in the schema's Russian-language parameter description, leaving the tool definition thin.
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%: uuid has no prose but is self-documenting via format/pattern, while confirm carries a detailed in-schema description of the preview-vs-execute behavior. The description only surfaces {uuid} in the path placeholder and adds no meaning beyond the schema, failing to compensate 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 (Delete) and resource (internal squad) and exposes the exact endpoint DELETE /api/internal-squads/{uuid}, so an agent knows it removes an existing squad by UUID. It is essentially the tool name restated and offers no explicit contrast with siblings like internal_squad_update_internal_squad, but the verb+resource pairing 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?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives such as internal_squad_remove_users_from_internal_squad or external_squad_delete_external_squad. The agent must infer the usage context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_get_internal_squad_accessible_nodesC
GET /api/internal-squads/{uuid}/accessible-nodes Get internal squad accessible nodes Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. The "GET" prefix weakly implies a non-destructive read, but there is no word on permissions, pagination, what 'accessible nodes' means, or failure modes.
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 short and front-loads the endpoint line, but the "Tags: Internal Squads Controller" line is generator metadata that conveys nothing to an agent and dilutes an already thin description.
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, no annotations, and an undocumented required parameter, the description should be doing the explanatory work and is not. An agent knows the route exists but not what it returns, how results are shaped, or when it is the right call.
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% and the single uuid parameter is documented only by its JSON-Schema pattern/format, which tells the caller nothing about which squad UUID to supply. The description's path template hints the UUID identifies the squad but adds no semantic detail 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 names a resource ("internal squad accessible nodes") with a GET verb, so the purpose is parseable. However it is essentially a restatement of the tool name and the HTTP route rather than an explanation, and it does nothing to distinguish itself from siblings like users_get_user_accessible_nodes or internal_squad_get_internal_squad_by_uuid.
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 guidance on when to use this tool versus alternatives, no prerequisites, and no mention of what an agent would need to have (e.g. a squad UUID) before calling. The only implicit context is the path template showing a {uuid} is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_get_internal_squad_by_uuidD
GET /api/internal-squads/{uuid} Get internal squad by uuid Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It states nothing about permissions, whether the tool errors on missing UUID, or what the response contains. The 'Tags: Internal Squads Controller' line is autogenerated noise, not behavioral disclosure.
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 short and front-loaded with the path and purpose, which is fine, but the 'Tags: Internal Squads Controller' line is filler that does not earn 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?
A read-by-UUID endpoint with no annotations, no output schema, and 0% param coverage. The description should clarify the return shape or at least that it fetches a single entity; instead it is a name restatement plus controller tag.
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%. The description only repeats '{uuid}' in the path, which the schema already encodes. No semantic meaning (e.g., which squad, format expectations) is added for the single required parameter.
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 restates the tool name almost verbatim: 'Get internal squad by uuid'. It is not a tautology in the strict sense since it names a resource, but it adds nothing beyond the name and does not distinguish from siblings like external_squad_get_external_squad_by_uuid or internal_squad_get_internal_squads. The HTTP method line is redundant.
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 when-to-use guidance, no mention of alternatives such as internal_squad_get_internal_squads (list) or internal_squad_get_internal_squad_usage. Nothing guides the agent on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_get_internal_squadsC
GET /api/internal-squads Get all internal squads Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It provides only the raw HTTP route and tag; it says nothing about pagination, ordering, permissions, or return format. For a listing endpoint with zero structured behavioral hints, this is thin.
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 short and front-loaded with the route, but 'Tags: Internal Squads Controller' is documentation metadata rather than useful instruction, and the key information ('Get all internal squads') largely restates the route. Three terse lines with some filler is merely adequate.
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 endpoint with no output schema and no annotations, the description should at least state that it returns the full collection and whether any filtering exists. Instead it stops at the route and a controller tag, leaving important context for a multi-sibling domain 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?
The tool takes no parameters and schema coverage is 100%, so there is nothing for the description to explain. Baseline 4 applies because no parameter semantics are required.
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 verb (Get) and resource (internal squads) via the raw HTTP route 'GET /api/internal-squads' and the line 'Get all internal squads'. However, it does not distinguish this from siblings such as internal_squad_get_internal_squad_by_uuid (singular lookup) or internal_squad_get_internal_squad_usage; the agent must infer that 'all' means list-everything. It's clear but lacks 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?
There is no when-to-use or when-not-to-use guidance. The word 'all' implies a listing operation but the description never tells the agent to prefer this over internal_squad_get_internal_squad_by_uuid when a UUID is known, nor does it mention alternatives like internal_squad_get_tags.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_get_internal_squad_usageC
GET /api/internal-squads/{uuid}/usage Get internal squad users traffic usage for a period Returns users whose total usage over the period on the given nodes is >= minTotalBytes, scoped to the nodes reachable via the internal squad inbounds. Underlying usage data is flushed to the database roughly every 2 minutes. Tags: Internal Squads Controller Пагинация через query-параметры: start, limit.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (YYYY-MM-DD) | |
| uuid | Yes | Internal squad UUID | |
| limit | No | Number of users to return, no more than 1000 | |
| start | Yes | Start date (YYYY-MM-DD) | |
| cursor | No | Pass the nextCursor from the previous response. Omit on the first request. | |
| minTotalBytes | No | Only include users whose total usage over the period is >= this (bytes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does add genuinely useful context: the scoping rule for which nodes count, the minTotalBytes filter semantics, and the fact that underlying usage data is flushed to the database roughly every 2 minutes (i.e., results can lag). It omits auth requirements and the actual return/pagination shape, so it is a partial disclosure.
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 content is reasonably short and the core sentence is front-loaded, but the definition is cluttered with a raw HTTP route line, a 'Tags:' line, and a stray Russian sentence about pagination that adds noise and is partly wrong.
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 annotations and no output schema, the description has to do more work, and it does cover the noteworthy traits (node scoping, minTotalBytes threshold, ~2-minute data flush lag). It still leaves the response shape, ordering, and true pagination behavior unaddressed, which matters for a cursor-paginated list 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 coverage is 100%, which sets a baseline of 3, but the description's pagination note is actively misleading: it says pagination is via 'start, limit', while the schema uses 'limit' plus 'cursor' and 'start' is a date range bound, not an offset. This contradicts the structured parameter definitions rather than supplementing them, so it scores below the baseline.
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: fetches internal squad users' traffic usage over a period, scoped to nodes reachable via the squad's inbounds, filtered by minTotalBytes. Clear enough to act on. However, it does not distinguish itself from the near-identically named sibling internal_squad_stats_get_internal_squad_usage, so the boundary between the two is left to inference.
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 what the result set contains but never says when to choose this tool over the sibling internal_squad_stats_get_internal_squad_usage or the other internal_squad_* stats tools. No when-to-use, prerequisites, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_get_tagsB
GET /api/internal-squads/tags Get tags of Internal Squads Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'GET' weakly implies a read-only operation, but the description says nothing about required permissions, whether the result is a flat list of strings vs objects, or whether an empty list is returned when no tags exist.
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 short, but the raw route line 'GET /api/internal-squads/tags' duplicates what the tool name already conveys, and 'Tags: Internal Squads Controller' is internal scaffolding rather than agent-facing information. Only one sentence actually 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 parameterless read with no output schema, the description should at least characterize the returned tag collection (list of strings, scope, empty-case behavior). It is minimally adequate but leaves the return shape unspecified.
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 takes zero parameters and the schema has 100% description coverage, so the baseline of 4 applies. The description neither needs nor provides 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 verb+resource: 'Get tags of Internal Squads', which an agent can map to fetching the set of tag values used by internal squads. However, it offers no differentiation from siblings like external_squad_get_tags, config_profile_get_tags, or node_plugin_get_tags that do the same thing for other 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?
No guidance on when to call this versus internal_squad_get_internal_squads or the parallel *_get_tags tools for other resources. The agent must infer that this is the correct source for the tag vocabulary used to filter internal squads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_remove_many_users_from_internal_squadC
DELETE /api/internal-squads/{uuid}/bulk-actions/remove-many-users Delete many users from internal squad Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it only restates the HTTP verb and route. It does not disclose that this is a destructive, irreversible bulk removal, that the confirm flag gates execution, that the operation caps at 1000 users, or what happens on partial failure.
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 short and front-loads the operation, but the raw 'DELETE /api/...' line largely duplicates the tool name and the 'Tags: Internal Squads Controller' line is pure noise. Two of three lines do not earn their 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 bulk mutation with no annotations, no output schema, a nested required body, and a confirm-gate the agent must know about, the description is far too thin. It omits the safety profile, the size limit, and the preview-without-confirm behavior.
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% (just the confirm flag, described in Russian), leaving uuid and body.userIds undocumented. The description adds no parameter meaning at all, so it fails to compensate for the coverage gap on a nested-body 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 gives a clear verb+resource: 'Delete many users from internal squad', which an agent can match to the operation without opening the schema. It does not, however, differentiate from the sibling internal_squad_remove_users_from_internal_squad (singular) or explain the 'many' vs single distinction.
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 when-to-use guidance, no prerequisites, and no mention of the singular sibling internal_squad_remove_users_from_internal_squad as the alternative for single removals. The agent must infer selection entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_remove_users_from_internal_squadC
DELETE /api/internal-squads/{uuid}/bulk-actions/remove-users Delete users from internal squad Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only implies destructiveness via the HTTP DELETE verb. It says nothing about required permissions, reversibility, side effects on squad membership, or response behavior; the confirm/preview semantics live only in the schema, not the description.
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?
Short and front-loaded with the endpoint then the purpose, so nothing is buried. The auto-generated 'Tags: Internal Squads Controller' line is noise that does not earn 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 bulk-removal operation with no annotations, no output schema, and only 50% parameter coverage, this description is far too thin. It leaves open who the removed users are, what authorization is needed, and how this differs from the remove_many sibling.
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%, so the schema documents confirm while uuid is left bare. The path template '/internal-squads/{uuid}/...' does hint that uuid identifies the squad rather than the user, but the description never explains this, and it is silent on how the users to remove are specified despite having no user-list parameter 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?
States a specific verb+resource combination ('Delete users from internal squad') plus the underlying DELETE endpoint and path, so the operation is unambiguous on its own. However, it makes no attempt to distinguish itself from the near-identical sibling internal_squad_remove_many_users_from_internal_squad or from external_squad_remove_users_from_external_squad.
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 the sibling remove_many variant, nor any prerequisite, permission, or scope information. The reader must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_reorder_internal_squadsC
POST /api/internal-squads/actions/reorder Reorder internal squads Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it only echoes the HTTP verb ('POST .../reorder') and a controller tag. It says nothing about permissions required, whether the items list must be exhaustive, what happens to squads not included, or reversibility of the new ordering. The schema's 'confirm' description hints at a preview behavior but that is not part of the description.
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 reorder purpose is front-loaded and the text is short, but it wastes space on a literal endpoint string and a 'Tags: Internal Squads Controller' line that carry no selection value for an agent.
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 mutating tool with a nested required payload, no annotations, and no output schema, the description is too thin. It omits prerequisite context, payload semantics, and the confirmation/preview behavior the schema implies, leaving the agent under-informed for a state-changing 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 documented, but the required nested 'items' payload (uuid + viewPosition pairs) has no textual explanation anywhere. The description adds zero parameter meaning beyond the schema, so it fails to compensate for the undocumented items structure.
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: 'Reorder internal squads', which is clear and distinct from read/update/delete siblings like internal_squad_get_internal_squads or internal_squad_update_internal_squad. However, it never explicitly contrasts itself with the near-identical sibling external_squad_reorder_external_squads or the many other reorder_* tools, so an agent must infer the distinction from the name alone.
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, what preconditions apply, or which alternatives exist. The only usage-relevant text is in the schema-level 'confirm' parameter description, not in the tool description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_set_tagsC
PATCH /api/internal-squads/tags Set tags of Internal Squad Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden, and it delivers almost nothing: PATCH implies mutation, but it never states that existing tags are overwritten, whether the operation is reversible, or what the response contains. The confirm/preview behavior is documented only in the schema field, not in the description.
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?
Only the middle sentence earns its place; the raw endpoint path and the 'Tags: Internal Squads Controller' line are generator noise that consume space without informing an agent. What remains is under-specified rather than 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 mutation tool with a nested required body object, no annotations, and no output schema, the description is far too thin. An agent cannot determine overwrite semantics, permission requirements, or the effect of omitting confirm from the description 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?
Schema coverage is roughly 50%: the 'confirm' field has a description, but the entire nested body (uuid, tags) has none. The description adds no semantics at all — not the tag format, the 10-item cap, or that uuid must reference an existing internal squad — so it fails to compensate 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 line 'Set tags of Internal Squad' states a verb and resource, but that is the only informative sentence — the REST path and the OpenAPI controller tag are boilerplate. It does not clarify that setting replaces the entire tag list (rather than adding to it), and it does not distinguish itself from the many sibling '*_set_tags' tools beyond the resource name.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as internal_squad_get_tags (read the current tags) or the add/remove-users tools. The agent must infer the workflow entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_stats_get_internal_squad_usageB
GET /api/bandwidth-stats/internal-squads/{uuid}/usage Get internal squad users traffic usage for a period Returns users whose total usage over the period on the given nodes is >= minTotalBytes, scoped to the nodes reachable via the internal squad inbounds. Underlying usage data is flushed to the database roughly every 2 minutes. Tags: Bandwidth Stats Controller Пагинация через query-параметры: start, limit.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (YYYY-MM-DD) | |
| uuid | Yes | Internal squad UUID | |
| limit | No | Number of users to return, no more than 1000 | |
| start | Yes | Start date (YYYY-MM-DD) | |
| cursor | No | Pass the nextCursor from the previous response. Omit on the first request. | |
| minTotalBytes | No | Only include users whose total usage over the period is >= this (bytes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the eventual-consistency window ('usage data is flushed to the database roughly every 2 minutes'), the node scoping rule, and the population of returned users, which goes beyond the schema. It omits auth/permission requirements, response shape, and pagination response behavior (e.g. nextCursor), so it is only partially complete for a no-annotation 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?
The core purpose is front-loaded, but the entry is a mixed bag: an HTTP route line, a tags line, and a trailing Russian-language sentence ('Пагинация через query-параметры: start, limit.') break structure and language consistency without adding much 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 6-parameter, no-annotation, no-output-schema read endpoint, the description covers the semantics of the returned set and data freshness, which is the important part. It leaves the agent without return-format guidance (what fields per user, how cursor/nextCursor is surfaced) and without any indication of auth requirements.
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 the baseline is 3; the description restates the minTotalBytes filter and scoping condition without adding syntax or format detail. Its pagination note is also mildly inaccurate – it names 'start' (a date field) and 'limit' as the pagination query params while the schema's actual cursor token is 'cursor' – which slightly muddies rather than clarifies the 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 verb and resource ('Get internal squad users traffic usage for a period') and even pins the HTTP route, so the purpose is unambiguous. It does not, however, differentiate itself from near-identical siblings such as internal_squad_stats_get_internal_squad_user_usage or internal_squad_get_internal_squad_usage, which an agent could easily confuse.
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 rather than stated: the period requirement and the minTotalBytes threshold hint at when the tool is appropriate, and the ~2 minute flush interval hints at when results may be stale. There is no explicit when-to-use, no exclusions, and no routing to the very similar sibling usage endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_stats_get_internal_squad_user_usageC
GET /api/bandwidth-stats/internal-squads/{squadUuid}/users/{userId}/usage Get a single user daily traffic usage on the internal squad nodes for a period Returns users whose total usage over the period on the given nodes is >= minTotalBytes, scoped to the nodes reachable via the Internal Squad inbounds. Every day in the range is present (zero-filled). Underlying usage data is flushed to the database roughly every 2 minutes. Tags: Bandwidth Stats Controller Пагинация через query-параметры: start.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (YYYY-MM-DD) | |
| start | Yes | Start date (YYYY-MM-DD) | |
| userId | Yes | ||
| squadUuid | Yes | Internal squad UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose genuinely useful traits: zero-filled days across the range and an ingestion lag of roughly 2 minutes before data is flushed. It does not state permissions/auth requirements, response shape, or the semantics of the minTotalBytes threshold it references.
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 purpose is front-loaded and the HTTP route line is acceptable, but the trailing 'Tags: ...' line and the Russian pagination sentence ('Пагинация через query-параметры: start') are boilerplate with no bearing on this tool, since the only query params are start/end. Wasteful tail dilutes an otherwise compact description.
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 4-required-parameter read tool with no annotations and no output schema, the description covers the return concept (daily usage, zero-filled) and freshness lag, which is helpful. It still leaves the response structure, the meaning of userId, and the nonexistent minTotalBytes filter unresolved.
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 75%, but userId is a bare number with no description and the description never explains it. Worse, the description advertises a minTotalBytes filter that does not exist among the four declared parameters (additionalProperties is false), so it actively misleads about the callable surface.
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 ('Get a single user daily traffic usage on the internal squad nodes for a period') and names the HTTP route, so the core operation is unambiguous. However, the very next sentence shifts to 'Returns users whose total usage ... is >= minTotalBytes', which describes a plural, threshold-filtered list rather than a single-user lookup, muddying what the tool actually returns.
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 guidance on when to prefer this over the near-identical siblings internal_squad_stats_get_internal_squad_usage, internal_squad_get_internal_squad_usage, or bandwidth_stats_nodes_get_stats_node_users_usage. The agent is left to infer the distinction from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
internal_squad_update_internal_squadC
PATCH /api/internal-squads Update internal squad Tags: Internal Squads Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden, yet it discloses nothing about behavior beyond the implied mutation. It does not state what fields are updated, whether changes are reversible, whether permissions are required, or what the response contains.
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 text is short but consists of raw OpenAPI boilerplate (HTTP verb, path, controller tag) that adds no value an agent can act on, so brevity here reflects under-specification rather than effective concision.
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 mutating tool with no annotations, no output schema, nested body object, and partial parameter coverage, the description is far too thin to be complete. Critical context such as the confirm gate and updatable fields is absent.
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 only 50% schema description coverage, the description should compensate for undocumented fields, but it says nothing about name, uuid, or inbounds. Only the confirm parameter carries meaning, and that comes from the schema, not 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?
"Update internal squad" restates the tool name almost verbatim, adding essentially no information beyond what the identifier already conveys. The PATCH path is the only marginally distinguishing detail, but there is no differentiation from siblings like external_squad_update_external_squad or config_profile_update_config_profile.
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 when-to-use guidance, no mention of prerequisites, and no routing to alternative squad tools (e.g. add_users, set_tags, reorder). The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keygen_generate_keyB
GET /api/keygen Get SECRET_KEY for Remnawave Node Tags: Keygen Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does not say whether this generates a brand-new secret (potentially invalidating previously issued node keys) or simply returns the existing one, nor does it state required permissions or whether the operation is safe/idempotent despite the 'generate' name.
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 lines with no padding, though the raw endpoint 'GET /api/keygen' and the 'Tags: Keygen Controller' metadata are noise that precedes the actual purpose, so the useful content is not fully 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 annotations and no output schema, the description is the only source of behavioral truth, yet it omits the key questions for a key-material endpoint: is this a read or a rotation, what is returned, and does calling it affect existing nodes. That is a meaningful gap for a 0-param 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?
The tool takes zero parameters, so there is nothing for the description to clarify beyond the schema. The baseline for a parameter-less tool applies.
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: it turns 'GET /api/keygen' into 'Get SECRET_KEY for Remnawave Node', so an agent knows it retrieves a secret key for a node. However, it does not differentiate from the similarly named sibling system_get_x25519_keypairs, which is also about retrieving cryptographic keys.
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 call this versus alternatives such as system_get_x25519_keypairs, no prerequisites, and no stated context. The agent is left to infer usage entirely from the one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metadata_get_node_metadataC
GET /api/metadata/node/{uuid} Get node metadata Tags: Metadata Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses essentially nothing beyond the HTTP route: it does not say what metadata fields are returned, what happens when a node has no metadata (empty object vs 404), or whether any permission is required. For a metadata read with zero structured hints, this is a real gap.
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 purpose is front-loaded in an extremely short block, but the OpenAPI artifacts ('GET /api/metadata/node/{uuid}' and 'Tags: Metadata Controller') consume the majority of the text without adding information an agent can act on.
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, no annotations, and an undocumented parameter, the description is too thin for an agent to call this confidently or interpret the result; it should at minimum describe the returned metadata shape and the not-found behavior.
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 uuid parameter, and the description only echoes it as {uuid} in the path template. It does not clarify that this is the node's UUID or how to obtain it, so it barely compensates for the schema 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?
States a clear verb+resource ('Get node metadata') and implies scoping by the {uuid} path parameter, which distinguishes it from metadata_get_user_metadata and metadata_upsert_node_metadata in the sibling list. The core purpose is legible even though the raw HTTP route and 'Tags: Metadata Controller' line add no meaning.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as metadata_upsert_node_metadata (write) or metadata_get_user_metadata (user-scoped variant). The agent must infer everything from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metadata_get_user_metadataC
GET /api/metadata/user/{userId} Get user metadata Tags: Metadata Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. The 'GET' verb implies a read, but it says nothing about authentication, what happens when a userId has no metadata, or the response shape, and there is no output schema to fall back on.
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?
Very short and front-loaded, but 'Tags: Metadata Controller' and the raw path template are scaffolding rather than useful description text. Nothing is misleading, yet the brevity here reflects under-specification as much as efficiency.
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 tool with no annotations and no output schema, the description omits the return-value behavior, error/empty-metadata semantics, and auth requirements that an agent would need. Given the complexity signals, it is materially incomplete.
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 userId parameter; the only hint is the {userId} path placeholder, which merely restates the schema name. Nothing explains the format, range, or that it references an existing user, so the description does not compensate 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?
States a specific verb ('Get') and resource ('user metadata') scoped to a userId, which distinguishes it from metadata_get_node_metadata and metadata_upsert_user_metadata by name. It does not explicitly contrast with those siblings, but the intent 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?
No guidance on when to use this versus metadata_get_node_metadata or metadata_upsert_user_metadata, and no prerequisites (e.g., that the user must exist or that metadata is optional) are stated. The agent is left to infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metadata_upsert_node_metadataC
PUT /api/metadata/node/{uuid} Update or create Node Metadata Tags: Metadata Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, yet it only restates the HTTP method and a tag label. It never mentions that this is a non-GET operation requiring confirm:true (the tool returns a preview otherwise), nor any auth/permission requirement or what the upsert replaces versus merges.
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 short and front-loads the endpoint, but the line 'Tags: Metadata Controller' is scaffolding noise that adds nothing for an agent. Overall brief rather than genuinely efficient.
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 mutation tool with no annotations, no output schema, and a nested free-form body, the description omits critical behavior: the confirm/preview gate on non-GET calls, the shape of the metadata payload, and any error/response expectations. An agent could not call this correctly on the description 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?
Schema description coverage is only 33% (only 'confirm' is documented, and in Russian). The description adds no meaning for uuid or the free-form nested 'metadata' object, so it fails to compensate for the undocumented parameters, including what keys the metadata map accepts.
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 gives a specific verb ('Update or create') and resource ('Node Metadata') plus the concrete endpoint PUT /api/metadata/node/{uuid}. The node-vs-user distinction is implicit in the name and path, and siblings metadata_upsert_user_metadata / metadata_get_node_metadata make the target clear, though the description never states the differentiation itself.
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 over metadata_get_node_metadata or metadata_upsert_user_metadata, nor any prerequisite/context. The only routing signal is the HTTP verb embedded in the raw path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metadata_upsert_user_metadataC
PUT /api/metadata/user/{userId} Update or create User Metadata Tags: Metadata Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| userId | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that without confirm:true the call returns a preview and does not execute (that key behavior lives only in the 'confirm' param schema), nor does it state that upsert overwrites existing metadata. The 'Tags: Metadata Controller' line is generated noise.
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?
Very short, but the content is mostly a raw HTTP path plus an auto-generated 'Tags:' line rather than purpose-built guidance. Nothing is front-loaded as a use case.
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 annotations, no output schema, a nested free-form body and a confirm-gated preview mechanism, the description leaves almost everything about behavior and payload structure to be guessed.
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 33% and only the 'confirm' param is documented, but the description adds nothing about userId or the arbitrary body.metadata payload. With a nested, free-form metadata object whose semantics (keys, merge vs replace) are undocumented anywhere, this is a real 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?
States a verb+resource ('Update or create User Metadata') plus a raw HTTP route for context. It doesn't differentiate from the sibling metadata_upsert_node_metadata or clarify what metadata means here, so it's clear but under-specified.
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 when-to-use guidance, no mention that siblings metadata_get_user_metadata / metadata_upsert_node_metadata exist or how to choose between them. The agent must infer the scope from the route string alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_integration_create_integrationC
POST /api/node-integrations Create Node Integration Tags: Node Integrations Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It discloses nothing beyond the HTTP verb — no auth requirements, no side effects, no mention of the two-phase confirm preview behavior documented only in the schema's 'confirm' param. A POST create with a required untyped 'config' object deserves far more 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?
'POST /api/node-integrations / Create Node Integration / Tags: Node Integrations Controller' is essentially three restatements of the same fact plus an auto-generated tag line. It's short but the content is redundant scaffolding, not front-loaded useful 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?
A mutation tool with a nested body, no annotations, no output schema, and 50% param coverage. Nothing explains the confirm/preview protocol, the shape of 'config', or what success returns. The definition is barely adequate to disambiguate the 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%; only the 'confirm' param has a description (in Russian, explaining the preview gate). The description adds zero parameter meaning — it never mentions name, config, description, or confirm. For a nested body object with an open-ended additionalProperties config, this is a real 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 restates the tool name ('Create Node Integration') plus the HTTP method and path, which gives a clear verb+resource but no differentiation from siblings like node_integration_update_integration or node_integration_get_all_integrations. It's a bare CRUD-create statement with no indication of what a 'node integration' actually is.
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 when-to-use guidance, no prerequisites, no mention of the confirm/preview flow that the schema itself hints at. The agent gets no routing help among the many node_* and node_integration_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_integration_delete_integrationC
DELETE /api/node-integrations/{uuid} Delete Node Integration Tags: Node Integrations Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full behavioral burden, yet it only states the HTTP method. It does not disclose that this is irreversible, what happens to any associated resources, whether auth is required, or what the response looks like. The only non-trivial behavioral detail (the confirm preview flow) lives in the schema, not the description.
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 content is minimal but not concise in the useful sense: it is a raw endpoint line, a redundant title, and a tag line, none of which front-loads purpose or constraints. It is under-specified rather than tight.
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 no annotations and no output schema, an agent needs confirmation semantics and irreversibility cues in the description. Those are missing; the description is little more than an HTTP signature.
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?
Two parameters with 50% schema coverage: 'uuid' is documented only by its format/pattern in the schema, and 'confirm' has a substantive schema description in Russian that explains the preview behavior. The description adds no parameter meaning at all, so it fails to compensate for the half-documented surface.
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 includes the raw HTTP verb and route ('DELETE /api/node-integrations/{uuid}') plus a title 'Delete Node Integration', which does identify the action and resource. But it is essentially a restatement of the endpoint rather than a description, and it distinguishes itself from siblings only via the name, which the agent already has. It is sufficient but not a genuine clarification.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as node_integration_get_integration_by_uuid or node_integration_update_integration. Nothing tells the agent under what circumstances this destructive operation should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_integration_get_all_integrationsC
GET /api/node-integrations Get all Node Integrations Tags: Node Integrations Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It states a GET, implying a read-only, non-destructive operation, but says nothing about pagination, result size, auth requirements, or any filtering behavior. For a 0-param collection endpoint in an API with many similar list tools, this is thin.
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 lines: the HTTP line, the purpose line, and a Tags line. The Tags line ('Node Integrations Controller') is autogenerated noise that conveys nothing to an agent, and the raw path is low-value packaging. Not bloated, but not every line 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-param list endpoint there's a plausible floor argument, but with no annotations and no output schema, the description never tells the agent what a Node Integration is, what the response shape looks like, or how it relates to sibling tools like node_integration_get_integration_by_uuid. Given the dense sibling set, this leaves real 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?
Zero parameters, so baseline is 4. The description's claim that it returns ALL integrations is consistent with an empty input schema, adding a small but accurate signal about scope.
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: 'Get all Node Integrations', which distinguishes it from sibling mutations like node_integration_create_integration and node_integration_update_integration. The HTTP method/path line adds precision. It doesn't explicitly name the sibling it's the read-only counterpart to, but the verb+resource pairing 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?
No when-to-use or when-not-to-use guidance. The agent can infer it's a list operation from the verb, but nothing tells it when to reach for this rather than node_integration_get_integration_by_uuid for a single record, or why it would call this at all. Implicit context only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_integration_get_integration_by_uuidC
GET /api/node-integrations/{uuid} Get Node Integration by uuid Tags: Node Integrations Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing. The GET route implies a read operation, but there is no mention of auth requirements, error behavior for a missing/invalid UUID, or what a 'node integration' actually is. Only the implied read-only nature earns any credit.
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 short, but the three lines are a raw paste of HTTP verb, path, and a 'Tags:' annotation that adds nothing for an agent. Brevity is fine; the content mix is not front-loaded around what the tool actually returns or does.
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 tool with no output schema and no annotations, the description should at least say what a node integration represents and what the UUID identifies. Instead it is a mechanical route dump, leaving the agent to guess at the return payload and error 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 0% and the single 'uuid' parameter has no description in the schema. The description only exposes it via the path template '{uuid}', implying it is a path parameter, but adds no format, source, or lookup guidance beyond that.
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 ('Get Node Integration by uuid'), which is clearer than a bare title, but it is essentially a restatement of the tool name plus a raw HTTP route and Swagger tag. It makes no attempt to distinguish this from siblings such as node_integration_get_all_integrations or node_integration_update_integration beyond the word 'by uuid'.
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 node_integration_get_all_integrations, node_integration_update_integration, or node_integration_delete_integration, and no stated preconditions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_integration_update_integrationC
PATCH /api/node-integrations Update Node Integration Tags: Node Integrations Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing beyond 'PATCH'. It does not say whether the update is partial, what happens to omitted fields, what restartNodes does, or that permissions/auth are required. The only behavioral hint is the PATCH verb implying a partial update.
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 short but under-specified, and the trailing 'Tags: Node Integrations Controller' line is auto-generated noise that does not earn its place. It is not front-loaded with anything 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 mutation tool with no annotations, no output schema, and a nested body whose properties are mostly undocumented, this description is inadequate. It omits the fields that can be changed, expected permission requirements, and the effect of restartNodes, leaving the agent without enough to invoke it 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 50% (only the 'confirm' parameter is documented, and that lives in the schema, not the description). The nested body properties (name, uuid, config, description, restartNodes) have no descriptions, and the tool description adds no meaning about what any of them do.
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 verb and resource ('Update Node Integration') and adds the HTTP endpoint, so the purpose is identifiable. However, it is essentially a restatement of the tool name with no explanation of what a node integration is or which attributes are affected, and it does not distinguish itself from the sibling create/delete/get integration 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?
There is no guidance on when to use this tool versus alternatives such as node_integration_create_integration, node_integration_delete_integration, or node_integration_get_integration_by_uuid. No prerequisites or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_clone_node_pluginC
POST /api/node-plugins/actions/clone Clone Node Plugin Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: not that this is a mutating operation, what entity is created, whether it requires permissions, whether the clone is a deep or shallow copy, or whether it is reversible. Only the raw POST path hints at a write.
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 text is short, but a large share of it is auto-generated boilerplate (raw endpoint path, "Tags: Node Plugins Controller") that does not help an agent decide or invoke. It is not bloated, but the payload is thin.
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 mutating tool with a nested request body, no annotations, no output schema, and a partially undocumented parameter set, the description is far too thin. It omits what the clone returns and any destructive/side-effect context the agent would need.
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 nested cloneFromUuid has only format/pattern and no textual meaning, while confirm is documented in the schema itself (in Russian). The description adds nothing about either parameter, so it fails to compensate for the undocumented cloneFromUuid.
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 the operation ("Clone Node Plugin") and gives the underlying HTTP route, so the verb and resource are identifiable. However, it offers no scope detail — what a clone produces, whether the copy is independent, or what distinguishes it from sibling node_plugin_create_config or node_plugin_sync_node_plugin. It is minimally viable but largely restates the tool name.
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 the many node-plugin siblings (create_config, sync_node_plugin, update_config), nor any prerequisites or conditions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_create_configC
POST /api/node-plugins Create Node Plugin Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it delivers only the HTTP method and path. For a mutation (POST) it does not say whether creation is idempotent, what happens on duplicate name, whether the plugin is immediately active, or what auth/permissions are required. The confirm/preview gate is documented only in the schema, not the description.
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 short, but the content is boilerplate rather than substance: the raw "POST /api/node-plugins" line and "Tags: Node Plugins Controller" consume the whole description without adding agent-facing value. Front-loading a useless route string leaves no room for the information an agent actually needs.
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?
A mutating tool with a required nested object, no annotations, no output schema, and no explanation of the confirm-preview flow is significantly under-described. The description supplies none of the missing context, leaving the agent to infer behavior from the schema constraints 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?
Schema description coverage is only 50%. The single documented parameter (confirm) is explained in the schema itself, while the nested `body` object's `name` field has constraints (pattern, 2-30 chars) but no prose meaning, and the description adds nothing about the required body shape. It does not compensate 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 does name a specific verb and resource ("Create Node Plugin") and the sibling namespace (node_plugin_get_all_configs, node_plugin_update_config, node_plugin_clone_node_plugin) lets an agent separate create from read/update/clone. However, it is a bare HTTP endpoint dump with no statement of what a node plugin config actually is or contains, so it is only minimally directive.
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 when-to-use, when-not-to-use, or alternative routing. The agent is not told how this differs from node_plugin_clone_node_plugin (which also produces a plugin) or node_plugin_create_shared_list, nor what prerequisites exist. The verb "Create" is the only, implied, guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_delete_configC
DELETE /api/node-plugins/{uuid} Delete Node Plugin Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It does not state that deletion is permanent/irreversible, what permissions are required, or what the response contains. The only behavioral hint (confirm preview semantics) lives in the schema of the confirm parameter, not the description.
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?
Very short, which is good, but 'Delete Node Plugin' and the 'Tags:' line are filler that restate the name/title. It is not wasteful in length but also not front-loaded with useful 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 destructive tool with no annotations and no output schema, the description should at minimum warn about irreversibility and the confirm-preview behavior. It offers none of that, leaving an agent likely to call without understanding it returns a preview unless confirm:true.
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%: uuid is fully documented by the schema (format/pattern), and confirm has a rich schema description explaining the preview-vs-execute behavior. The description adds no parameter meaning beyond what the schema already provides, so baseline 3 applies.
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 the verb 'Delete' and resource 'Node Plugin' plus the HTTP route DELETE /api/node-plugins/{uuid}, so the operation is identifiable. But it's largely a restatement of the name and route with no scope details to distinguish it from siblings like node_plugin_delete_shared_list or node_plugin_update_config.
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 indication of when to use this tool versus alternatives, no caveats about irreversibility, and no note that the sibling node_plugin_get_all_configs should be consulted first. The 'Tags: Node Plugins Controller' line is metadata, not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_get_all_configsC
GET /api/node-plugins Get all Node Plugins Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only implies read-only via the 'Get' verb, and says nothing about pagination, filtering, result volume, or whether it returns configs versus plugin records.
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 short and front-loaded, but the raw HTTP path and 'Tags: Node Plugins Controller' line are structured-metadata noise that adds no value to an agent deciding how to call the tool.
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 endpoint with no output schema and no annotations, the description leaves the agent without return-shape or scoping information. It is not complete enough to call confidently beyond guessing from the name.
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 baseline of 4 applies. There is nothing for the description to compensate for.
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 verb+resource ('Get all Node Plugins'), which is better than a tautology. However, it doesn't differentiate from close siblings like node_plugin_get_config_by_uuid or node_plugin_get_all_shared_lists, and the tool name ('get_all_configs') vs. the stated resource ('Node Plugins') is not reconciled.
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 when-to-use guidance, no prerequisites, and no mention of alternatives. The agent must infer from the name alone that this is the list-everything variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_get_config_by_uuidC
GET /api/node-plugins/{uuid} Get Node Plugin by uuid Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The 'GET' prefix weakly implies a read-only operation, but nothing is said about authentication requirements, error behavior for unknown UUIDs, or whether the traversal returns a single config or a plugin list.
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?
Very short, which is good, but it wastes the opening on a raw HTTP verb and endpoint plus a 'Tags: Node Plugins Controller' boilerplate line that adds no value for an agent.
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 this could be nearly complete, but with no annotations, no output schema, and no parameter documentation, the agent gets no confirmation of what is returned or what the UUID identifies.
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 the single UUID parameter. The path template '{uuid}' does hint that uuid is a path parameter, but no meaning is added beyond that; the format/pattern constraint lives only 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 says 'Get Node Plugin by uuid', which is essentially a restatement of the tool name (node_plugin_get_config_by_uuid). It does convey a single-resource retrieval, but it does not differentiate this from siblings like node_plugin_get_all_configs or distinguish 'config' vs other node-plugin 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?
There is no guidance on when to use this versus node_plugin_get_all_configs or when to prefer a different lookup. No preconditions, no alternatives, and no statement of what the UUID must refer to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_get_tagsB
GET /api/node-plugins/tags Get tags of Node Plugins Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and mostly doesn't: it does not state whether the call requires authentication, whether results are paginated or sorted, or what a tag record contains. It only exposes the raw REST route, which conveys read-only intent but little else.
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 useful content ('Get tags of Node Plugins') is front-loaded in a single line, but the raw 'GET /api/node-plugins/tags' route and the 'Tags: Node Plugins Controller' swagger artifact add noise without informing invocation.
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 tool this is minimally adequate, but with no output schema and no annotations the description should say what comes back (a list of tag strings vs. tag objects) and any auth requirement. As written the agent knows the endpoint but not the shape of the result.
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 takes zero parameters, so there is nothing for the description to clarify beyond what the empty schema shows. Baseline 4 applies 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?
States a clear verb+resource ('Get tags of Node Plugins') and the 'of Node Plugins' scope distinguishes it from the many other tag-getter siblings (hosts_get_hosts_tags, nodes_get_nodes_tags, external_squad_get_tags). It stops short of explicitly routing the agent away from those siblings, so it is clear but not comparative.
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 when-to-use guidance, no mention of prerequisites (auth, permissions), and no reference to the sibling tag endpoints it overlaps with. The GET verb implies a safe read, but the agent gets no decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_plugin_executorC
POST /api/node-plugins/executor Execute command on node plugins Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that this is a mutating command (blocking/unblocking IPs, recreating tables), the required confirmation flow, permission requirements, or side effects. The only behavioral hint ('Execute command') is vague.
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 very short and front-loaded, which is good, but the brevity is under-specification rather than efficiency. The 'Tags' line is metadata that does not help an agent invoke the tool correctly.
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?
This is a complex command-execution tool with a deeply nested polymorphic body and a confirm flag, yet the description says nothing about the available commands, target-node selection, or the confirmation gate. No output schema exists, so the description should have carried more of the load.
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 around 50% (body is documented via the schema's nested properties, while confirm is documented by its own description). The description itself adds no parameter semantics, but the schema plus its inline descriptions largely cover the body structure, making a baseline 3 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 is essentially the HTTP route and a restatement of the tool name: "POST /api/node-plugins/executor / Execute command on node plugins". It does not say what commands are executable (blockIps, unblockIps, recreateTables are only in the schema) nor distinguish this from siblings like node_plugin_sync_node_plugin or nodes_restart_node. It is close to a tautology of the name.
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 when-to-use, when-not-to-use, or alternative routing is given. The agent is left to infer that this performs node-plugin operations from the schema enum values alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_reorder_node_pluginsC
POST /api/node-plugins/actions/reorder Reorder Node Plugins Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden and fails it. The 'POST' verb is the only behavioral signal, implying a write/mutation, but the description says nothing about the required confirm:true confirmation flow, permissions, whether ordering is partial or must cover all plugins, or what the preview response contains — all of which live only 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?
The text is short, but it is raw OpenAPI boilerplate: endpoint path plus 'Tags: Node Plugins Controller' is noise that earns no place. It is not misleading, just under-loaded rather than truly concise in the informative sense.
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 nested-body mutation with no annotations and no output schema, the definition is incomplete. The agent is not told the ordering semantics, the confirmation requirement (beyond the schema), or the effect of the operation, so it cannot invoke the 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 50% (only 'confirm' is documented) and the description compensates for none of the gap. It never mentions that the body requires an array of {uuid, viewPosition} items or explains the semantics of viewPosition as a relative ordering index, which is the core input meaning an agent must understand.
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 verb and resource ('Reorder Node Plugins') plus the HTTP route, which is enough to know it mutates plugin ordering. However, it is essentially a restatement of the tool name with no explanation of what 'reorder' does (ordering by viewPosition index) and no differentiation from sibling reorder tools like nodes_reorder_nodes, hosts_reorder_hosts, or config_profile_reorder_config_profiles.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as node_plugin_update_config. The only usage hint anywhere is the schema-level 'confirm' parameter note, which is not part of the description text. The agent gets no routing information from the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_set_tagsC
PATCH /api/node-plugins/tags Set tags of Node Plugin Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It exposes the HTTP verb PATCH, which hints at a mutation, but never states that tags are replaced wholesale, whether the operation is idempotent, what permissions it needs, or what the confirm:true gate does (that detail lives only in the schema's Russian-language parameter description).
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 short and front-loaded, but two of the three lines are low-value: the raw path 'PATCH /api/node-plugins/tags' duplicates the operation, and 'Tags: Node Plugins Controller' is a doc-grouping artifact with no agent 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?
This is a mutation tool with no annotations and no output schema, so the description should explain replacement semantics, the confirm gate, and permissions. It explains none of these, leaving the agent under-informed about a destructive-by-nature tag overwrite.
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 two body fields (uuid, tags) have no descriptions at all. The description adds no meaning about parameter behavior — e.g. whether 'tags' replaces or appends, or what the uuid identifies — so it fails to compensate 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 gives a clear verb+resource: 'Set tags of Node Plugin'. An agent knows it mutates a node plugin's tag set, but it does nothing to distinguish this from the sibling node_plugin_get_tags or the many analogous set_tags tools (config_profile_set_tags, external_squad_set_tags, etc.).
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 versus the read-side sibling node_plugin_get_tags or the other per-resource tag setters. Usage is only weakly implied by the name, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_sync_node_pluginC
POST /api/node-plugins/actions/sync Sync Node Plugin to nodes Push the current plugin config, including referenced shared lists, to every connected node this plugin is active on. Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It usefully discloses that this is a POST operation that pushes the current plugin config and referenced shared lists to every connected node where the plugin is active, which adds scope beyond the name. However, it does not describe permissions, reversibility, side effects, failure behavior, or the confirm/preview flow beyond what is 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?
The description is short and front-loaded, giving the endpoint and a direct sync statement before elaborating on scope. The trailing 'Tags: Node Plugins Controller' line is unnecessary metadata, which keeps it from a perfect 5, but overall it is efficient.
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 mutation tool with no annotations, no output schema, and only 50% schema description coverage, the description is incomplete. It explains the core action but omits when to use the tool, what the required uuid represents, and behavioral details such as permissions, side effects, or how confirm:true affects execution.
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 confirm parameter has a schema description, but the required uuid parameter has none. The tool description does not mention uuid or confirm and only loosely implies 'this plugin' without explaining that uuid identifies the plugin to sync. It therefore fails to compensate for the incomplete 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 states a specific verb ('Sync'), resource ('Node Plugin'), target ('nodes'), and scope ('every connected node this plugin is active on'). It distinguishes from generic config updates by specifying that the current plugin config, including referenced shared lists, is pushed. It does not explicitly contrast with the sibling sync_shared_list tool, so a 4 rather than 5 is appropriate.
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 no explicit guidance on when to use this tool versus alternatives such as node_plugin_sync_shared_list or other plugin mutation tools. Usage is only implied by the imperative 'Sync Node Plugin to nodes'. No prerequisites, exclusions, or routing advice are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_plugin_update_configC
PATCH /api/node-plugins Update Node Plugin Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet adds nothing beyond the route. PATCH implies mutation, but nothing is said about required permissions, reversibility, or what happens to unspecified config fields. The confirm-parameter preview behavior is only documented in the schema, not the description.
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?
Very short, but a large share is machine-generated noise: the raw route line and 'Tags: Node Plugins Controller' carry no value for an agent selecting the tool. Front-loading the verb+resource is the only useful part.
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?
A mutation tool with no annotations, no output schema, a required nested body object, and a required uuid warrants far more context than this. The description is effectively inadequate 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 50%, and the description adds zero parameter meaning. The required uuid, optional name (with pattern/length constraints), and the opaque 'pluginConfig' object are undocumented, so the description fails to compensate 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?
States a verb (Update) and a resource (Node Plugin), and the HTTP verb PATCH signals a partial update. However it does not clarify what part of the plugin is being updated (config vs shared list vs tags) nor distinguish it from siblings like node_plugin_set_tags or node_plugin_update_shared_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?
No guidance on when to use this tool versus alternatives such as node_plugin_create_config, node_plugin_clone_node_plugin, or node_plugin_update_shared_list. The agent must infer usage entirely from the name and route.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_bulk_nodes_actionsC
POST /api/nodes/bulk-actions Perform actions for many nodes Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing. It does not mention that the operation is destructive/state-changing, that DISABLE or RESTART affect live nodes, or how confirm gating works (that info lives only in the schema's confirm field, not the description). Only the bare POST/bulk fact is conveyed.
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 text is short and front-loaded, but a meaningful share of it is boilerplate: the raw endpoint path 'POST /api/nodes/bulk-actions' and 'Tags: Nodes Controller' add little agent value. The one substantive sentence is appropriately brief.
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 bulk mutation tool with no annotations, a nested request body, 50% schema coverage, and no output schema, the description is too thin. It omits the valid actions, the confirmation workflow, and the impact of the operations, leaving the agent under-informed for a state-changing 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%: confirm is documented in the schema, but the nested body fields uuids and action have no descriptions. The description adds no meaning about what a 'body' is, that uuids must be node UUIDs, or what each action does, so it fails to compensate 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 verb ('Perform actions') and a resource ('nodes') with a bulk scope, which distinguishes it broadly from single-node tools like nodes_restart_node and from nodes_bulk_nodes_update. However, 'actions' is left undefined in the prose even though the schema enum reveals ENABLE/DISABLE/RESTART/RESET_TRAFFIC, so the agent must open the schema to learn what the tool actually 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?
There is no when-to-use guidance and no alternatives named. The description does not tell the agent when to prefer this bulk action tool over nodes_bulk_nodes_update, nodes_restart_all_nodes, or the individual nodes_enable_node/nodes_disable_node tools, leaving routing entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_bulk_nodes_updateC
POST /api/nodes/bulk-actions/update Update many nodes Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a bulk mutation ('Update many nodes') but discloses nothing about permissions, whether fields are merged or replaced, reversibility, or partial-failure behavior. The confirm/preview safety mechanism lives only in the schema, not the description.
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 short and front-loaded, but the raw HTTP endpoint line and the 'Tags: Nodes Controller' metadata are largely redundant with the tool name and add little. It is terse without being genuinely economical.
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 bulk mutation with no annotations, no output schema, nested objects, and only 50% parameter description coverage, the description is grossly incomplete. It omits the updatable field set, the bulk scope semantics, and any operational behavior an agent needs to call it safely.
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 only 50% schema description coverage, the description is expected to compensate but adds nothing about the parameters. It never names the updatable fields (note, tags, countryCode, providerUuid, activePluginUuid, integrationUuids, consumptionMultiplier) that an agent must populate inside the required body object.
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 phrase 'Update many nodes' gives a clear verb and resource, so the core purpose is identifiable. However, it does not distinguish this bulk update from siblings like nodes_update_node (single-node update) or nodes_bulk_nodes_actions, nor does it hint at what fields can be updated. Specific but undifferentiated.
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 bulk operation versus nodes_update_node or nodes_bulk_nodes_actions. The only usage-adjacent information is the 'bulk-actions' URL path, which an agent must infer from. No prerequisites or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_create_nodeC
POST /api/nodes Create a new node Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only implies mutation via "Create"/POST. It does not disclose that creation requires a config profile, whether the new node starts enabled, permissions needed, or that omitting confirm:true returns a dry-run preview instead of executing. For a mutating tool with zero annotation coverage this is a significant gap.
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 short and front-loaded with the action, which is good, but the raw endpoint path and the "Tags: Nodes Controller" line are auto-generated filler that add no decision-relevant value. Brevity here reflects under-specification rather than discipline.
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 operation with a deeply nested, largely undocumented request body, no output schema, no annotations, and a hidden confirmation/preview mechanism, the description is essentially empty. An agent cannot reliably call this tool correctly from what is written.
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 nothing about either parameter. The confirm parameter happens to be documented in the schema, but the large nested body object (name, address, configProfile, ips, tags, traffic settings, etc.) has no field-level documentation, and schema description coverage is only 50%. The description does not compensate for that 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 ("Create a new node") and adds the raw endpoint POST /api/nodes, so the basic action is identifiable. However, it offers no differentiation from the many sibling node operations (nodes_update_node, nodes_delete_node, nodes_bulk_nodes_actions) and no hint of what a "node" is or what creating one entails. It is the minimum viable statement of purpose.
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, no prerequisites (e.g. that a configProfile and an active config profile UUID must exist first), and no mention of the confirm gate. The agent is left to infer everything from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_delete_nodeC
DELETE /api/nodes/{uuid} Delete a node Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and falls well short: it does not state that deletion is irreversible, what happens to users/connections bound to the node, or whether authorization is required. The only behavioral detail (the confirm preview flow) lives in the schema's confirm parameter, not in the description.
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 short and front-loaded, but two of its three lines (the raw endpoint and the Tags line) are boilerplate that restate the tool name or add nothing. It is under-specified rather than efficiently 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 mutation with no annotations, no output schema, and half its parameters undocumented, the description omits critical context: irreversibility, cascade effects on attached users, and the required confirm:true handshake that governs whether the call even executes.
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%: uuid has no description anywhere, and confirm's description is schema-side only. The description text adds no meaning about either parameter, so it fails to compensate 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 ('Delete a node') and even exposes the underlying HTTP method and path, so an agent knows exactly what operation this is. It does not differentiate from adjacent siblings such as nodes_disable_node or nodes_bulk_nodes_actions, which is the one gap keeping it from a 5.
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 instead of alternatives (disable vs delete vs bulk delete), nor any stated prerequisites such as whether the node must be disabled or drained first. The 'Tags: Nodes Controller' line is metadata, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_disable_nodeC
POST /api/nodes/{uuid}/actions/disable Disable a node Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about side effects: whether disabling takes the node offline, affects connected users, whether it is reversible via enable_node, or what permissions are required. Only the bare POST route hints that it is a mutation.
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 short and front-loaded with the endpoint then the purpose, which is fine. But the raw route line and 'Tags: Nodes Controller' add little value for an agent trying to decide whether to call the tool.
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 mutation tool with no annotations, no output schema, and only partial parameter coverage, the description is under-specified. It should disclose the effect of disabling a node, its reversibility, and the confirm-parameter behavior rather than relying on 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?
Schema description coverage is 50%, with the uuid parameter undocumented in the schema and no added meaning in the description beyond echoing it in the path template. The description does not compensate for the coverage gap or clarify the uuid's role in selecting the target node.
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 line 'Disable a node' states a specific verb (disable) and resource (node), which is clear enough to distinguish it from the sibling nodes_enable_node. However, it offers no elaboration or explicit sibling differentiation beyond the obvious antonym pairing.
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 such as nodes_enable_node, nodes_restart_node, or nodes_bulk_nodes_actions. It only states the HTTP route and repeats the action name, leaving usage context entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_enable_nodeC
POST /api/nodes/{uuid}/actions/enable Enable a node Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only restates the endpoint and the word 'enable'. It does not explain required permissions, side effects on connected users, reversibility, or whether a confirm step is mandatory beyond what the schema param already says.
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?
Very short and front-loaded with the endpoint path, but 'POST /api/nodes/{uuid}/actions/enable' and 'Tags: Nodes Controller' are low-value metadata that crowd out actual guidance. Not padded, but not efficiently worded for an agent.
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 mutating node operation with no annotations and no output schema, the description is too thin. It omits prerequisites, effect of enabling, error conditions, and the confirm-preview behavior (which lives only in the schema), leaving real gaps 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%; the confirm parameter is well documented in the schema itself, but the description adds no meaning to either parameter. The uuid param is self-evident as a UUID, so the schema does most of the work and the description contributes nothing.
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 (enable) and resource (node), plus the underlying endpoint POST /api/nodes/{uuid}/actions/enable. An agent can grasp the action immediately, though the description does nothing to position it against siblings like nodes_disable_node.
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 when-to-use guidance, no prerequisites (e.g. node must currently be disabled), and no reference to alternative tools such as nodes_bulk_nodes_actions or nodes_disable_node. The agent is left to infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_get_nodeC
GET /api/nodes/{uuid} Get node by UUID Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose authentication requirements, whether the operation is read-only (implied by GET but not stated), error behavior for missing UUIDs, or what data is returned. For a read tool with zero annotation coverage, this is a significant gap.
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 text is a raw HTTP route dump plus a boilerplate tag, not a purpose-built description. It is short but under-specified rather than concise; the route and tag lines add no value an agent can act on.
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 one required parameter, no annotations, no output schema, and 0% schema description coverage, the description is essentially empty of usable context. An agent cannot determine authentication needs, return shape, or error handling.
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%, and the single required parameter 'uuid' gets no explanation beyond its name. The description adds no meaning about UUID format, scope, or what the UUID identifies. With low schema coverage, 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 states a verb and resource ('Get node by UUID'), which is clear enough to distinguish from write siblings like nodes_update_node or nodes_delete_node. However, it restates the tool name and provides no further specificity about what a 'node' contains or how this differs from other node reads like nodes_get_nodes or system_get_nodes_metrics.
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 sibling list contains nodes_get_nodes (list all) and system_get_nodes_metrics, but the description never mentions when a single-node fetch is appropriate or what prerequisites exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_get_nodesC
GET /api/nodes Get nodes Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The 'GET' verb implies a safe read, but nothing is said about pagination, filtering, auth requirements, or response size for what is presumably a collection listing.
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 short, but the content is mostly redundant scaffolding (raw route plus a restatement of the name plus a 'Tags:' line) rather than front-loaded useful information. Nothing is wasted, but little is earned either.
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 collection-listing endpoint with no output schema and no annotations, the description says nothing about return shape, pagination, or ordering. An agent has no basis to decide between this and the numerous other node-related read 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 tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless definition.
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 adds a raw route ('GET /api/nodes') and 'Get nodes', which confirms it retrieves the nodes collection, but 'Get nodes' essentially restates the tool name and gives no scope or differentiation from siblings like nodes_get_node or system_get_nodes_metrics.
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 call this versus the many sibling node tools (nodes_get_node, nodes_get_nodes_tags, system_get_nodes_metrics). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_get_nodes_tagsC
GET /api/nodes/tags Get nodes tags Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the HTTP verb. It does not say whether tags are global or per-node, whether auth is required, or what the response contains.
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?
Very short and front-loaded, but two of the three lines are auto-generated noise (the raw path and 'Tags: Nodes Controller') that add no selection or invocation 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 zero-parameter read endpoint with no output schema, the definition is minimally adequate to call the tool. It nonetheless leaves the return shape and the meaning of a 'node tag' unexplained, which a single sentence could have fixed.
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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param tool is 4. No parameter-related text is needed or 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?
States a verb (GET) and a resource (nodes tags), and the 'nodes' qualifier does separate it from the many other *_get_tags siblings. However, 'Get nodes tags' largely restates the tool name, and the remaining lines are raw HTTP-path and controller boilerplate rather than an explanation of what a 'node tag' is.
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 when-to-use guidance at all, and no routing among the numerous sibling tag endpoints (users_get_users_tags, hosts_get_hosts_tags, node_plugin_get_tags, etc.). An agent must infer the distinction from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_profile_modificationC
POST /api/nodes/bulk-actions/profile-modification Modify Inbounds & Profile for many nodes Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It conveys only that this is a POST bulk mutation; it says nothing about whether changing active inbounds/profile affects live connections, whether the operation is reversible, what happens to nodes not listed, or what the confirm preview actually protects against.
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 short and front-loaded, but part of that brevity comes from raw endpoint and tag lines ('Tags: Nodes Controller') that carry little selection value. Adequate, not efficient in the sense of packing useful 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 bulk mutation tool with nested required objects, no annotations, and no output schema, the definition omits permissions, blast radius, and effect scope. An agent could invoke it correctly at the syntax level but has no basis for judging whether it should.
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%: the nested body (uuids, configProfile.activeInbounds, activeConfigProfileUuid) has no descriptions, and the description adds no meaning to them. Only the confirm parameter is documented in the schema, so the description fails to compensate for the undocumented majority of the payload.
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 gives a clear verb and resource: 'Modify Inbounds & Profile for many nodes', plus the underlying endpoint. It does not distinguish this tool from close siblings such as nodes_bulk_nodes_update or nodes_bulk_nodes_actions, so the agent cannot tell these apart from the text alone.
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 when-to-use guidance, no prerequisites, and no mention of the alternatives (nodes_bulk_nodes_update, nodes_bulk_nodes_actions) that an agent would need to choose between for bulk node changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_reorder_nodesC
POST /api/nodes/actions/reorder Reorder nodes Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses the POST endpoint, implying a write operation, but does not explain permissions, reversibility, or the confirmation/preview flow; the schema's confirm field describes some of that, but the description itself does not.
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 very short and does not ramble, but it is more under-specified than concise. It leads with the HTTP path rather than the action, and the 'Tags: Nodes Controller' line adds little decision 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 mutation tool with a required nested body, no annotations, and no output schema, the description is incomplete. It does not explain how ordering works, whether the array replaces all positions, or when confirmation is required.
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 adds no meaning about the nested body, the nodes array, uuid, or viewPosition. The confirm parameter has schema-level explanation, but the central reorder payload is left 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 description states a clear verb and resource: 'Reorder nodes'. It is understandable without opening the schema, but it does not differentiate this tool from the many sibling reorder tools beyond the resource name.
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, no prerequisites, and no exclusions. The only usage-adjacent information is the HTTP endpoint and a boilerplate tag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_reset_node_trafficC
POST /api/nodes/{uuid}/actions/reset-traffic Reset Node Traffic Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not state whether resetting traffic is irreversible, what counters get cleared, whether the node is disrupted, or what permissions are required. Only the HTTP method implies a mutation, which is the thinnest possible signal.
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 short, but the content is largely boilerplate: an OpenAPI path and a 'Tags: Nodes Controller' line that add little value for an agent. Brevity here reflects under-specification rather than disciplined economy.
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 mutation tool with a required identifier, no annotations, and no output schema, the description is too thin. It omits what the operation does to existing state, any side effects, and any confirmation/permission requirements beyond what the schema already notes for 'confirm'.
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%. The 'confirm' parameter is well documented in the schema itself (including the preview-not-sent behavior), but the required 'uuid' parameter has no description in either the schema or the description. The description adds no parameter meaning at all, so it fails to compensate 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 gives a specific verb+resource ('Reset Node Traffic') plus the HTTP endpoint, so the basic action is understandable. However, it is essentially a restatement of the tool name plus an OpenAPI path, and it does nothing to distinguish this from close siblings like nodes_restart_node or users_reset_user_traffic. Purpose is identifiable but not sharpened.
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 such as nodes_restart_node, nodes_restart_all_nodes, or the bulk/user reset-traffic siblings. No prerequisites, no exclusions, no context are given. The agent must infer everything.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_restart_all_nodesC
POST /api/nodes/actions/restart-all Restart all nodes Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and largely fails: it does not state that restarting all nodes is disruptive/downtime-inducing, what permissions are required, or what happens to active connections. The 'POST /api/nodes/actions/restart-all' line only weakly signals that this is a mutating 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?
It is short and front-loaded, but the raw route string and 'Tags: Nodes Controller' line are noise that consume space without adding decision-relevant information. No sentence here earns much beyond restating the 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 fleet-wide mutating operation with no annotations, no output schema, and an undocumented required parameter, the description omits critical context: impact/downtime, auth requirements, and the meaning of forceRestart. It is too thin for a destructive-scoped action.
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 required forceRestart boolean is undocumented in both schema and description, and the description says nothing about either parameter. Only the confirm parameter has schema-level explanation, so the description does not compensate for the gap on the required field.
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?
"Restart all nodes" states a verb and resource with the scope 'all', so the meaning is graspable, but it is essentially the tool name de-underscored and adds no differentiation from siblings like nodes_restart_node or nodes_bulk_nodes_actions. The route line adds only the HTTP method/path, not conceptual clarity.
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 versus nodes_restart_node (single node) or nodes_bulk_nodes_actions, nor any prerequisite or exclusion noted. The only extra text, 'Tags: Nodes Controller', is organizational metadata rather than usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_restart_nodeD
POST /api/nodes/{uuid}/actions/restart Restart node Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about the impact of a restart (disconnects active connections, downtime, forceRestart semantics), whether it requires confirmation, or that it is a destructive operation. For a restart action with zero annotation coverage, this is a serious gap.
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's short, but that brevity reflects under-specification rather than effective conciseness. The leading line is just a route/tag dump rather than a useful front-loaded summary of the action and its 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?
A mutation action tool with 3 parameters (including a nested required boolean), no annotations, no output schema, and no guidance on effect or confirmation. The definition is insufficient for an agent to call it correctly and safely.
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%. The schema documents `confirm` but leaves `uuid` and the required nested `body.forceRestart` undocumented in prose; the description adds no meaning for any parameter. It does not compensate 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 the HTTP method, path, and resource ('Restart node'), which tells the agent this restarts a specific node. However, it's essentially a restatement of the route plus a two-word phrase, with no differentiation from siblings like nodes_restart_all_nodes or nodes_bulk_nodes_actions. It's minimally clear but not more.
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 about when to use this tool versus nodes_restart_all_nodes, nodes_bulk_nodes_actions, or node lifecycle tools like nodes_disable_node / nodes_enable_node. The description offers no usage context at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_update_nodeC
PATCH /api/nodes Update node Tags: Nodes Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and fails to do so. The PATCH verb implies a partial update, but nothing is said about permissions, whether omitted fields are preserved, side effects on connected users/traffic accounting, or the confirm-preview flow that the schema hint implies.
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 short, but the content is pure generated noise ('Tags: Nodes Controller', raw route) rather than front-loaded meaning. Brevity here reflects under-specification, not economy.
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 mutation tool with a deeply nested body, no annotations, and no output schema, the description is far too thin to guide correct invocation. It provides no information an agent could not already derive from the tool name.
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% and the description adds zero parameter information. The nested body has ~20 fields (ips, configProfile, trafficLimitBytes, integrationUuids, etc.) with no semantic explanation of required-versus-optional update behavior, and the confirm flag's preview behavior is documented only inside 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 is an auto-generated route dump: 'PATCH /api/nodes' plus 'Update node'. It names a verb-and-resource but adds nothing about what a node update covers or how it differs from siblings like nodes_bulk_nodes_update, nodes_profile_modification, or nodes_update_node variants. This is essentially a restatement of the tool name.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as nodes_bulk_nodes_update (many nodes) versus nodes_get_node/nodes_create_node. The caller must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_usage_history_get_stats_nodes_usageC
GET /api/bandwidth-stats/nodes Get Nodes Usage by Range Tags: Bandwidth Stats Controller Пагинация через query-параметры: start.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (YYYY-MM-DD) | |
| start | Yes | Start date (YYYY-MM-DD) | |
| topNodesLimit | No | Limit of top nodes to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses only that this is a GET (read-only via the HTTP verb); it says nothing about auth requirements, rate limits, or the shape of the returned bandwidth data.
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 text is short but poorly spent: it front-loads a raw HTTP path and a 'Tags' line that carry no agent-relevant information, and closes with an unrelated Russian sentence about pagination. Useful scope information is absent while noise occupies the whole description.
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, no annotations, and a crowded field of similar stats siblings, the description should at minimum explain what is returned and how it differs from the alternatives. It instead leaves return values unexplained and mislabels a parameter, so an agent lacks what it needs to call this 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 100%, so the baseline would be 3, but the description's only parameter statement ('Пагинация через query-параметры: start') actively misleads: 'start' is a required date-range bound per the schema, not a pagination cursor, and 'end'/'topNodesLimit' are never mentioned. The claim introduces confusion rather than 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 summary 'Get Nodes Usage by Range' states a verb (get) and resource (node usage), but it is essentially a restatement of the tool name and gives no differentiation among the near-identical siblings bandwidth_stats_nodes_get_stats_nodes_usage, bandwidth_stats_users_get_stats_nodes_usage, and bandwidth_stats_nodes_get_node_usage. An agent cannot tell which of these to pick from the description alone.
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 when-to-use guidance at all. Given that roughly six sibling tools return node/user bandwidth statistics, the absence of any rule for choosing this one over bandwidth_stats_users_get_stats_nodes_usage or bandwidth_stats_nodes_get_node_usage is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
passkey_delete_passkeyC
DELETE /api/passkeys Delete a passkey by ID Tags: Passkeys Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: not whether deletion is permanent, whether re-authentication is required, or whether the passkey's owner can be anyone. The only useful behavioral clue elsewhere is in the 'confirm' schema description, which the tool description never references.
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 lines with no padding and the verb-resource front-loaded. The 'Tags: Passkeys Controller' line is filler that does not help selection, which keeps it out of the top score.
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 mutation with no annotations and no output schema, the description should at minimum disclose irreversibility and the confirm/preview mechanism documented in the sibling schema field. Neither appears, leaving the agent under-informed for an irreversible 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 coverage is 50%. The body.id parameter is undocumented in both the description and the schema, and the description never explains the required 'body' wrapper versus the 'confirm' preview flag. It adds nothing beyond what the schema already shows.
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 (Delete) and resource (a passkey by ID), and the HTTP route DELETE /api/passkeys makes the operation unambiguous. It does not differentiate from siblings like passkey_update_passkey, though the verb 'Delete' provides clear separation from the read/registration/update 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?
No when-to-use or when-not-to-use guidance is given, and no alternative is named. The DELETE route plus 'by ID' implies permanent removal of a specific record, but the agent gets no hint about prerequisites (must the passkey belong to the caller?) or what happens afterward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
passkey_get_active_passkeysC
GET /api/passkeys Get passkeys Tags: Passkeys Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read ('GET') but does not state auth requirements, whether it returns all passkeys or a user's passkeys, or scoping. The word 'active' in the name is unexplained, leaving meaningful behavior undisclosed.
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 terse but in a way that is under-specified rather than efficient. It is essentially three fragments (route, restated name, tags) that provide no real information beyond the tool name itself.
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-param read tool with no output schema and no annotations, the description should at least clarify what is returned and any auth/scoping behavior. Neither the 'active' qualifier nor authentication expectations are addressed, so the definition is not complete enough for reliable 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?
The tool takes zero parameters, so per the rubric the baseline is 4. There are no parameter semantics to clarify, and the description does not need to add any.
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 only restates the HTTP route and name: 'GET /api/passkeys' followed by 'Get passkeys'. It conveys the resource (passkeys) and that it's a retrieval, but adds nothing about scope, filtering, or what 'active' passkeys means despite the tool name promising 'active'. It does not differentiate from siblings like passkey_delete_passkey or passkey_update_passkey beyond the verb.
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 guidance on when to use this versus alternatives such as passkey_passkey_registration_options, auth_passkey_authentication_options, or other passkey tools. There is no context for auth prerequisites or when an agent should reach for this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
passkey_passkey_registration_optionsC
GET /api/passkeys/registration/options Get registration options for passkey Tags: Passkeys Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that this requires authentication, what the response contains (e.g., challenge/creation options), or any side effects. Only the HTTP method and path are given, which is minimal 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 short and front-loaded with the core action. The inclusion of the HTTP method, path, and tags is somewhat redundant but not excessively verbose.
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 web-auth tool with no annotations, no output schema, and no parameters, the description is incomplete. It does not explain what registration options are returned, their format, or any expected client behavior, leaving significant gaps for an agent to infer.
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 zero parameters and 100% schema description coverage (vacuously), the baseline is 4. The description adds no parameter details, but there are none to describe.
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 operation ('Get registration options for passkey') along with the HTTP method and path, which clarifies the resource. However, it is somewhat redundant with the tool name and does not differentiate from the sibling passkey_passkey_registration_verify, leaving the functional distinction unclear.
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 when-to-use guidance, prerequisites, or alternatives are provided. The description gives no indication of when an agent should call this versus passkey_passkey_registration_verify or the authentication options tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
passkey_passkey_registration_verifyC
POST /api/passkeys/registration/verify Verify registration for passkey Tags: Passkeys Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the HTTP verb and path. It does not state that this completes a registration ceremony, requires a prior options call, or what authorization is needed. The confirm-parameter behavior lives only in the schema, not the description.
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 short and front-loaded, but includes boilerplate noise such as the raw path and 'Tags: Passkeys Controller' that carry little value for an agent. Every sentence does not earn 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 security-sensitive mutation with a nested required body, no annotations, and no output schema, the description is far too thin. An agent lacks the context to call it correctly as part of a passkey registration flow.
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 the 'confirm' flag is documented, while the required nested 'body.response' object is left completely undocumented. The description adds no meaning about what the response payload must contain (e.g. WebAuthn attestation data), so it fails to compensate for the 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 with 'Verify registration for passkey', which is understandable. However, it is essentially a restatement of the endpoint summary and gives no differentiation from siblings like passkey_passkey_registration_options or auth_passkey_authentication_verify. It is adequate but generic.
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, what prerequisites exist, or how it relates to the registration options and authentication verify siblings. The agent must infer the flow entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
passkey_update_passkeyC
PATCH /api/passkeys Update passkey Tags: Passkeys Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'PATCH' implies a mutation, but the description says nothing about the confirmation/preview workflow (the confirm parameter), permissions required, or what happens to the passkey. 'Tags: Passkeys Controller' adds no behavioral 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?
It is short and front-loads 'Update passkey', but two of the three lines are redundant HTTP-path and controller-tag noise rather than information. It is concise mainly because it contains almost nothing.
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 mutation endpoint with a nested required body object, a non-GET confirm/preview semantic, and no annotations or output schema, the description is inadequate. An agent cannot tell what fields are updatable or that confirm:true is needed to actually execute.
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% and the description adds no parameter meaning at all — it never mentions the required body.id/body.name fields or the confirm flag. The agent must infer everything from the schema, including that name is a constrained 2-30 char string.
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 verb and resource ('Update passkey') and the HTTP verb PATCH, so the agent knows this mutates an existing passkey. However, it gives no detail about what is being updated (the name) and does not distinguish it from siblings like passkey_delete_passkey or passkey_get_active_passkeys beyond the raw endpoint string.
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 the other passkey tools (registration_options, authentication, delete, get_active). The only hints are the HTTP method and a tag label, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remnawave_settings_get_settingsC
GET /api/remnawave-settings Get Remnawave settings Tags: Remnawave Settings Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only retrieval via 'GET'/'Get', but says nothing about authentication requirements, what configuration scope is returned, or whether the settings are sensitive. Behavioral disclosure is minimal beyond the raw endpoint.
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 short, but the space is spent on the raw HTTP path and an auto-generated 'Tags: Remnawave Settings Controller' line rather than useful meaning. Front-loaded enough, yet not every element 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?
With no output schema and no annotations, the description should explain what 'Remnawave settings' actually contains on return, but it does not. For a zero-parameter read tool the bar is low, yet the agent still lacks any sense of the returned payload or its significance.
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 takes zero parameters and the schema is empty, so there is nothing for the description to clarify. Baseline 4 applies; no parameter documentation is 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 states a plain verb+resource ('Get Remnawave settings'), so an agent can tell it retrieves settings. However, it does nothing to distinguish the tool from close siblings such as subscription_settings_get_settings, system_get_configuration, or its own update counterpart remnawave_settings_update_settings. It essentially restates the tool name with no added 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?
There is no when-to-use guidance, no mention of alternatives, and no prerequisites. The only context is the HTTP verb/path and a controller tag, which does not help the agent decide between this and the other settings-reading tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remnawave_settings_update_settingsD
PATCH /api/remnawave-settings Update Remnawave settings Tags: Remnawave Settings Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses nothing beyond the HTTP verb: no indication this is a write/destructive mutation, no mention that it requires admin privileges, no note on whether settings are replaced wholesale or merged. The single behavioral fact present, the confirm:true preview/guard mechanism, lives in the schema's parameter description rather than the tool description, so the description itself adds zero.
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 short, but the brevity is under-specification rather than economy: the 'Tags: Remnawave Settings Controller' line is auto-generated filler and the endpoint path duplicates no useful intent. No sentence beyond the first carries information an agent needs.
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 nested-object mutation tool with many required sub-fields, no annotations, and no output schema, the description leaves the agent without the minimum context to call it safely. Nothing explains the confirm guard, the scope of the change, or which setting groups exist.
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 consists solely of the 'confirm' parameter; the entire nested body (OAuth2, passkey, branding, password settings) has no field-level descriptions. The description names neither parameter and gives no guidance on required vs optional nested blocks or on what a partial body does to unmentioned keys.
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 restates the tool name ('Update Remnawave settings') and adds only the HTTP verb and endpoint path plus a generated 'Tags' line. It never says what 'settings' covers (OAuth2 providers, passkeys, branding, password policy) despite the schema laying all of that out. It is essentially tautological against the name and indistinguishable from remnawave_settings_get_settings beyond the verb.
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 when-to-use, when-not-to-use, prerequisites, or alternates anywhere in the description. The only sibling it relates to, remnawave_settings_get_settings, is never mentioned, nor is subscription_settings_update_settings, which an agent could easily confuse with it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snippets_create_snippetC
POST /api/snippets Create snippet Tags: Snippets Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It reveals only the HTTP method and route (POST /api/snippets) plus a useless 'Tags: Snippets Controller' label. It does not disclose auth requirements, whether snippet names must be unique, what happens on a name conflict, or how the confirm/preview behavior works — the latter only appears buried in a schema property description.
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 very short and front-loaded with the endpoint, but 'Tags: Snippets Controller' is filler that carries no meaning for an agent, and the creation act is stated twice (route + 'Create snippet'). Brevity here reflects under-specification rather than disciplined conciseness.
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 operation with a nested, largely untyped body, no annotations, and no output schema, the description is far too thin. An agent cannot tell what a valid snippet payload looks like or what the call returns without reverse-engineering the schema.
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 supplies zero parameter detail. The nested body accepts an arbitrary 'snippet' array of empty-schema objects, which is exactly the kind of opaque payload the description should explain, yet it offers no format, examples, or constraints beyond the schema's regex and length limits.
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 'Create snippet', which is a verb+resource, but it adds essentially nothing beyond what the tool name snippets_create_snippet already conveys. It does not say what a snippet contains or how it differs from siblings like snippets_update_snippet, snippets_sync_snippet, or snippets_delete_snippet_by_name. Adequate but minimally informative.
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 when-to-use guidance, no prerequisites, and no mention of alternatives. With sibling tools for getting, updating, syncing and deleting snippets, the agent gets no help deciding when creation is the right call versus an update or sync.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snippets_delete_snippet_by_nameC
DELETE /api/snippets Delete snippet Tags: Snippets Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and essentially fails it: it does not state that this is irreversible, what permissions are needed, or what happens to a snippet referenced elsewhere. The only behavioral hint is the bare 'DELETE' verb, and the valuable confirm/preview semantics live in the schema, not the description.
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 short and front-loaded with the verb and resource, so there is little waste. But 'DELETE /api/snippets' and 'Tags: Snippets Controller' are raw spec artifacts that consume space without adding meaning for an agent.
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, unannotated, nested-body tool with no output schema, the description is far too thin: it omits irreversibility, permission requirements, the confirm/preview flow, and the name-path semantics. An agent could invoke it but not safely or knowledgeably.
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 nested body.name parameter has no description at all, and its path-like pattern (allowing nested '/'-separated names) is unexplained. The description says nothing about the name format or the confirm gate, so it does not compensate 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 (Delete) and resource (snippet), and the tool name adds the 'by_name' scope, so the action is identifiable. However, it offers no differentiation from the close siblings snippets_create_snippet, snippets_update_snippet, snippets_sync_snippet, and snippets_get_snippets, and 'Tags: Snippets Controller' is generated filler rather than meaning.
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 when-to-use guidance, no statement of prerequisites, and no mention of when to prefer this over snippets_sync_snippet or snippets_update_snippet. Usage is only implied by the verb in the tool name and the endpoint string.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snippets_get_snippetsC
GET /api/snippets Get snippets Tags: Snippets Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses nothing about authentication requirements, whether the result is paginated or complete, or ordering. Only the HTTP verb 'GET' weakly implies a read-only, non-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?
It is short and front-loads the route, but 'Tags: Snippets Controller' is auto-generated noise that adds nothing for an agent, and the useful content is thinner than the token cost of the boilerplate.
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 endpoint with no output schema and no annotations, the description should at minimum convey what a snippet is, what the response contains, or whether results are filtered. None of that is present, leaving the agent to guess.
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 there is nothing for the description to clarify and the baseline of 4 applies. No parameter semantics are needed for this 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 states a verb and resource ('Get snippets'), which is interpretable, but it is essentially an auto-generated restatement of the tool name plus the raw HTTP route. It gives no indication of scope (all snippets vs. filtered), return shape, or how it differs from siblings like snippets_get_snippet_by_name.
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 call this versus the other snippet tools (create, update, delete, sync) or when a caller would list snippets at all. Usage must be entirely inferred from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snippets_sync_snippetA
POST /api/snippets/actions/sync Sync snippet to affected config profiles Trigger the sync of a snippet to all config profiles that reference it. Nodes which use affected config profiles will be restarted. Tags: Snippets Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and discloses the critical side effect: 'Nodes which use affected config profiles will be restarted.' That is genuinely valuable behavioral context for a mutation. It still omits auth requirements, reversibility, and whether the sync is atomic, 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?
Front-loaded with the key effect, but the first two lines are redundant ('Sync snippet to affected config profiles' vs 'Trigger the sync of a snippet to all config profiles that reference it'), and the trailing 'Tags: Snippets Controller' line is noise. The restart warning is the only sentence that 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 mutation with no annotations and no output schema, the description covers the essential effect (sync plus node restarts). It could note the confirm/preview gate that governs execution, but the core decision information an agent needs is present.
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' param is fully documented in the schema, but the required 'name' param has only a pattern and length, no description. The description implies the snippet is identified by name ('Sync snippet...') but adds no format or selection detail, so it neither compensates fully nor is entirely empty.
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 ('Sync snippet to affected config profiles') and the scope of effect ('all config profiles that reference it'). This distinguishes it from siblings like snippets_update_snippet and snippets_create_snippet without needing schema inspection.
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 the tool is appropriate (when a snippet should be propagated to referencing profiles), but offers no explicit when-to-use guidance or comparison against alternatives like snippets_update_snippet. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snippets_update_snippetC
PATCH /api/snippets Update snippet Tags: Snippets Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It reveals nothing beyond the mutation implied by 'Update'/'PATCH'. However, the 'confirm' boolean parameter's own schema description conveys the critical behavioral trait that non-GET operations require confirm:true or a preview is returned, which partially compensates. Still, the description itself adds no safety, reversibility, or scoping 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 fragments: an HTTP route, a tautological 'Update snippet', and a tag line. Nothing is front-loaded beyond the trivially derived verb. It is short but under-specified rather than concise – the brevity reflects missing content, not efficiency.
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 mutation tool with no annotations, a nested body object, undocumented nested items, no output schema, and dozens of near-identically named snippet siblings, the description is inadequate. The agent must fall back entirely on schema and the confirm parameter's description to invoke it safely.
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 carries its own rich description explaining the preview behavior (MCP_CONFIRM), while 'body' is a nested object with no description and inner nested items with empty properties. The description text supplies no parameter meaning at all, so it neither adds nor compensates for the gap in the nested 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 is a raw HTTP method + path ('PATCH /api/snippets') plus a tautological restatement ('Update snippet'). The tool name already says update_snippet, so 'Update snippet' adds nothing. It does not identify which snippet is targeted or how it differs from siblings like snippets_sync_snippet, snippets_create_snippet, or snippets_delete_snippet_by_name.
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 when-to-use guidance and no distinction from sibling snippet tools (create, delete, sync, get_snippets). The 'Update snippet' phrase implies a mutation but the agent gets no criteria for choosing this tool over the sync variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_get_subscriptionD
GET /api/sub/{shortUuid} Tags: [Public] Subscription Controller
| Name | Required | Description | Default |
|---|---|---|---|
| shortUuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it delivers almost nothing. The '[Public]' tag weakly implies unauthenticated access, which is a useful behavioral hint, but there is no mention of auth requirements, error behavior, or what data is exposed.
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 short, but the brevity comes from omitting content rather than trimming waste; a route string and a tag line are not a useful description. There is no front-loaded purpose statement.
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 annotations, no output schema, and 0% schema coverage on the sole parameter, the description must supply context and supplies none beyond the endpoint path. An agent cannot determine return shape, auth needs, or how this differs from the numerous sibling subscription lookups.
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% and the single parameter shortUuid has no description. The path template shows shortUuid is required and is a path segment, but no format, length, or meaning (e.g., what a 'short' UUID is versus a full UUID) is conveyed.
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 is a raw HTTP route plus a controller tag: 'GET /api/sub/{shortUuid}'. It signals a retrieval of a subscription keyed by shortUuid, but adds no semantic description of what is returned or how this differs from the many sibling subscription getters (by uuid, by username, by client type, raw, subpage config). This is close to restating the tool name in URL form.
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 endpoint versus subscriptions_get_subscription_by_uuid, subscriptions_get_subscription_by_short_uuid_protected, subscription_get_subscription_info_by_short_uuid, or the raw/subpage variants. Nothing indicates preconditions or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_get_subscription_by_client_typeD
GET /api/sub/{shortUuid}/{clientType} Tags: [Public] Subscription Controller
| Name | Required | Description | Default |
|---|---|---|---|
| shortUuid | Yes | ||
| clientType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: no auth requirements for a public/protected endpoint, no caching or rate-limit behavior, no statement of whether the response is a rendered config or raw data. The only clue is the '[Public]' tag, which is not explained.
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 brief and front-loaded, but this is under-specification rather than conciseness — the single line is a route dump with an unexplained tag, carrying no information an agent can act on beyond 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?
With no annotations, no output schema, and 0% schema description coverage, the description should be doing all the work; instead it supplies nothing about behavior, return shape, or client-type semantics, leaving the agent unable to call the tool correctly or interpret its output.
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 and it does not. The path template merely restates the parameter names; it never explains what 'clientType' means (a client config format selector) or how the enum values (stash, singbox, mihomo, json, v2ray-json, clash) differ in output.
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 is a raw route string ('GET /api/sub/{shortUuid}/{clientType}') plus an internal tag, not a statement of purpose. An agent can infer it fetches a subscription from the path and the tool name, but no natural-language explanation of what a 'subscription by client type' actually returns distinguishes it from siblings like subscription_get_subscription or subscriptions_get_raw_subscription_by_short_uuid.
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 whatsoever on when to use this tool versus the many sibling subscription endpoints (subscription_get_subscription, subscriptions_get_subscription_by_short_uuid_protected, subscription_get_subscription_info_by_short_uuid, etc.). No prerequisites, no context, no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_get_subscription_info_by_short_uuidC
GET /api/sub/{shortUuid}/info Get Subscription Info by Short UUID Tags: [Public] Subscription Controller
| Name | Required | Description | Default |
|---|---|---|---|
| shortUuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that the endpoint is public ('[Public]'), which is mild behavioral context, but it says nothing about what data is returned, whether it requires auth, or any rate/format constraints.
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 short and front-loaded with the route, but a raw HTTP endpoint plus a 'Tags:' string is low-value boilerplate for an agent rather than useful prose. Nothing is bloated, but little of it 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?
With no output schema, no annotations, and no parameter documentation, the description should explain what 'info' contains and how to obtain it. It instead offers only a REST route dump, leaving the agent without the information needed to call or interpret the 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 0% and the single parameter is only implied by the raw route string '/api/sub/{shortUuid}/info'. The description does not explain that shortUuid is the subscription's short identifier, nor its format, so it barely compensates for the schema 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 names a specific verb and resource (get subscription info by short UUID) and repeats the tool name, so the basic purpose is understandable. However, it gives no differentiation from the many closely related siblings such as subscriptions_get_subscription_by_short_uuid_protected, subscriptions_get_raw_subscription_by_short_uuid, and subscription_get_subscription, leaving the agent unable to tell which of these actually applies.
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 when-to-use guidance, no mention of prerequisites, and no named alternative. The only hint is the '[Public] Subscription Controller' tag, which does not help the agent choose between this tool and the near-identical subscription lookups in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_page_config_clone_subscription_page_configC
POST /api/subscription-page-configs/actions/clone Clone subscription page config Tags: Subscription Page Configs Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but discloses nothing beyond 'clone' — not whether the new config copies or shares settings, whether a new UUID/name is generated, or what side effects occur on the source config. It does convey the operation is a POST mutation, which is the only behavioral signal.
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 short and front-loads the route and purpose with no filler, but the content is a raw REST path plus a controller tag rather than a purpose-built description, so it is sparse rather than optimally structured.
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 mutation tool with no annotations, no output schema, nested body parameters, and only 50% schema coverage, the description is not complete enough — an agent lacks guidance on preconditions, resulting UUID/name behavior, and safe usage of the confirm flow beyond what the schema hints.
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%: the nested cloneFromUuid parameter has no description, and the description adds nothing about it (e.g. whether it must reference an existing config or what happens to its tags/name). The confirm parameter is documented in the schema itself, so the description contributes no compensating 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 names a specific verb (clone) and resource (subscription page config), so an agent knows this duplicates an existing config rather than creating one from scratch. However, it does not name or distinguish itself from siblings like subscription_page_config_create_config or subscription_page_config_update_config.
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 statement of when to use this tool versus create_config or update_config, and no prerequisites (such as needing an existing config UUID) are given. The only usage-adjacent text is the HTTP route and a controller tag, which offer no selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_page_config_create_configC
POST /api/subscription-page-configs Create subscription page config Tags: Subscription Page Configs Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only discloses that this is a POST/create. It omits side effects, permission requirements, and notably the confirm-to-preview flow that governs whether the write actually executes, leaving real behavioral gaps 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?
Very short, which is good, but the content is largely boilerplate (HTTP method, path, and a "Tags: ... Controller" line) rather than useful information. The name statement is front-loaded, but a chunk of the text does not earn 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 mutation tool with no annotations, no output schema, nested body object, and partial schema coverage, the description is too thin. It lacks the confirm/preview semantics, permission expectations, and any detail about the required name field.
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 nested body (with required name and pattern/length constraints) has no description, while only the confirm parameter is documented. The description adds nothing about either parameter, so it fails to compensate for the undocumented body payload.
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 ("Create subscription page config"), which clearly distinguishes it from siblings like update_config, delete_config, and clone_subscription_page_config. However, it adds no scope or constraint detail beyond restating the tool name, plus a boilerplate HTTP verb/path and tag line.
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 versus alternatives (e.g., clone or update), nor any preconditions for creating a config. The HTTP path is the only context offered, which is not actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_page_config_delete_configC
DELETE /api/subscription-page-configs/{uuid} Delete subscription page config Tags: Subscription Page Configs Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only restates the HTTP DELETE verb. It does not disclose irreversibility, side effects, or the confirm/preview mechanism that the schema's 'confirm' parameter introduces, leaving significant behavioral gaps for a destructive 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?
It is short and front-loaded with the HTTP verb and path, but the raw route string and the 'Tags: Subscription Page Configs Controller' line are scaffolding that add no value for an agent. Phrasing is terse but partly 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?
With no annotations, no output schema, and no explanation of destructive semantics or the confirmation flow, the definition is under-specified for a delete operation. An agent cannot tell from the description alone what happens to the target or how confirmation works.
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 description adds nothing about parameters: it never explains 'uuid' (undocumented in both schema and description) nor clarifies the 'confirm' preview behavior already described in Russian in the schema. For a mutation tool with a required identifier and a meaningful confirmation flag, the description should compensate and 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 states a specific verb+resource (delete a subscription page config), which is clearer than a bare restatement of the name. However, it offers no differentiation from its close siblings such as subscription_page_config_update_config or subscription_page_config_get_config_by_uuid; the agent must infer the distinction from the verb alone.
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 when-to-use or when-not-to-use guidance, no prerequisites, and no mention of alternatives. A destructive operation like this should at minimum state that it removes the targeted config permanently and when deletion is appropriate versus updating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_page_config_get_all_configsC
GET /api/subscription-page-configs Get all subscription page configs Tags: Subscription Page Configs Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether the result is paginated, sorted, filtered, or what authentication or permissions are required. The only behavioral signal is 'Get all,' which implies a full unfiltered read but is not elaborated.
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 functional lines plus a boilerplate 'Tags' line. The core sentence is front-loaded and brief, but the HTTP path and controller tag metadata occupy space without helping an agent decide or invoke. Adequate but not tightly edited.
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 tool with no output schema, the description is minimally viable. It omits return shape, pagination, and sort behavior, which an agent listing configs would likely need, but nothing is strictly required for 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?
The tool takes zero parameters, so the baseline is 4. There are no parameter semantics to clarify, and the description appropriately does not invent any.
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 'Get all subscription page configs,' which is a clear verb+resource, but it provides no differentiation from siblings like subscription_page_config_get_config_by_uuid or subscription_template_get_all_templates beyond the narrow resource name. It restates the tool name without adding scope or distinction.
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 explicit when-to-use guidance, no alternatives named, and no exclusions. The agent must infer from the name alone that this is the bulk-list variant versus the by-UUID variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_page_config_get_config_by_uuidC
GET /api/subscription-page-configs/{uuid} Get subscription page config by uuid Tags: Subscription Page Configs Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. Beyond the HTTP verb implying a read, it discloses nothing about auth requirements, error behavior (e.g., not-found handling), or response shape.
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?
Extremely short, consisting of the raw HTTP route plus a one-line summary and a controller tag. The tag line ('Tags: Subscription Page Configs Controller') is scaffolding noise that adds no caller 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 GET tool with no annotations and no output schema, the description is too thin. It doesn't mention what success looks like, error conditions, or relationship to sibling config lookups, leaving the agent with only the endpoint signature.
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%, but there is only one parameter (uuid) whose type and format are already fully specified by the schema's uuid format and pattern. The description adds no meaning beyond what the schema provides; the single-param baseline applies.
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 (Get) and resource (subscription page config by uuid) with the exact REST endpoint. It is distinguishable from siblings like subscription_page_config_get_all_configs by its single-uuid scope, though it doesn't explicitly name alternatives.
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 guidance on when to use this vs. get_all_configs or other lookup tools. The uuid-based phrasing implies retrieval by identifier, but there's no stated context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_page_config_get_tagsC
GET /api/subscription-page-configs/tags Get tags of Subpage Configs Tags: Subscription Page Configs Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read via 'GET', but says nothing about whether this requires authentication, what access scope is needed, or how the tags relate to subpage configs. The controller tag ('Subscription Page Configs Controller') is internal metadata, not 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 text is short, but it is not concise in the useful sense: the first two lines are raw HTTP route metadata and the third line is a hand-written duplicate of the title, while the fourth line is a framework artifact ('Tags: Subscription Page Configs Controller'). Almost none of the content helps an agent; it is padding disguised as brevity.
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 no-param read tool, the description could have been sufficient, but it omits the one thing that matters: which tag set is being retrieved and how it differs from the sibling tag endpoints. Without that, an agent cannot call the right 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?
The tool takes zero parameters, so parameter semantics is a non-issue; per the rubric, 0 params establishes a baseline of 4. There is nothing for the description to explain or omit.
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 is essentially a mechanical dump of the HTTP method and path ('GET /api/subscription-page-configs/tags') plus a near-tautological restatement ('Get tags of Subpage Configs'). It does convey a verb (get) and resource (tags), but offers no differentiation from the many sibling tag-getters (config_profile_get_tags, node_plugin_get_tags, subscription_template_get_tags, external_squad_get_tags, internal_squad_get_tags).
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 guidance whatsoever on when to use this versus the ~10 other *_get_tags tools in the sibling list. There is no statement of context, prerequisites, or alternatives. An agent cannot decide from this text alone which tags endpoint applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_page_config_reorder_subscription_page_configsC
POST /api/subscription-page-configs/actions/reorder Reorder subscription page configs Tags: Subscription Page Configs Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden, yet it discloses nothing about what reordering does, whether it is destructive, permission requirements, or reversibility. The important confirm/preview behavior is documented only in the schema, not the description. This is a mutation endpoint with essentially no 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?
It is short and front-loads the action, but includes low-value boilerplate (POST path, 'Tags: Subscription Page Configs Controller') that does not help an agent decide or invoke. Efficient in length but not in signal.
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 nested-body mutation tool with no annotations and no output schema, the description is inadequate. It omits the confirm/preview semantics, the items payload meaning, and any behavioral or permission context that an agent would need before calling 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?
Schema description coverage is 50%: the confirm parameter is documented in the schema, but the body/items structure (uuid + viewPosition) is not. The description adds no parameter meaning whatsoever, and does not compensate for the undocumented body 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+resource ('Reorder subscription page configs'), which is understandable. However, it is essentially a restatement of the tool name plus the raw HTTP method, path, and controller tag, adding no real distinguishing detail beyond what the name already conveys. It does not clarify scope relative to the many other 'reorder' siblings (configs, squads, templates, hosts, nodes).
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, no mention of prerequisites (e.g. existing configs, valid UUIDs), and no exclusions. The agent is left to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_page_config_set_tagsC
PATCH /api/subscription-page-configs/tags Set tags of Subpage Config Tags: Subscription Page Configs Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing: it does not say whether 'set' replaces or merges existing tags, whether the operation is safe/reversible, or what authorization is needed. The confirm/preview behavior is only visible in the schema, not elaborated here.
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 short, but two of the three lines are auto-generated scaffolding (the PATCH path and 'Tags: Subscription Page Configs Controller') that carry little information. The front-load is the HTTP route rather than the purpose.
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 mutating tool with a nested body object, no output schema, and no annotations, the description is too thin: replace-vs-merge semantics, confirm/preview flow, and any error or permission behavior are left 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 50% (only the confirm parameter is documented), and the description adds no parameter meaning at all. It omits the tag format constraints (uppercase pattern, 36-char max, 10-item limit) and the fact that uuid identifies the target config.
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 phrase 'Set tags of Subpage Config' gives a verb and resource, but it largely restates the tool name and the leading PATCH URL is boilerplate rather than meaning. It never distinguishes itself from the many sibling tag-setters (config_profile_set_tags, subscription_template_set_tags, internal_squad_set_tags, node_plugin_set_tags), so an agent must infer the target entity from the name alone.
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 such as subscription_page_config_get_tags or subscription_page_config_update_config, and no prerequisites are stated. The only implicit signal is the word 'tags' in the name; nothing in the description adds usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_page_config_update_configC
PATCH /api/subscription-page-configs Update subscription page config Tags: Subscription Page Configs Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not say whether PATCH is partial or full replacement, which fields are mutable, what happens to existing config when omitted, or what permissions are needed. The 'Update' verb plus endpoint is effectively all the behavior communicated.
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 short and front-loaded with the endpoint, but the 'Tags: Subscription Page Configs Controller' fragment is auto-generated filler that adds no decision value. Nothing is verbose, yet little of the text earns its place beyond the first line.
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 mutation tool with a nested body, an undocumented 'config' field, no annotations and no output schema, the description is far too thin. An agent gets no confirmation semantics, no field-level guidance, and no sense of the effect of the call, leaving critical gaps to be guessed.
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 most opaque parameter — the nested 'config' object — has an empty schema with no description at all, while the description adds nothing about it. The description also does not mention the required 'uuid' inside body or the confirm flag, so it fails to compensate 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 names a specific verb and resource ('Update subscription page config') and states the HTTP method and endpoint, so an agent can tell it is a mutation of a subscription page config rather than a read. It does not explicitly contrast itself with siblings like subscription_page_config_create_config or set_tags, but the verb+resource pairing 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?
There is no statement of when to use this tool versus alternatives (create, clone, delete, set_tags, reorder) and no prerequisites or conditions. The only usage-relevant hint — that a non-GET call requires confirm:true to avoid a preview — lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_settings_get_settingsC
GET /api/subscription-settings Get subscription settings Tags: Subscription Settings Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it discloses almost nothing. It implies a read via 'GET' but says nothing about authentication requirements, permissions scope, whether the response is cached, or what the settings object contains. Only the controller tag and route are added, which is metadata rather than 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 text is short and front-loaded, which is good, but the 'Tags: Subscription Settings Controller' line is generated metadata noise that adds nothing for an agent. The remaining two clauses are redundant with each other and with 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 zero-parameter getter with no output schema and no annotations, the description should at minimum describe what configuration surface is returned or who may read it. It provides none of that, leaving the agent to guess what 'subscription settings' covers relative to the sibling update tool and other settings endpoints.
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 takes zero parameters, so per the rubric the baseline is 4. There is no parameter information the description could or should add beyond what the empty schema already conveys.
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 is essentially a restatement of the tool name: 'Get subscription settings' plus the raw HTTP route 'GET /api/subscription-settings'. It does not distinguish this tool from its obvious sibling subscription_settings_update_settings, nor explain what settings are involved. This is tautological rather than explanatory.
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 guidance about when to call this versus subscription_settings_update_settings or other settings endpoints. The only implicit cue is the HTTP verb GET, which the agent could already infer from the tool name. No prerequisites, no exclusions, no alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_settings_update_settingsD
PATCH /api/subscription-settings Update subscription settings Tags: Subscription Settings Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and delivers nothing. It does not disclose that this is a mutation, whether unspecified fields are preserved or reset, whether elevated permissions are required, or that a confirm:true gate governs execution (that constraint lives only 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?
Very short and front-loaded with the action, so there is no bloat to penalize. However, one of its three lines is auto-generated 'Tags:' boilerplate that adds no selection value, leaving the description minimal rather than efficiently informative.
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 high-complexity mutation tool with a deeply nested body (HWID settings, custom remarks, response rules), no annotations, and no output schema, the description is completely inadequate. It omits scope of the update, authorization needs, the confirm gate, and any indication of what the PATCH affects globally.
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?
Two top-level parameters with ~50% description coverage, and the description adds zero parameter meaning. The nested body schema is unusually self-documenting (extensive markdownDescription on hwidSettings, customRemarks, responseRules, and confirm), so the schema does the work, but the description contributes nothing to compensate 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 is essentially a tautology of the tool name: 'Update subscription settings' against subscription_settings_update_settings. The only added signal is the HTTP verb/path (PATCH /api/subscription-settings), which hints at partial-update semantics but does not state what is actually being changed or distinguish this from sibling mutators like remnawave_settings_update_settings.
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 when-to-use, when-not-to-use, prerequisites, or named alternatives are provided. An agent is given no basis for choosing this over remnawave_settings_update_settings or subscription_settings_get_settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions_get_all_subscriptionsB
GET /api/subscriptions Get all subscriptions Tags: [Protected] Subscriptions Controller Пагинация через query-параметры: start, size.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of subscriptions to return, no more than 500 | |
| start | No | Start index (offset) of the users to return, default is 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It usefully discloses the GET method, implies the endpoint is protected (auth required), and identifies start/size as pagination query parameters, but it does not describe rate limits, sorting behavior, or response characteristics beyond 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?
The description is short and front-loads the core purpose with the GET path and action. The 'Tags: [Protected] Subscriptions Controller' line is largely boilerplate metadata, and the final Russian sentence partially repeats pagination information already implied by the schema, but overall there is little waste.
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 collection endpoint with two optional pagination parameters and no output schema, the description is minimally adequate. It explains what is returned at a high level and how to paginate, but it omits details about the response structure, whether all subscriptions system-wide are returned, and any authorization constraints beyond the 'Protected' tag.
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 the schema already fully documents the size and start parameters, including defaults, bounds, and meaning. The description adds only that pagination is done via these query parameters, which is marginal beyond the schema's own 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?
States a specific verb and resource: 'Get all subscriptions' with the underlying GET path. It is clear the tool retrieves a collection, but it does not explicitly differentiate itself from sibling subscription-retrieval tools like subscriptions_get_subscription_by_uuid or subscriptions_get_subscription_by_username.
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 when-to-use guidance, prerequisites, or alternatives are provided. The description only asserts what the endpoint does and notes that pagination uses the start and size query parameters, leaving the agent to infer when this collection listing is preferable to sibling retrieval endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions_get_connection_keys_by_user_idC
GET /api/subscriptions/connection-keys/{userId} Get connection keys (base64 format) by user id Tags: [Protected] Subscriptions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | User ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It discloses the return format (base64) and hints at auth via the '[Protected]' tag, but says nothing about permissions, whether keys are sensitive/rotatable, error behavior for unknown userId, or rate limits.
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 core sentence is short and front-loaded, but the raw 'GET /api/subscriptions/connection-keys/{userId}' route and the 'Tags: [Protected] Subscriptions Controller' boilerplate are noise that does not help an agent decide or invoke.
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 tool with no output schema, the description covers purpose and output format adequately. It stops short on the behavioral/auth context an agent would want before calling a protected endpoint that returns credential-like keys.
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 single required userId is fully documented in the schema, so baseline 3 applies. The description's 'by user id' merely restates the schema and adds no format or constraint detail beyond what is already given.
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 — 'Get connection keys (base64 format) by user id' — which is unambiguous about what is returned and how it is keyed. It does not, however, differentiate this tool from the many other subscriptions_* siblings that also retrieve subscription data by user/short uuid.
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 call this versus alternatives such as subscriptions_get_subscription_by_uuid or subscriptions_get_all_subscriptions. The only context offered is a raw HTTP route and a '[Protected]' tag, which implies authentication but not usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions_get_raw_subscription_by_short_uuidC
GET /api/subscriptions/by-short-uuid/{shortUuid}/raw Get Raw Subscription by Short UUID Tags: [Protected] Subscriptions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| shortUuid | Yes | ||
| withDisabledHosts | No | false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It discloses almost nothing: 'Tags: [Protected]' hints at auth requirements, but there is no statement about rate limits, what the 'raw' payload format is, or how it differs from the non-raw endpoint.
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 short and front-loads the endpoint, but the content is an unfiltered spec dump rather than deliberately economical prose; nearly every line is redundant restatement of the 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?
With no output schema, no annotations, and two undocumented parameters (one wholly mysterious), the description should explain what 'raw' returns and what withDisabledHosts does, but it leaves both unanswered.
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 both parameters. The path template implies shortUuid identifies the subscription, but withDisabledHosts is completely unexplained in both the schema and the description, so the description fails to compensate 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 title restates a specific verb and resource ('Get Raw Subscription by Short UUID'), so an agent knows it fetches a subscription. However, 'raw' is never defined, and there are several near-identical siblings (subscriptions_get_subscription_by_short_uuid_protected, subscription_get_subscription_info_by_short_uuid) that the description does nothing to distinguish from.
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 is a bare endpoint dump with no when-to-use guidance, no prerequisites, and no mention of the closely related siblings that would let an agent choose between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions_get_subpage_config_by_short_uuidC
GET /api/subscriptions/subpage-config/{shortUuid} Get Subpage Config by Short UUID Tags: [Protected] Subscriptions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| shortUuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does almost nothing: it restates the route and controller tag. It does not state that this is a read operation, what the config contains, whether it requires protection, or what is returned. The 'Protected' tag is the only behavioral hint.
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 content is short and front-loaded, but the 'Tags: [Protected] Subscriptions Controller' line is metadata noise, not usable description. It is concise but partly for the wrong reason – content is missing rather than efficiently trimmed.
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?
A tool with no annotations, no output schema, 0% schema coverage, and a required nested body object that is completely undocumented. The description provides almost none of what an agent needs to call this correctly; it is a route stub rather than a tool 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 description coverage is 0% and the description adds no parameter meaning whatsoever. More troubling, the schema requires a nested 'body.requestHeaders' object that the description never mentions, so an agent has no guidance on this unusual required parameter. This is the case the rules reserve low scores for.
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 gives a specific verb+resource ('Get Subpage Config by Short UUID') and the raw HTTP route, which identifies the purpose. But it says nothing about what a 'subpage config' is or how it differs from the many sibling subscription/page-config tools (subscription_page_config_get_config_by_uuid, subscriptions_get_raw_subscription_by_short_uuid, etc.). A clear purpose is stated but sibling differentiation is absent.
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 when-to-use / when-not-to-use guidance, no prerequisites, no named alternative. The 'Protected' tag hints at auth but the description gives no condition for selecting this over the many other subscription retrieval tools. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions_get_subscription_by_short_uuid_protectedC
GET /api/subscriptions/by-short-uuid/{shortUuid} Get subscription by short uuid (protected route) Tags: [Protected] Subscriptions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| shortUuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. 'GET' implies a safe read and 'protected route' vaguely hints at authorization, but the description does not state what authentication is required, what data is returned, or how the protected route behaves differently from unprotected variants.
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 short and front-loads the primary action, but the opening raw endpoint and trailing 'Tags' line add little value for an agent selecting the tool. It is not verbose, but the structure is more HTTP annotation than agent-facing guidance.
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 lookup with one parameter and no output schema, the description still lacks essential context such as authentication requirements implied by 'protected route' and what the response contains. It is insufficient to call the tool correctly with confidence.
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 shortUuid. The description only repeats '{shortUuid}' from the path without adding format, constraints, or meaning beyond what the schema already declares as a string.
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 verb and resource: 'Get subscription by short uuid.' The '(protected route)' qualifier distinguishes it from unprotected or raw subscription retrieval siblings, but the description does not explain what 'protected' means or how it differs from other by-short-uuid 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?
No guidance is given on when to use this tool versus siblings like subscriptions_get_raw_subscription_by_short_uuid, subscriptions_get_subscription_by_uuid, or subscription_get_subscription_info_by_short_uuid. The protected-route label hints at a prerequisite but does not explain it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions_get_subscription_by_usernameC
GET /api/subscriptions/by-username/{username} Get subscription by username Tags: [Protected] Subscriptions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. The embedded 'GET' verb implies a read operation and the '[Protected]' tag weakly hints at authentication, but nothing is stated about permissions, error behavior, or what the response contains. For a protected read endpoint this leaves meaningful gaps.
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 short and the essential statement is first, which is good. However, the raw route path and the generated 'Tags:' line are pure noise that consume space without informing an agent, so it is not as tight as it could be.
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?
This is a simple one-parameter read tool with no output schema, so the description is the only place return shape and failure modes could be conveyed — and it conveys neither. The scope is low-complexity, but the omission of any return-value or error context leaves it incomplete.
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% for the single 'username' parameter, so the schema already documents it. The description adds no additional semantics (format constraints, case sensitivity, whether it must match an existing user) beyond the schema. Baseline 3 applies.
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 verb+resource ('Get subscription by username'), which is understandable, but it is essentially a restatement of the tool name with a raw endpoint path prepended. It offers no differentiation from near-identical siblings such as subscriptions_get_subscription_by_uuid, subscriptions_get_subscription_by_short_uuid_protected, or users_get_user_by_username. Minimum viable.
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 the many sibling subscription/user lookup endpoints. The 'Tags: [Protected] Subscriptions Controller' line is generated metadata rather than actionable usage context. An agent gets no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions_get_subscription_by_uuidC
GET /api/subscriptions/by-id/{userId} Get subscription by User ID Tags: [Protected] Subscriptions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | User ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The '[Protected]' tag hints that authentication is required, which is some value, but there is no disclosure of error behavior for an unknown or deleted user ID, what the subscription payload contains, or any rate/size constraints.
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?
Very short and front-loaded, with the intent readable in the first line. The raw 'GET /api/...' path and 'Tags:' line are boilerplate scaffolding rather than genuine description content, which keeps it out of 5 territory.
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 read this is usable, but with no annotations and no output schema the description does nothing to characterize the return value or failure modes, leaving an agent unable to predict the result of the call.
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 single userId parameter is documented by the schema, so the description only restates it ('by User ID'). This meets the baseline 3 for a fully-covered schema with no additional semantic detail added.
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 ('Get subscription by User ID'), and the 'by-id/{userId}' path differentiates it from sibling lookups like subscriptions_get_subscription_by_username and subscriptions_get_subscription_by_short_uuid_protected. It stops short of explicitly naming those siblings, so it earns a 4 rather than a 5.
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 statement of when to use this tool versus the many sibling subscription getters (by username, by short uuid, get_all_subscriptions). The agent must infer selection from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_template_create_templateC
POST /api/subscription-templates Create subscription template Tags: Subscription Template Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It only restates the REST endpoint and controller, giving no information about auth requirements, the effect of creating a template, or the preview/confirm behavior (which is documented only in the schema, not the description).
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?
Very short and front-loaded with the action, but includes noise ('Tags: Subscription Template Controller') that adds no value, and the raw POST path is a restatement rather than useful framing.
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 mutation tool with a nested object body, no annotations, and no output schema, the definition is inadequate. It neither documents the required nested fields nor the confirm-gated preview behavior, leaving the agent with little to act on.
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% and the description adds zero parameter meaning. The nested body (name, templateType) is undocumented beyond structural constraints, and only 'confirm' has a schema description. The description does not compensate for the 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?
States a specific verb+resource: 'Create subscription template'. The endpoint dump and controller tag reinforce what it does, but there is no explicit differentiation from siblings like subscription_template_update_template, though the verb makes the distinction largely obvious.
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 guidance on when to use this versus update/delete/get template siblings, no prerequisites, no mention of required fields or context. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_template_delete_templateC
DELETE /api/subscription-templates/{uuid} Delete subscription template Tags: Subscription Template Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Delete' implies a destructive mutation, but the description says nothing about irreversibility, required permissions, or the confirm:true preview behavior (that mechanism only appears in the schema, not here). For a destructive operation with zero annotation coverage this is a notable gap.
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 core sentence is front-loaded and efficient, but the inclusion of the raw HTTP path and the 'Tags: Subscription Template Controller' line adds REST-scaffolding noise without helping an agent decide or invoke correctly.
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 annotations and no output schema, the description omits the safety-relevant context an agent needs (irreversibility, confirmation requirement, side effects). The schema's confirm parameter is the only safety signal and the description does not reinforce or explain 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?
Schema description coverage is 50%: the 'confirm' parameter is documented in the schema, while 'uuid' is not. The description embeds {uuid} in the URL path, which weakly signals that it identifies the target resource, but it adds no meaning about format, source, or the confirm gate. This is the baseline level where the schema does most of the work.
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 ('Delete subscription template') and includes the HTTP method and endpoint path, so an agent can immediately tell this apart from the sibling create/update/get template tools. It stops short of explicitly naming alternatives, which is why it is a 4 rather than a 5.
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 when-to-use guidance, no prerequisites, and no mention of the required confirmation flow or alternative tools for managing templates. The agent is left to infer usage entirely from the name and verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_template_get_all_templatesB
GET /api/subscription-templates Get all subscription templates (wihout content) Tags: Subscription Template Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The HTTP GET prefix implies a read-only, non-destructive operation, and '(without content)' discloses that full template bodies are omitted. With no annotations, the description still omits auth requirements, pagination behavior, and potential rate limits, leaving meaningful gaps.
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?
Very short and front-loaded, with the key operation stated first. The redundant HTTP endpoint line and 'Tags:' metadata are minor noise, and the typo 'wihout' slightly harms polish but not clarity.
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?
No output schema exists, so the description must carry more burden. It says results exclude content, but does not describe the returned template fields, pagination, or ordering, which an agent may need for correct follow-up calls.
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 takes zero parameters, so parameter semantics carry no burden. Baseline score of 4 is appropriate as there is nothing for the description to clarify beyond the empty 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 'Get' and resource 'all subscription templates' with a scope qualifier '(without content)' that distinguishes it from the detail endpoint get_template_by_uuid. However, it does not name alternative sibling tools or further differentiate from related template listing 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?
No explicit guidance on when to use this tool versus get_template_by_uuid, get_tags, or the mutation tools. The '(without content)' note implies a lightweight listing but does not state conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_template_get_tagsB
GET /api/subscription-templates/tags Get tags of Subscription Templates Tags: Subscription Template Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The 'GET' prefix signals a read operation, but nothing is said about permissions, response shape, or whether results are paginated or scoped. Minimal behavioral disclosure for a tool with zero annotation coverage.
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 purpose sentence is front-loaded and efficient, but the description also carries the raw HTTP route and a 'Tags: Subscription Template Controller' OpenAPI grouping line, which are noise for an agent. Half the content does not earn 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 zero-parameter read tool this is close to sufficient. With no output schema, the description says nothing about what the returned tags look like, which is a minor gap given the tool's simplicity.
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 takes zero parameters, so there is nothing to document and the baseline of 4 applies. Schema description coverage is 100%, and the description correctly implies a parameterless retrieval.
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 clear verb+resource: 'Get tags of Subscription Templates'. An agent can distinguish this read tool from the sibling subscription_template_set_tags. The raw route line adds no additional scoping, but the intent 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?
There is no when-to-use or when-not-to-use guidance, and no alternative named. Usage is only implied by the verb 'Get' versus the sibling set_tags. An agent gets no explicit conditioning for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_template_get_template_by_uuidC
GET /api/subscription-templates/{uuid} Get subscription template by uuid Tags: Subscription Template Controller
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full behavioral burden and supplies almost none. The 'GET' verb hints at a read-only operation, but there is no disclosure of auth requirements, 404/not-found behavior, or what a template record contains.
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?
Very short and front-loaded, which is good, but the raw 'GET /api/...' path and the 'Tags: Subscription Template Controller' line are framework metadata that add no selection value for an agent.
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 retrieve-by-UUID tool it is minimally adequate, but with no annotations, no output schema, and 0% parameter coverage there is no information about the returned template shape or failure modes to compensate.
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 is responsible for the single required parameter. It only echoes '{uuid}' from the path template without explaining what the UUID identifies or the expected format, adding essentially no meaning beyond the schema's pattern constraint.
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 clear verb+resource: 'Get subscription template by uuid'. The 'by uuid' qualifier distinguishes it from sibling subscription_template_get_all_templates, but the description never explicitly names or contrasts with 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?
No guidance on when to use this versus get_all_templates or other retrieval siblings. Nothing states prerequisites, lookup semantics, or when a single-UUID fetch is preferred over a list call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_template_reorder_subscription_templatesC
POST /api/subscription-templates/actions/reorder Reorder subscription templates Tags: Subscription Template Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. Aside from the raw HTTP verb 'POST' hinting at mutation, it discloses nothing about permissions, whether the reorder is atomic, what happens to templates omitted from the items array, or the preview behavior tied to confirm.
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 text is a raw OpenAPI endpoint dump: the URL path is front-loaded ahead of the actual purpose, and the 'Tags: Subscription Template Controller' line is pure noise for an agent selecting a tool. It is short but poorly structured for its audience.
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 mutation endpoint with nested request bodies, no annotations, and no output schema, the definition is too thin: no ordering semantics, no confirmation/preview explanation, no error or permission context. An agent could invoke it but not 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 coverage is 50%, and the description adds no parameter meaning at all. It does not explain the items array, how viewPosition maps to ordering, or the confirm preview behavior, leaving the description to compensate for the coverage gap and failing to do so.
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 ('Reorder subscription templates'), which the agent can distinguish from read/write siblings by the tool name. However, it does not differentiate the effect from lookalikes such as config_profile_reorder_config_profiles, internal_squad_reorder_internal_squads, or node_plugin_reorder_node_plugins beyond the resource name.
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 reorder tool versus the other reorder siblings, nor on prerequisites (e.g., needing the full set of templates, or that viewPosition values define order). The agent is left to infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_template_set_tagsC
PATCH /api/subscription-templates/tags Set tags of Subscription Template Tags: Subscription Template Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals nothing about whether tags are replaced or merged, whether this requires auth, or what happens to existing tags — the only behavioral hint, the confirm flag, is documented in the schema, not the description.
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?
Very short, but the content is dominated by a raw HTTP method/path and a 'Subscription Template Controller' tag line rather than front-loaded human-readable intent. It is concise but partly 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?
A nested-object mutation tool with no annotations and no output schema needs the description to convey what tags are, the replace-vs-merge semantics, and the response behavior. None of that is present.
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 the required body object's uuid and tags fields carry no description. The description adds no parameter meaning beyond the name, so it fails to compensate 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 'Set tags of Subscription Template', which is a specific verb+resource, but it is embedded inside raw HTTP scaffolding ('PATCH /api/subscription-templates/tags') and controller metadata. It doesn't differentiate from sibling set_tags tools (config_profile_set_tags, internal_squad_set_tags, node_plugin_set_tags) except by resource name.
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 when-to-use, when-not-to-use, prerequisites, or alternatives are stated. An agent must infer everything from the resource name alone and from the many sibling *_set_tags tools that exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_template_update_templateC
PATCH /api/subscription-templates Update subscription template Tags: Subscription Template Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries full behavioral burden, yet it discloses nothing beyond the HTTP verb and path. It does not mention that this is a mutation, what gets overwritten, or permission/confirmation requirements (the confirm preview behavior is only described 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?
Very short and front-loaded with the operation, which is good, but the trailing 'Tags: Subscription Template Controller' line is boilerplate noise that adds no selection 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 mutation tool with no annotations, no output schema, and only half the parameters described, the description is too thin. It omits confirmation semantics, permissions, and the effect of the update, leaving the agent under-informed.
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 adds no parameter meaning at all. The nested body fields (name, uuid, templateJson, encodedTemplateYaml) are undocumented in prose, so the description fails to compensate 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?
States a specific verb and resource ('Update subscription template') plus the underlying endpoint (PATCH /api/subscription-templates), so an agent knows it mutates an existing template. It does not distinguish itself from siblings like subscription_template_create_template or subscription_template_get_template_by_uuid beyond the resource name.
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 guidance on when to use this versus create/get/delete template siblings, nor any prerequisites such as needing an existing UUID. The only content is the operation and a controller tag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_debug_srr_matcherD
POST /api/system/testers/srr-matcher Test SRR Matcher Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but discloses only that the endpoint is a POST. It does not say whether this test has side effects, requires elevated auth, validates or persists the supplied rules, or what it returns.
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 auto-generated lines that are terse but under-specified rather than concise; the purpose is not front-loaded and the tag line adds no information. Efficiency here reflects a generator stub, not deliberate structure.
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 a deeply nested body schema, no output schema, and no annotations, the description omits everything an agent needs: what the matcher evaluates, what a successful test produces, and whether the operation mutates state.
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 adds zero parameter meaning — no explanation of the body, responseRules, or the confirm flag. While the nested schema is itself well documented, the description contributes nothing to compensate for the uncovered top-level parameter.
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 reduces to the HTTP method and path plus 'Test SRR Matcher', which merely restates the tool name. It never states what SRR means, what 'testing' entails, or what the tool validates, so an agent cannot form a concrete purpose from it.
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 statement of when to use this tool, when not to, or which sibling/debug alternative to prefer. The 'Tags: System Controller' fragment is grouping metadata, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_bandwidth_statsC
GET /api/system/stats/bandwidth Get Bandwidth Stats Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing: no auth requirements, no time window, no granularity, no freshness or caching behavior. Only the implicit read-only nature of 'GET' is communicated.
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 content is short but is an unstructured route dump that redundantly restates the endpoint path, the tool name, and a tag line, none of which help an agent beyond the name itself. Being brief here reflects under-specification rather than disciplined conciseness.
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 annotations, no output schema, and an undocumented parameter, the definition leaves an agent with essentially no information beyond the tool name. For a stats endpoint in a crowded system_* family, critical distinguishing and parameter details are 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 single parameter 'tz' has 0% schema description coverage and is never mentioned in the description, so an agent gets no signal about timezone formatting or its effect on the returned statistics. This is a clear documentation gap the description should have filled.
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 concrete verb and resource ('Get Bandwidth Stats'), so the agent knows it retrieves bandwidth statistics. However, it is a raw route echo with no differentiation from closely related siblings such as system_get_stats, system_get_http_stats, system_get_stats_digest, or the bandwidth_stats_* family, so selection remains ambiguous.
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 when-to-use guidance, no indication of how this differs from system_get_stats or system_get_http_stats, and no mention of prerequisites or scope. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_configurationC
GET /api/system/configuration Get Remnawave Configuration Returns some of the configuration values. Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full behavioral burden. It discloses one useful trait - that only 'some' configuration values are returned - but says nothing about authentication requirements, whether values are sensitive, or caching/rate behavior. For a config-read endpoint the risk is low, yet the disclosure is thin.
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 text is short and front-loads the resource, but it wastes lines on a raw REST path and a boilerplate 'Tags: System Controller' that add little for an agent. The useful content is a single vague sentence.
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, so the description is the only place to learn what is returned - yet it only says 'some of the configuration values' without enumerating or characterizing them. For a no-param read endpoint that is otherwise simple, this leaves the agent unable to anticipate the response.
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 takes zero parameters, so per the baseline rule a 4 applies; there is nothing for the description to clarify here. Schema coverage is 100% and the empty object schema is self-explanatory.
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 verb+resource ('Get Remnawave Configuration'), which is better than a bare name restatement. However, it never distinguishes this from siblings like remnawave_settings_get_settings or system_get_metadata, and the qualifier 'Returns some of the configuration values' is vague about what configuration is actually retrieved. An agent cannot tell which system/config read to pick without opening the 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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as remnawave_settings_get_settings. The only context is the raw REST path and a 'System Controller' tag, which implies usage but does not guide tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_http_statsD
GET /api/system/stats/http Get HTTP Stats Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, and it discloses nothing. It does not say whether the call is read-only (implied but unstated), what scope of stats is returned, whether results are cached, or whether authentication/privileges are required.
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 short, but the three lines are boilerplate: the endpoint path merely re-encodes the tool name and the 'Tags: System Controller' line is internal metadata. Nothing useful is front-loaded, so brevity comes from omission rather than efficiency.
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, no annotations, and no parameters, the description is the only source of information about this tool and it provides none. An agent cannot tell what the returned stats look like or when this endpoint is worth calling.
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 takes zero parameters, so per the baseline rule there are no parameter semantics to document. The empty schema leaves nothing ambiguous, and the description neither helps nor harms 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?
The description 'Get HTTP Stats' essentially restates the tool name system_get_http_stats, adding only the raw endpoint path and a controller tag. It gives no sense of what 'HTTP stats' actually contains (request counts, latency, error rates) and does nothing to distinguish it from siblings like system_get_stats, system_get_bandwidth_stats, or system_get_nodes_statistics.
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 call this tool versus the many other system/stats siblings. No conditions, prerequisites, or alternatives are mentioned anywhere in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_metadataC
GET /api/system/metadata Get Remnawave Information Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it is a GET request, which implies a read-only operation, but does not disclose authentication requirements, rate limits, or what data is returned. The tag 'System Controller' is minimal and doesn't add 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 very short, consisting of the endpoint, a title, and a tag. It is front-loaded with the method and path. While concise, it could be more informative without being overly long, but the brevity is efficient.
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 it is a zero-parameter tool with no output schema, the description provides the minimum: what it does and the endpoint. However, it does not mention what 'metadata' encompasses or how it differs from other system tools, leaving gaps in understanding its role. For a simple retrieval tool, this is barely adequate.
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. No parameter information is needed, and the description does not introduce any confusion about 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 provides the HTTP method and endpoint (GET /api/system/metadata) and the title 'Get Remnawave Information', which indicates a read operation on system metadata. However, it does not distinguish this tool from siblings like system_get_configuration or system_get_stats, and 'Remnawave Information' is vague. It states the purpose but lacks specificity and 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?
There is no guidance on when to use this tool versus alternatives such as system_get_configuration, system_get_health, or system_metrics. The description implies a retrieval operation but gives no context for its selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_nodes_metricsC
GET /api/system/nodes/metrics Get Nodes Metrics Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only implies a read via the HTTP verb. It says nothing about authentication requirements, whether metrics are current vs. historical, aggregation window, or response shape. A bare endpoint string is far short of what an unannotated tool needs.
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 short and contains no padding, but the content is mostly raw HTTP boilerplate rather than an agent-oriented summary. The 'Tags: System Controller' line is the only mild routing signal, and it is placed last rather than front-loaded with actual meaning.
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 parameters, no output schema, and no annotations, the description is the only source of information, and it omits what the metrics are, their granularity, and the expected response. For a metrics-retrieval endpoint with output-schema absence, this is under-specified.
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 takes zero parameters, which is the baseline-4 case. There is nothing for the description to compensate for, and no misleading parameter hints are given.
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 is essentially a restatement of the tool name: 'GET /api/system/nodes/metrics' plus 'Get Nodes Metrics'. It tells the agent this retrieves node metrics, but nothing about which metrics or how it differs from close siblings like system_get_nodes_statistics, system_metrics, or nodes_usage_history_get_stats_nodes_usage. This is tautology territory rather than a specific verb+resource distinction.
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 when-to-use guidance, no prerequisites, and no mention of alternatives, despite several overlapping siblings that also surface node/system metrics. The agent must infer applicability from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_nodes_statisticsC
GET /api/system/stats/nodes Get Nodes Statistics Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only implies read-only via the 'GET' convention and the 'System Controller' tag. It says nothing about what is returned, aggregation scope, time window, freshness, or any side effects.
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 short and has no padding, but the brevity comes from under-specification rather than discipline, and the raw route line is not front-loaded as meaningful information for an agent.
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 annotations, no output schema, and no explanation of return content, the definition leaves an agent unable to predict what 'nodes statistics' contains or how to interpret it, which is inadequate even for a simple read 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 tool takes zero parameters, so there is nothing for the description to clarify beyond the schema; the baseline for a parameterless tool applies.
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 text is essentially a restatement of the tool name plus the raw HTTP route ('GET /api/system/stats/nodes') and a group tag. It gives no indication of what statistics are returned or how this differs from close siblings such as system_get_nodes_metrics, system_get_stats, or system_get_bandwidth_stats.
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 when-to-use guidance, no prerequisites, and no mention of any alternative. An agent cannot tell from this description when nodes statistics should be fetched instead of nodes metrics or the general stats endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_recapD
GET /api/system/stats/recap Get Recap Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations and the description carries no behavioral information: no mention of permissions, caching, rate limits, or what 'recap' covers. It adds nothing beyond the route.
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?
Extremely short but that shortness is under-specification, not conciseness. The tag line is boilerplate that adds no 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 stats endpoint sitting among ~20 system_* siblings, the description provides nothing an agent needs to decide whether to call it or what it returns (no output schema either).
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?
Zero parameters, so the baseline is 4. Nothing to document, and the empty schema is consistent with 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 is essentially the HTTP route plus the OpenAPI summary 'Get Recap' and a controller tag. It restates the tool name rather than explaining what a 'recap' actually contains or how it differs from other system stats siblings like system_get_stats, system_get_stats_digest, or system_get_metadata.
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 guidance on when to use this tool, when not to, or which sibling stats endpoint to prefer. Given the dense cluster of system_get_* stats tools, this is a serious omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_remnawave_healthC
GET /api/system/health Get Remnawave Health Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, yet it says nothing about authentication requirements, rate limits, or what a healthy vs unhealthy result implies. It only restates the HTTP verb and path, which is not 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 text is short and front-loads the endpoint, but the raw path and auto-generated "Tags: System Controller" line are filler that do not earn their place for an agent choosing a tool.
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 annotations and no output schema, the description is the only source of context for this health-check endpoint, and it omits what the response reports and under what conditions it should be used. It is under-specified for an agent needing to pick it over api_status or system_get_stats.
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 takes zero parameters, so the schema is trivially complete and there is nothing for the description to compensate for. Baseline of 4 applies for a parameterless tool, with no misleading parameter claims.
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?
"Get Remnawave Health" essentially restates the tool name (system_get_remnawave_health), so the description is close to tautological. The raw endpoint path and the auto-generated "Tags: System Controller" line add no descriptive meaning, and nothing distinguishes it from siblings like api_status, auth_get_status, or system_get_stats.
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 call this versus the many other status/health/stats siblings (api_status, system_get_stats, system_get_metadata). No prerequisites, no context for its use are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_statsD
GET /api/system/stats Get Stats Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided and the description carries no behavioral information at all: no mention of read-only nature, data freshness, scope of aggregation, permissions, or cost. The description is effectively an auto-generated route stub.
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 short, but brevity here reflects under-specification rather than conciseness — every line (route, title, tags) is machine-generated metadata that adds no meaning for an agent.
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 annotations, no output schema, and no parameter documentation, the description is the only source of meaning and it provides none. An agent cannot tell what this returns or how it differs from the many sibling stats endpoints.
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 takes zero parameters and the schema is empty with 100% coverage, so there is nothing for the description to clarify. Baseline 4 applies when there are no parameters to document.
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 only restates the tool name ('Get Stats') plus the raw HTTP route, which is a tautology rather than an explanation of what statistics are returned. It does nothing to distinguish it from siblings like system_get_bandwidth_stats, system_get_http_stats, system_get_nodes_statistics, or system_get_stats_digest.
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, what it covers, or which sibling to prefer for bandwidth, HTTP, node, or digest statistics. The agent is left to guess among a dozen similarly named system_* stats tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_stats_digestB
GET /api/system/stats/digest Get Stats Digest Aggregated statistics for a datetime range [start, end): created and expired users, total traffic, traffic spent by users created within the range and new HWID devices. Per-user traffic history is stored with daily granularity (UTC), so the "traffic by new users" metric snaps to whole days at the range edges. Tags: System Controller Пагинация через query-параметры: start.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End of the range, ISO 8601 datetime with timezone (e.g. 2026-07-16T00:00:00Z). Exclusive. | |
| start | Yes | Start of the range, ISO 8601 datetime with timezone (e.g. 2026-07-15T00:00:00Z). Inclusive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a genuinely useful behavioral trait: per-user traffic history is stored at daily UTC granularity, so the 'traffic by new users' metric snaps to whole days at range edges. However, it omits auth/permission requirements, rate limits, and any statement on return characteristics for what is a GET endpoint.
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 useful body is a single dense sentence that earns its place, but the definition opens with a redundant HTTP path plus a restated title, and ends with a confusing fragment about pagination. Front-loading the redundant restatement dilutes the useful 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?
There is no output schema and no annotations, so the description must stand alone; it does describe the metric categories and the granularity caveat, which is more than many siblings offer. Still it does not describe the shape of the response or permissions, leaving gaps for a 2-parameter reporting 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 100%, with both start (inclusive) and end (exclusive) fully documented including ISO 8601 format. The description adds no parameter meaning beyond the schema; the trailing 'Пагинация через query-параметры: start' mentions pagination via query parameters but is garbled and potentially misleading given only two range params exist. Baseline 3 applies.
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 resource (aggregated system statistics over a datetime range) and enumerates the concrete metrics returned: created/expired users, total traffic, traffic by new users, and new HWID devices. This differentiates it reasonably from siblings like system_get_stats or system_get_recap. The redundant 'GET /api/system/stats/digest' line and 'Get Stats Digest' restatement add noise but don't obscure the purpose.
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 guidance on when to choose this tool over alternatives such as system_get_stats, system_get_recap, or system_get_bandwidth_stats, all of which sit in the same family. The datetime range is implied as the use case but no exclusions or comparison conditions are stated. The trailing pagination sentence is confusing rather than directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_get_x25519_keypairsC
GET /api/system/tools/x25519/generate Generate 30 X25519 keypairs Tags: System Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the operation is read-only or mutating, whether it persists generated keys, whether it consumes system resources, or whether it is safe to call repeatedly. Listing the HTTP method (GET) hints at read semantics but is not a reliable behavioral guarantee.
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 short but is largely a restatement of the HTTP endpoint and tag metadata rather than an explanation of the tool's purpose. It is not bloated, but the front-loaded sentence does little beyond stating the obvious action.
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 no annotations, no output schema, and zero parameters, the description should at least explain what the generated X25519 keypairs are for, whether they are returned or stored, and whether the operation has side effects. None of this is covered.
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?
Parameter count is 0, and the schema has no properties. Per the scoring guide, 0 params yields a baseline of 4. The description adds no parameter detail because there are none, which 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 action (generate 30 X25519 keypairs) and includes the HTTP route GET /api/system/tools/x25519/generate and a tag. The purpose is understandable, but it does not differentiate from the only similar sibling keygen_generate_key, nor explain what kind of keypairs or their use.
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 guidance on when or why to use this tool versus alternatives such as keygen_generate_key or other system_* tools. The agent is left to infer usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_metricsA
GET /metrics — метрики Prometheus. Эндпоинт использует Basic-auth (схема Prometheus в спеке), не Bearer-токен панели. Требует REMNA_METRICS_USER/REMNA_METRICS_PASS. Без них возвращает понятный отказ, не выполняет запрос. Примечание: /metrics отсутствует как отдельный path в OpenAPI-спеке панели, поэтому этот инструмент не генерируется, а добавлен вручную.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the auth scheme (Basic-auth, not panel Bearer token), the required credentials, and the failure mode (clear refusal, request not executed). The one gap is not describing the returned metrics format/payload.
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 endpoint and resource are front-loaded, followed by the auth requirement and failure behavior. The trailing note about the path being hand-added is meta-context rather than invocation guidance, but it is compact and arguably useful.
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, annotation-free, output-schema-free tool, the description covers the essentials: what it returns (Prometheus metrics), how to authenticate, and what happens on missing credentials. Only the response format is left implicit.
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 takes zero parameters, so per the baseline the schema fully covers inputs. The description adds nothing about parameters because there are none to describe, which 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 names a specific endpoint (GET /metrics) and resource (Prometheus metrics), which is concrete and identifiable. It doesn't explicitly contrast with siblings like system_get_stats or system_get_nodes_metrics, but the endpoint scope 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?
It states the auth prerequisite (Basic-auth with REMNA_METRICS_USER/REMNA_METRICS_PASS) and the behavior when credentials are absent, which is real usage context. However, it never says when an agent should prefer this over the sibling system_* metrics tools, so alternative selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
torrent_blocker_reports_get_torrent_blocker_reportsC
GET /api/node-plugins/torrent-blocker Get Torrent Blocker Reports Please note that the filters here are primarily intended for use by the frontend and rely on expensive operators such as LIKE under the hood. Misusing these filters may negatively impact the performance of your database. Tags: Node Plugins Controller Пагинация через query-параметры: start, size.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results to return, no more than 1000 | |
| start | No | Start index (offset) of the results to return, default is 0 | |
| filters | No | ||
| sorting | No | ||
| filterModes | No | ||
| globalFilterMode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a meaningful behavioral trait – that filters are expensive and misuse can degrade database performance – but omits permissions/auth requirements, whether the operation is read-only (only implied by 'GET'), and any result-volume or rate considerations.
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 text opens with a raw route, repeats the title, appends a 'Tags:' boilerplate line, and ends with a Russian sentence about pagination. Useful content (the filter-cost warning) is buried in the middle rather than front-loaded, and there is cross-language noise.
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 6-parameter tool with nested objects, no annotations, and no output schema, an agent would need guidance on filters/sorting/filterModes structure and pagination limits. The description covers pagination nominally and filter cost, but leaves most parameter semantics and the return shape 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 description coverage is only 33%: size and start are documented in the schema and merely restated (in Russian) by the description. The four structured parameters (filters, sorting, filterModes, globalFilterMode) get no explanation of their shape or accepted values beyond a generic performance warning about filters.
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: 'Get Torrent Blocker Reports'. An agent can tell this is the list/read endpoint for torrent blocker reports, distinct in kind from the sibling stats and truncate tools, though the description never names those siblings to reinforce the distinction.
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 (fetch reports with optional filtering/pagination) and it warns that the filters are built for the frontend and rely on expensive LIKE operators, which can hurt database performance. However, it never states when to prefer this tool over torrent_blocker_reports_get_torrent_blocker_reports_stats or any other listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
torrent_blocker_reports_get_torrent_blocker_reports_statsC
GET /api/node-plugins/torrent-blocker/stats Get Torrent Blocker Reports Stats Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The 'GET' prefix implies a read-only, non-destructive operation, but nothing is disclosed about the shape of the returned statistics, aggregation window, or any auth/rate-limit 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?
It is very short and front-loaded, but the bulk of the content is auto-generated filler ('Tags: Node Plugins Controller') rather than information an agent can act on. Brevity here reflects under-specification rather than disciplined conciseness.
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 annotations and no output schema, the description should describe what statistics are returned and any scoping, but it says nothing beyond the endpoint path. An agent cannot predict the response or know whether the call requires plugin-specific setup.
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 takes zero parameters, so there is nothing for the description to disambiguate. The baseline of 4 applies for a parameterless operation.
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 the verb (GET) and resource (Torrent Blocker Reports Stats), which is enough to tell it apart from the sibling torrent_blocker_reports_get_torrent_blocker_reports (list) and truncate. However, it is largely a restatement of the tool name plus raw HTTP path, and it never says what 'stats' actually contains.
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 call this versus the sibling report-listing or truncate tools, and no prerequisites, auth, or scoping conditions are given. The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
torrent_blocker_reports_truncate_torrent_blocker_reportsC
DELETE /api/node-plugins/torrent-blocker/truncate Truncate Torrent Blocker Reports Tags: Node Plugins Controller
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It exposes the DELETE method, hinting at a destructive operation, but never states that truncation removes/erases report data, whether it is reversible, or what permissions are required. For a destructive tool with zero annotation coverage this is a significant gap.
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 short and front-loads the endpoint, but it is a raw HTTP dump and the trailing 'Tags: Node Plugins Controller' line is metadata noise rather than useful information for an agent deciding how to call the tool.
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 operation with no annotations and no output schema, the description should explain the impact of truncation and any caveats. It leaves the agent without knowledge of what is destroyed or whether the action is reversible, so it is not complete enough for the tool's 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?
There is a single parameter (confirm) and schema description coverage is 100%, so the schema fully documents the preview-vs-execute semantics. The description adds no additional parameter meaning, which is the expected baseline when the schema already does the work.
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 (truncate/delete) on a specific resource (Torrent Blocker Reports) and the raw HTTP line (DELETE /api/node-plugins/torrent-blocker/truncate) reinforces it, distinguishing it from the two sibling GET tools. It is clear enough to route correctly, though it is essentially an HTTP endpoint dump rather than a curated explanation.
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 when-to-use guidance and no mention of the sibling torrent_blocker_reports_get_* tools or when truncation is preferable to just reading reports. The DELETE verb implies a destructive cleanup, but nothing states prerequisites or the condition that should trigger it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_bulk_actions_bulk_all_extend_expiration_dateC
POST /api/users/bulk/all/extend-expiration-date Extend expiration date for all users by days Tags: Users Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses almost nothing: it echoes the HTTP route and one line of intent. It does not warn that this is an unbounded mutation touching every account, whether it is reversible, or what happens to users with no expiration set. The confirm/preview behavior is only documented in the schema, not the description.
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 one substantive sentence is front-loaded and clear, but the verbatim POST route and the auto-generated 'Tags: Users Bulk Actions Controller' line add no decision-relevant 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?
This is a high-impact bulk mutation over all users with no annotations, no output schema, and only half the parameters documented. The description never covers return behavior, blast radius, or confirmation semantics, leaving the agent under-informed for the operation's 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 coverage is 50%; the confirm parameter is explained in the schema while extendDays carries only min/max bounds. The phrase 'by days' gives extendDays its meaning (integer day offset), which is marginal added value, and the nested body shape is left 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?
States a specific verb+resource+scope: extend the expiration date for every user by a number of days. The 'for all users' scope implicitly separates it from the per-user and per-selection siblings, though it never names an alternative explicitly.
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 when-to-use, prerequisites, or alternative routing is given. An agent could infer that 'all' means every user, but nothing tells it when to prefer this over users_bulk_actions_bulk_extend_expiration_date or users_extend_user_expiration_date.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_bulk_actions_bulk_all_reset_user_trafficC
POST /api/users/bulk/all/reset-traffic Reset user used traffic for all users Tags: Users Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a destructive mutation (clearing all users' used-traffic counters), but the description says nothing about irreversibility, whether it requires confirmation, permission scope, or impact on statistics/billing. Only the schema's confirm parameter hints at confirmation behavior, which is not reflected in the description itself.
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 very short and front-loaded with the HTTP route, but the 'Tags: Users Bulk Actions Controller' line adds no value for an agent and the whole body is essentially a route dump rather than a structured description. Efficient in size, weak in useful structure.
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 system-wide destructive bulk operation with zero annotations and no output schema, the description far under-delivers: it offers no warning about the global blast radius, no prerequisites, and no routing vs. the two sibling reset tools. An agent could invoke this and wipe traffic counters for every user with no caution conveyed.
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 the confirm parameter is fully documented in the schema, including the Russian-language 'preview without confirm:true' behavior. Baseline 3 applies since the description adds no parameter 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 specific verb (reset) and resource (user traffic) scoped to ALL users via the endpoint path. It is clearly distinguishable from the sibling users_bulk_actions_bulk_reset_user_traffic (which presumably targets a subset) and users_reset_user_traffic (single user). However, the phrasing is largely a restatement of the REST route rather than a natural-language definition of purpose.
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 explicit guidance about when to use this instead of the filtered bulk reset (users_bulk_actions_bulk_reset_user_traffic) or the single-user reset (users_reset_user_traffic). The 'all' scope is implied by the name/path but never stated as a usage condition or with warnings about the blast radius of operating on every user.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_bulk_actions_bulk_delete_usersC
POST /api/users/bulk/delete Bulk delete users by User IDs Tags: Users Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. For a destructive bulk-delete it says nothing about irreversibility, required permissions, the confirmation gate, or the 500-user cap. The only behavioral hint (the confirm/preview mechanism) lives in the schema, not the description.
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?
Very short and front-loaded, but it wastes space on the raw POST path and a 'Tags: Users Bulk Actions Controller' string that an agent cannot use. The one meaningful sentence is buried after boilerplate.
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?
A destructive bulk mutation with no annotations, no output schema, and a nested body object. The description omits the confirmation requirement, irreversibility, and any indication of what the call returns, so it is not complete enough for an agent to invoke it safely.
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 well documented in the schema while body/userIds is not. The description's 'by User IDs' lightly signals what body expects but adds no format, limit, or batching detail. At the 50% midpoint this is a baseline 3.
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 (delete), resource (users), and scope (bulk, by User IDs), so the agent can distinguish it from the single-user users_delete_user. However it does not explicitly name or differentiate itself from sibling bulk-delete variants such as users_bulk_actions_bulk_delete_users_by_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 when-to-use guidance, no prerequisites, and no mention of alternatives. The description never explains when to prefer this over users_delete_user (single) or users_bulk_actions_bulk_delete_users_by_status, leaving routing to be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_bulk_actions_bulk_delete_users_by_statusC
POST /api/users/bulk/delete-by-status Bulk delete users by status Tags: Users Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description bears the full disclosure burden, and it discloses almost nothing: no irreversibility warning, no permission requirements, no indication of how many users a status match can affect, and no mention of the preview/confirm flow that the schema reveals. Only the tool name conveys the destructive nature.
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?
Very short and front-loaded, but the raw 'POST /api/users/bulk/delete-by-status' line and the 'Tags: Users Bulk Actions Controller' boilerplate are noise that displaces useful content. Efficient, but not every line 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 bulk operation with zero annotations, no output schema, and a nested required body object, the description omits critical context: confirmation semantics, blast radius, and failure behavior. The agent cannot safely invoke this from the description 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?
Schema description coverage is 50%: the 'confirm' parameter carries a detailed (Russian) description of the preview behavior, but the required 'status' enum has no per-value explanation. The description adds no meaning to either parameter, leaving the caller to infer the enum's effect from names alone.
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 ('Bulk delete') and resource ('users') with a scoping qualifier ('by status'), which distinguishes it from the ID-based users_bulk_actions_bulk_delete_users sibling. It stops short of explicitly naming that sibling or clarifying the status filter's semantics, so it lands at clear-but-undifferentiated rather than fully distinguished.
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 choose this over users_bulk_actions_bulk_delete_users (targeted delete) or users_disable_user / users_bulk_actions_bulk_update_users for less destructive outcomes. No prerequisites, no warning that this is irreversible mass deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_bulk_actions_bulk_extend_expiration_dateB
POST /api/users/bulk/extend-expiration-date Extend expiration date for specified users by days Tags: Users Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about permissions, reversibility, idempotency, or failure behavior for a mutation that alters user state. The confirm/preview behavior is only disclosed by the schema description of the `confirm` parameter, not by the tool description itself, so this text adds little beyond the endpoint string.
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 essential purpose sentence is short and front-loaded after the endpoint, but the raw 'POST /api/users/bulk/extend-expiration-date' line and 'Tags: Users Bulk Actions Controller' are framework boilerplate that do not help an agent select or invoke the tool.
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 bulk mutation with no annotations and no output schema, the description omits required context: whether results are previewed vs applied (only in schema), what happens on partial failure, ordering, or expected response shape. It is not sufficient on its own to call this tool safely.
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%: `confirm` is well documented in the schema, while `userIds` and `extendDays` rely on constraints (max 500, range 1-9999). The description adds only 'by days' to clarify the `extendDays` semantics and says nothing about the userIds array beyond 'specified users'.
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 ('Extend') and resource ('expiration date') scoped to 'specified users by days', which distinguishes it from the single-user `users_extend_user_expiration_date` and the all-users `..._bulk_all_extend_expiration_date` sibling. The HTTP method/path and 'Tags' line add boilerplate but the core 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?
Implicit usage is present through 'specified users', suggesting this is the bulk variant for an explicit list rather than all users. However, it never names the single-user or bulk-all alternatives or states the conditions (e.g. list size, prerequisites) that select this tool over them, leaving disambiguation to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_bulk_actions_bulk_reset_user_trafficC
POST /api/users/bulk/reset-traffic Bulk reset traffic users by User IDs Tags: Users Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It conveys only the method and endpoint; it says nothing about whether resetting traffic is reversible, whether it is destructive, rate limits, or side effects on subscription counters. The only behavioral hint comes from the schema's confirm parameter, not the description.
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 filler lines: a raw path and a 'Tags:' line that is pure OpenAPI scaffolding with no value to an agent. The single informative clause is buried after the URL. It is short but not front-loaded with useful 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 mutating bulk operation with no annotations and no output schema, the definition is under-specified. It omits max-batch behavior (maxItems 500), the confirmation-based preview mechanism described in the schema, and any indication of what the call returns or alters.
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 documented in the schema; the nested body.userIds array with maxItems 500 is not). The description adds nothing about parameter meaning beyond restating 'by User IDs'. With one of two parameters documented and the nested structure undocumented, this lands at the baseline rather than compensating for the 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 verb and resource ('Bulk reset traffic users by User IDs') plus the raw HTTP route, which identifies the operation. However it is largely a restatement of the tool name and title, and the phrasing 'Bulk reset traffic users' is awkward. It does not differentiate itself from sibling users_reset_user_traffic or users_bulk_actions_bulk_all_reset_user_traffic beyond the implied 'by IDs' 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?
No when-to-use or when-not-to-use guidance. The 'by User IDs' phrase implicitly distinguishes it from the 'all users' variant, but the description never names alternatives or states prerequisites. Siblings like users_reset_user_traffic (single) and bulk_all_reset_user_traffic (everyone) are not contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_bulk_actions_bulk_revoke_users_subscriptionC
POST /api/users/bulk/revoke-subscription Revoke users subscription by User IDs Tags: Users Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it delivers almost nothing: no indication that this is a destructive write, whether it needs confirmation, permissions required, or what happens to non-matching IDs. The only behavioral detail (preview without confirm:true) lives in the schema, not the description.
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?
Very short, but the front-loaded HTTP method/path and the OpenAPI 'Tags:' line are generator artifacts that do not help an agent. The one meaningful sentence is buried after the route.
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 bulk destructive mutation with no annotations and no output schema, the description is far too thin: it omits confirmation semantics, batch limits, and error/permission behavior. What exists is largely a restatement of the 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 coverage is only 50%: the confirm parameter is documented in the schema, but userIds has no description. The description's 'by User IDs' adds marginal meaning and omits the useful constraints (1-500 items) that a caller would want to know.
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 (revoke) and resource (users subscription) with a clear bulk scope ('by User IDs'), which distinguishes it from the single-user sibling users_revoke_user_subscription. The raw POST path and 'Tags:' line add noise rather than clarity, but the core 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?
No guidance on when to use this bulk tool versus users_revoke_user_subscription, and no prerequisites or conditions are given. The 'bulk' scope is only implied by the tool name and the plural 'User IDs'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_bulk_actions_bulk_update_all_usersC
POST /api/users/bulk/all/update Bulk update all users Tags: Users Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only restates the HTTP route and controller tag. For a mass mutation affecting ALL users, it discloses nothing about which fields get written, permission requirements, reversibility, or the preview-vs-execute behavior of confirm.
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?
Very short and the useful phrase 'Bulk update all users' is present, but a third of the text is noise: the raw endpoint path 'POST /api/users/bulk/all/update' and the 'Tags: Users Bulk Actions Controller' string add no decision-relevant 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?
With no annotations, no output schema, a required nested body object, and 50% parameter coverage, the description is too thin. It gives no sense of what a bulk update actually changes or how the confirm-based preview works, leaving key behavior undocumented.
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%, and the description adds no parameter meaning at all. The nested body fields (status, expireAt, trafficLimitBytes, etc.) and the confirm preview semantics are only documented in the schema, so the description does not compensate for the partial 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?
States a specific verb and resource with scope: 'Bulk update all users'. The 'all' scope distinguishes it from the sibling users_bulk_actions_bulk_update_users, though the description never names that alternative explicitly.
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 guidance on when to use this versus bulk_update_users or individual users_update_user. The only usage hint (the confirm flag) lives in the schema, not the description, so the description itself offers no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_bulk_actions_bulk_update_usersC
POST /api/users/bulk/update Bulk update users by User IDs Tags: Users Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only states 'POST' and 'Bulk update users by User IDs.' It omits critical behavior such as the confirm-triggered preview mode, mutation side effects, the 500-user limit, and required permissions.
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 terse and front-loaded with the HTTP method and endpoint. The tag line is metadata rather than guidance, but the overall text is appropriately sized for a generated bulk-update endpoint.
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?
This is a bulk mutation tool with a nested body, no annotations, no output schema, and a required confirm behavior that the description never mentions. For correct invocation, the description should disclose more about the confirmation preview and the fields that can be updated.
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 only maps the userIds parameter ('by User IDs'). It does not explain the updatable fields object or add meaning beyond the schema for most parameters, leaving the schema to carry the rest.
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: bulk update users, scoped by User IDs. It is clear what the tool does, but it does not explicitly contrast with siblings such as bulk_update_all_users or bulk_update_users_internal_squads.
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 explicit guidance on when to use this tool versus alternatives. The phrase 'Bulk update users by User IDs' implies a use case but does not name when-not conditions, required prerequisites, or sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_bulk_actions_bulk_update_users_internal_squadsC
POST /api/users/bulk/update-squads Bulk update users internal squads by User IDs Tags: Users Bulk Actions Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses essentially nothing: no permissions/scope requirements, no reversibility, no statement of what happens to existing squad assignments, and no note of bulk limits (max 500 IDs lives only in the schema). The only behavioral signal is the literal 'POST' verb, which is already implied by the tool name.
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 text is short, but it spends lines on raw HTTP route and an internal 'Tags: Users Bulk Actions Controller' label that carries no selection value for an agent. The substantive sentence is front-loadable but not elaborated, so the length is small yet poorly invested.
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 bulk mutation with nested body objects, no output schema, no annotations, and a mandatory 'confirm' gating mechanism, the description is inadequate. It does not explain the preview-vs-execute confirm flow, the 1-500 userId limit, or any result/impact of the operation, leaving the agent to infer the write semantics entirely from the route string.
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%, and the documented half (a Russian-language 'confirm' flag on the top-level object) is not echoed or clarified by the description. The description's lone parameter hint, 'by User IDs', restates what the schema already names, and it says nothing about 'activeInternalSquads' semantics (replace vs. add, empty-array behavior). The description fails to compensate 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 verb and resource ('Bulk update users internal squads by User IDs'), so the general intent is legible. However, 'update internal squads' is ambiguous about whether the supplied squad list replaces or merges with existing memberships, and there is no differentiation from the very similar sibling 'internal_squad_add_many_users_to_internal_squad'. This ambiguity around the core behavior keeps it at vague-but-present rather than 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?
There is no when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as 'internal_squad_add_users_to_internal_squad' or 'users_bulk_actions_bulk_update_all_users'. The agent receives the operation name and nothing about when it should be chosen over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_create_userC
POST /api/users Create a new user Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing beyond the HTTP method. It does not mention that this is a mutating write, that a confirm flag gates execution (documented only in the schema in Russian), auth/permission requirements, side effects on squads/traffic counters, or error behavior for duplicate usernames. Only the implicit POST semantics hint at a write.
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 text is short, but it is under-specified rather than concise: three fragments where two of them (the raw route and the controller tag) convey nothing an agent can act on. Brevity here comes from omission, not from efficient editing.
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 mutation tool with a nested object body, no annotations, and no output schema, the description supplies none of the context an agent needs. There is no confirmation of write semantics, no required-field summary, no indication of what is returned on success, and no warning about validation constraints (e.g., unique username).
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 two top-level parameters are the ones left thin: `body` has no description and `confirm` is described only in the schema (and in Russian). The description adds no parameter meaning whatsoever, so it fails to compensate for the coverage gap even though the nested body fields are well documented in the schema itself.
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?
"Create a new user" is a clear verb+resource, so the basic purpose is legible, and the REST path reinforces it. But the description offers zero differentiation from the many sibling user tools (users_update_user, users_bulk_actions_bulk_update_users, users_create... via bulk) and names no distinguishing capability. It reads as an auto-generated title plus endpoint line rather than a purposeful statement.
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 when-to-use guidance, no mention of prerequisites, and no pointer to alternatives such as the bulk user creation or update paths. An agent must infer everything about selection from the name alone. Only the bare action is stated, which is the definition of no guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_delete_userC
DELETE /api/users/{userId} Delete user Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not state that deletion is permanent/irreversible, what related data (subscriptions, devices, connections) is affected, or what permissions are needed. The confirm-gate behavior is only visible in the schema, not the description.
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 short and front-loaded with the HTTP method and path, with no wasted words. However, the tag line 'Tags: Users Controller' adds no value, and the overall brevity is under-specification rather than earned conciseness.
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, zero-annotation, no-output-schema tool with half its parameters undocumented, the description is far too thin. An agent gets no warning about irreversibility, cascading effects, or required permissions before invoking a delete.
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 confirm parameter is documented in the schema, but userId is not described at all. The description does not compensate by explaining that userId identifies the target user, adding no meaning beyond the path template.
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 ('Delete user') and echoes the route 'DELETE /api/users/{userId}', so an agent knows exactly what it does. It does not, however, distinguish it from siblings like users_bulk_actions_bulk_delete_users or users_disable_user/revoke_user_subscription, so it falls short of a 5.
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 single-user delete versus the bulk delete tools or the softer disable/revoke siblings. The only hint is the route template itself, which is implied rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_disable_userC
POST /api/users/{userId}/actions/disable Disable user Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it does nothing beyond restating the name and the raw HTTP route. It never says whether disabling is reversible, what happens to active connections/traffic, whether it requires elevated permissions, or how it differs from deletion. For a mutation tool this is a serious disclosure gap.
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 short and not padded, but it is a raw OpenAPI dump rather than front-loaded prose: the method/path line leads, and "Tags: Users Controller" is pure noise that adds no decision 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?
With no annotations, no output schema, and half the parameters undocumented, the description needed to explain the mutation's effect and the confirm/preview behavior but does neither. It is not sufficient for an agent to invoke this safely.
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%: userId has no description at all, and the confirm flag's meaning (preview vs. actual execution) lives only in the schema. The description contributes nothing beyond echoing {userId} in the path template, so it fails to compensate 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 gives a specific verb+resource ("Disable user") that an agent can act on, and the POST path confirms the target resource. It offers no differentiation from close siblings such as users_enable_user, users_delete_user, or users_revoke_user_subscription, so it stops short of a 5.
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 when-to-use guidance, no statement of prerequisites, and no mention of the obvious alternatives (enable, delete, revoke subscription). The agent is left to infer the intended scenario entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_enable_userC
POST /api/users/{userId}/actions/enable Enable user Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden for a state-changing operation, yet it says nothing about permissions, side effects on the user's subscription/traffic, or idempotency. The confirm-gate behavior is documented only in the schema, not in the description.
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 short and front-loads the method and path, but the trailing 'Tags: Users Controller' line is boilerplate that earns no place, and the substantive body is essentially a restatement 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 mutation tool with no annotations and no output schema, the description omits nearly everything an agent needs: prerequisites, expected result, and the confirm/confirmation flow that governs whether the request is actually sent.
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 well documented inside the schema, but userId has no description in either place. The description text adds no meaning to either parameter, so it fails to compensate 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 the HTTP method and path (POST /api/users/{userId}/actions/enable) and the phrase 'Enable user', which names the verb and resource. However, 'Enable user' largely restates the tool name users_enable_user and there is no differentiation from the obvious counterpart users_disable_user or the bulk/bulk-status variants. Purpose is understandable but adds little beyond the identifier.
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 guidance on when to use this single-user enable versus users_bulk_actions_bulk_update_users, users_disable_user, or any prerequisite that the user must exist. The only clue is the endpoint path itself, which is implied rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_extend_user_expiration_dateA
POST /api/users/{userId}/actions/extend Extend user expiration date If user status is EXPIRED, the new expiration date is calculated from the current date and the user becomes ACTIVE. If user status is ACTIVE, the given number of days is added to the existing expiration date. DISABLED and LIMITED users will be extended, but their status will not change. Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| userId | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the status-dependent outcomes (EXPIRED recomputes from now and flips to ACTIVE; ACTIVE adds days to the existing date; DISABLED/LIMITED are extended without status change). It omits permission/authorization requirements and the confirm-gating behavior, which is only 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?
The behavioral explanation is front-loaded and efficient, but the raw HTTP method/path header and the trailing "Tags: Users Controller" are noise that add no selection or invocation value for an agent.
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 mutation tool with no annotations, no output schema, and a nested body, the description covers the important behavioral consequences of the operation across user statuses. It is missing the confirm-gating semantics and any notion of the response, but the core behavior an agent needs is present.
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%, with userId undocumented in both schema and description. The description does add behavioral meaning to days (added to existing expiration or computed from current date depending on status), but userId and the confirm flow are not clarified beyond structured fields, 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 ("Extend user expiration date") scoped to a single user via {userId}, which cleanly separates it from the bulk siblings users_bulk_actions_bulk_extend_expiration_date and users_bulk_actions_bulk_all_extend_expiration_date by implication. No sibling is named explicitly, so it stops short of full 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?
Usage is implied by the single-user scope but the description never states when to prefer this over the bulk extend tools or what preconditions apply. It explains the operation's behavior rather than when an agent should choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_get_user_accessible_nodesC
GET /api/users/{userId}/accessible-nodes Get user accessible nodes Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the HTTP verb — no return shape, no pagination, no auth/permission requirements, no note on whether access is scoped by squad or by node status. For a completely bare definition this is a real gap.
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 short and the operation is stated first, but it carries raw OpenAPI boilerplate (the path line and 'Tags: Users Controller') that adds no value to an agent. Efficient in size but not fully earned.
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 and no annotations, the description must explain what 'accessible nodes' means and what the response contains; it does neither. For a simple one-parameter read this is the minimum raw payload rather than a complete 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 description coverage is 0%, and the single required parameter (userId, number > 0) is undocumented. The description only embeds it in the raw path template, leaving ambiguous whether it expects an internal numeric ID or a UUID/short-UUID — an important distinction given sibling tools that key on short_uuid and username.
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 does convey a specific verb+resource ('Get user accessible nodes'), so an agent can tell it retrieves nodes reachable by a user. However it is essentially a restatement of the endpoint path and gives no differentiation from neighbors like internal_squad_get_internal_squad_accessible_nodes or nodes_get_nodes.
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 when-to-use guidance, no prerequisites, and no mention of the sibling tools that also return node sets (nodes_get_nodes, internal_squad_get_internal_squad_accessible_nodes). Only the implied read semantics of a GET hint at context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_get_user_by_idC
GET /api/users/{userId} Get user by ID Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The GET prefix weakly implies a read-only operation, but nothing is said about auth requirements, not-found behavior, or response shape for a user-lookup endpoint.
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?
Short and front-loaded, but it is a raw OpenAPI dump where "Tags: Users Controller" and the bare path add little for an agent. Two of the three lines are mechanical artifacts rather than useful 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?
With no annotations, no output schema, and zero parameter documentation, the definition is too thin for a lookup tool. An agent gets no information about what a successful response contains or how a missing user is signaled.
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 userId parameter, and the description only echoes it as a path placeholder. It adds no meaning about the numeric type, the exclusiveMinimum: 0 constraint, or what identifier space the ID belongs to.
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?
"Get user by ID" states a verb and resource and the path shows the {userId} template, but it is essentially the tool name restated (users_get_user_by_id). It does not clarify how the numeric ID differs from the short_uuid/username lookups that exist as 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?
No when-to-use guidance, no prerequisites, and no routing to alternatives such as users_get_user_by_short_uuid, users_get_user_by_username, or users_resolve_user. The agent must infer selection purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_get_user_by_short_uuidC
GET /api/users/by-short-uuid/{shortUuid} Get user by Short UUID Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| shortUuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only operation by exposing the GET route, but says nothing about authentication requirements, behavior when the UUID is not found, or whether related entities are included.
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 short and front-loaded with the essential verb+resource, but the pasted HTTP route and 'Tags: Users Controller' metadata are noise that convey little to an agent selecting or calling the tool.
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 annotations, no output schema, and 0% parameter description coverage, the description should compensate but does not. For a lookup tool an agent needs at least the identifier semantics and error behavior, neither of which is present.
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%, and the single required parameter shortUuid is undocumented in the schema. The description only surfaces it inside the route template, adding no explanation of what a 'short UUID' is, its format, or whether it is case-sensitive.
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 verb+resource ('Get user by Short UUID'), which is understandable on its own. However, it largely restates the tool name and adds only the raw HTTP route, offering no explicit differentiation from close siblings such as users_get_user_by_id or users_get_user_by_username.
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 the id-based or username-based lookup siblings, nor any prerequisites (e.g., which UUID format is required). The agent must infer selection criteria purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_get_user_by_usernameC
GET /api/users/by-username/{username} Get user by username Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It reveals nothing beyond the route: no auth requirements, no behavior for missing users, no indication of what fields are returned. The 'Tags: Users Controller' line is an OpenAPI artifact with no operational 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?
Very short, which is fine, but the content is largely a restatement of the endpoint route plus a redundant title echo and a useless 'Tags' line. Front-loaded but low signal density.
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 lookup tool in a crowded users namespace with no annotations and no output schema, the description does not provide enough to confidently select or invoke it over the id/short_uuid/resolve variants. Missing return shape and error semantics.
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 there is 1 parameter, but the parameter name 'username' is self-describing and matches the description's wording. No format hints (case sensitivity, exact-match vs fuzzy) are added, so it stays at baseline.
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?
Clear verb+resource: 'Get user by username' with the HTTP route GET /api/users/by-username/{username}. The purpose is unambiguous, though it does nothing to distinguish itself from the many sibling retrieval tools (users_get_user_by_id, users_get_user_by_short_uuid, users_resolve_user, subscriptions_get_subscription_by_username).
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 when-to-use guidance, no alternatives named, no distinction from users_get_user_by_id or the short_uuid variant. The agent must infer selection from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_get_usersB
GET /api/users Get all users using offset-based pagination Please note that the filters here are primarily intended for use by the frontend and rely on expensive operators such as LIKE under the hood. Misusing these filters may negatively impact the performance of your database. Tags: Users Controller Пагинация через query-параметры: start, size.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results to return, no more than 1000 | |
| start | No | Start index (offset) of the results to return, default is 0 | |
| filters | No | ||
| sorting | No | ||
| filterModes | No | ||
| globalFilterMode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose one meaningful behavioral trait beyond the schema: filters rely on expensive LIKE operators and can degrade database performance. It omits other traits an agent would need, such as auth requirements, result ordering defaults, and total-count/return 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 core purpose and the filter caveat are reasonably front-loaded, but there is boilerplate ('GET /api/users', 'Tags: Users Controller') and a trailing Russian sentence that merely restates the pagination parameters already given in the schema. It mixes languages and repeats information without adding 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 list endpoint with no output schema and no annotations, the description covers pagination and a filter performance warning but says nothing about response shape, total counts, or auth. It is adequate but leaves clear gaps an agent might need to invoke it 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 coverage is only 33%, so the description is expected to compensate. It adds useful semantics for filters (expensive, frontend-oriented) and repeats start/size pagination, but sorting, filterModes, and globalFilterMode remain undocumented in both schema and description, leaving several parameters opaque.
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 ('Get all users') plus the pagination model ('offset-based pagination') and endpoint path. It is clear what the tool does, though it does little to distinguish itself from the many sibling list/read tools (e.g. users_get_users_stream, users_get_users_tags).
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 real usage caveat (filters are frontend-oriented, use expensive LIKE operators, and may hurt DB performance), which is genuinely useful guidance. However, it never says when to prefer this tool over siblings such as users_get_users_stream or users_get_user_by_id, 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.
users_get_users_streamB
GET /api/users/stream Get all users using cursor-based (keyset) pagination with filtering options Tags: Users Controller Пагинация через query-параметры: size.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Tag to filter users by | |
| size | No | Number of results to return, no more than 1000 | |
| No | Email to filter users by | ||
| cursor | No | Cursor for pagination — pass the nextCursor from the previous response. Omit on the first request. | |
| status | No | Status to filter users by | |
| telegramId | No | Telegram ID to filter users by | |
| externalSquadUuid | No | External squad UUID to filter users by | |
| trafficLimitStrategy | No | Traffic limit strategy to filter users by |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the keyset pagination model and that filtering is supported, and the raw 'GET' implies a read-only operation, but it says nothing about auth requirements, result ordering, default page size (250), or what the response contains.
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-loads the endpoint and purpose, but includes low-value noise: a raw HTTP path, a 'Tags: Users Controller' line, and a trailing Russian sentence that restates pagination already covered in English.
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 eight-parameter, zero-required, no-output-schema list endpoint, the description is minimally adequate: it explains the pagination model and that filters exist, and the schema covers the individual filters. It omits sibling differentiation and any note about response shape or empty-result behavior.
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 the schema already documents all eight filters including cursor and size. The description only repeats 'pagination via query-parameters: size' and adds no format, enum, or interaction semantics beyond that.
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 ('Get all users') plus the pagination mechanism (cursor/keyset) and that filtering options exist. It does not distinguish itself from the sibling users_get_users or users_resolve_user, which appears to overlap, so it stops short of a 5.
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 guidance on when to choose this stream endpoint over users_get_users, users_get_user_by_id, or users_resolve_user, and no prerequisites (auth, rate limits). The only usage hint is that filtering options exist, which is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_get_users_tagsC
GET /api/users/tags Get users tags Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it discloses nothing beyond the HTTP method. It does not say whether the result is a distinct list of tag names or tag objects with counts, whether it requires authentication, or whether results are paginated. The only behavioral signal is the implicit safety of a GET.
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 text is short and the operative phrase ('Get users tags') is front-loaded, but the raw path and the codegen artifact 'Tags: Users Controller' add no meaning and pad the definition.
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 with no output schema, the definition is minimally adequate but leaves the shape of the return value (list of tag names vs. objects) and the purpose of the call unstated, which matters given the crowded set of similar tag endpoints.
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 takes zero parameters, so there is nothing for the description to explain; baseline 4 applies. The description does not misrepresent the (empty) input 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 verb and resource ('Get users tags') and the underlying endpoint, so the agent knows it retrieves tag data for users. However, it is essentially a restatement of the tool name and does nothing to distinguish it from the many sibling tag-list tools (config_profile_get_tags, hosts_get_hosts_tags, nodes_get_nodes_tags, internal_squad_get_tags), which all have near-identical one-line descriptions.
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, what it is for (e.g., discovering tag values before filtering or bulk-tagging users), or how it relates to the many sibling tag endpoints. Usage can only be inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_get_user_subscription_request_historyB
GET /api/users/{userId}/subscription-request-history Get user subscription request history, recent 24 records Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It usefully discloses that results are capped at the recent 24 records and the GET/path implies a read-only operation, but it omits return shape, whether older history is retrievable elsewhere, and any auth/permission 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 short and front-loaded, leading with the endpoint and the core action. The trailing 'Tags: Users Controller' is boilerplate that adds no selection value, but overall the text is compact rather than verbose.
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 tool with no output schema, the definition is only minimally complete: it conveys the resource and the 24-record cap but says nothing about the response contents or how to retrieve older history, which an output-schema-less tool arguably should.
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 is 1 parameter with 0% schema description coverage, so the description must compensate. The embedded path template ({userId}) does tell the agent that userId is a path parameter identifying the target user, which is modest added value, but no format, type, or constraint details are provided.
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: fetching a user's subscription request history, and even adds scope ('recent 24 records'). It is clear what the tool does, but it does nothing to distinguish itself from the sibling tools user_subscription_request_history_get_subscription_re_1r7914 / _31zydo, which appear to cover overlapping ground.
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 explicit guidance on when to use this tool versus the near-identical sibling history tools, nor any stated preconditions. The only implicit context is the 'recent 24 records' scope, which hints at a bounded/tail view but is never framed as a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_reset_user_trafficC
POST /api/users/{userId}/actions/reset-traffic Reset user traffic Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It never says this is a destructive, likely irreversible clearing of usage counters, nor mentions permission requirements or side effects on subscription/limits — it only repeats the endpoint and verb.
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 short and the action is front-loaded, but it is padded with boilerplate ('Tags: Users Controller') and a raw HTTP verb/path rather than agent-oriented prose. No sentence is actively harmful, but the structure is endpoint documentation rather than tool guidance.
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 mutation with no annotations, no output schema, and only 50% parameter coverage, the definition is under-specified. An agent gets no confirmation of irreversibility, scope, or return behavior beyond the request preview implied by the confirm 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 50%: the confirm parameter is documented in the schema, but userId has no schema description. The description only embeds {userId} in the path template, which marginally clarifies that userId is a path parameter without adding format, range, or lookup 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 states a specific verb+resource ('Reset user traffic') and the underlying route, so the basic action is identifiable. However, it gives no differentiation from close siblings such as users_bulk_actions_bulk_reset_user_traffic or nodes_reset_node_traffic, leaving the agent to infer scope from the name alone.
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 the bulk reset variants or other user-mutation tools. The only context is an HTTP route and a tag list, neither of which tells the agent which conditions select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_resolve_userB
POST /api/users/resolve Resolve a user Resolve a user by ID, Short UUID or username. Exactly one of the fields must be provided. Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden, yet it discloses almost nothing beyond the HTTP verb and route. It never mentions the confirm flag or the preview-without-confirm behavior described in the schema, nor whether this is a safe read or a mutating call, leaving a real gap for a POST endpoint.
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 useful content (identifier options plus the exclusivity constraint) is compact and front-loaded, but the text is padded with a redundant route line, a restated 'Resolve a user' title, and a boilerplate 'Tags: Users Controller' line that add no selection 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 POST tool with nested body parameters, no annotations, no output schema, and a confirm-gating mechanism, the description is under-specified. It omits the confirm behavior entirely and does not route the agent away from the three sibling getters that cover the same identifiers.
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%, and the body fields (id, username, shortUuid) carry no per-field descriptions. The description compensates partly by stating the mutual-exclusivity rule the schema does not encode, but it says nothing about the confirm parameter, so the coverage gap is not fully closed.
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 ('Resolve a user') and enumerates the three accepted identifier types (ID, Short UUID, username), so the agent knows exactly what the tool accepts. However, it never differentiates itself from the near-identical siblings users_get_user_by_id, users_get_user_by_short_uuid, and users_get_user_by_username, which makes it ambiguous which one to pick.
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 supplies one invocation rule ('Exactly one of the fields must be provided'), which is genuinely useful guidance. But it gives no when-to-use framing relative to the three per-identifier getter siblings, so the agent must infer the routing on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_revoke_user_subscriptionC
POST /api/users/{userId}/actions/revoke Revoke user subscription Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| userId | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the entire behavioral burden, yet it only restates 'revoke' without disclosing consequences (subscription URL regeneration, invalidation of existing keys), reversibility, required permissions, or the confirm:true gate that blocks the call as a preview otherwise. For a mutation endpoint this is a significant gap.
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 text is brief and front-loads the actionable purpose, but the raw 'POST /api/users/{userId}/actions/revoke' line and 'Tags: Users Controller' are low-value filler that consume most of the definition without adding agent-relevant 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?
A destructive-style mutation with no annotations, no output schema, low parameter coverage, and an undocumented confirm gate needs far more explanation than one sentence. Nothing tells the agent what happens to the user's subscription URL or passwords after the call.
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 contributes nothing about any parameter. Critically, it omits the confirm parameter's preview behavior and the userId/body relationship, leaving the low-coverage schema to carry semantics it only partially documents.
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 ('Revoke user subscription'), and the HTTP path confirms it acts on a single user identified by userId. An agent can distinguish it from siblings like users_reset_user_traffic or users_extend_user_expiration_date, though the description does nothing to differentiate it from users_bulk_actions_bulk_revoke_users_subscription or the revokeOnlyPasswords variant it actually supports.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as the bulk revoke sibling. The body parameter hints at a password-only mode but the description never explains when to use this tool versus related user-management operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_subscription_request_history_get_subscription_re_1r7914C
GET /api/subscription-request-history Get all subscription request history Please note that the filters here are primarily intended for use by the frontend and rely on expensive operators such as LIKE under the hood. Misusing these filters may negatively impact the performance of your database. Tags: Subscription Request History Controller Пагинация через query-параметры: start, size.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results to return, no more than 1000 | |
| start | No | Start index (offset) of the results to return, default is 0 | |
| filters | No | ||
| sorting | No | ||
| filterModes | No | ||
| globalFilterMode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It adds useful context about expensive LIKE operators and potential database performance impact, which is genuine behavioral information. However, it omits return format, pagination defaults, authorization requirements, and the relationship to the near-duplicate sibling 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?
The description opens with the endpoint and purpose, which is good front-loading, then adds a warning and a mixed-language pagination note. The Russian sentence ('Пагинация через query-параметры: start, size.') is inconsistent in language and slightly redundant since start/size already appear in the schema. Overall acceptable but not tight.
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 6-parameter filtered listing tool with no annotations and no output schema, the description is only partially complete. It covers the existence of pagination and the risk of filters but leaves parameter semantics and return behavior largely 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 description coverage is only 33%. The description mentions pagination via start and size query parameters, and warns generically about filters, but gives no meaning for filters, sorting, filterModes, or globalFilterMode beyond an implied warning. It does not compensate for the undocumented 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?
States a clear verb+resource: 'Get all subscription request history' via a named endpoint. The purpose is unambiguous, though the description doesn't differentiate this tool from its near-identical sibling user_subscription_request_history_get_subscription_re_31zydo or users_get_user_subscription_request_history.
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. The description mentions that filters are 'primarily intended for use by the frontend' and warns about expensive operators, which is a partial usage caveat, but it does not say when to prefer this tool over the sibling history tools or what conditions make it appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_subscription_request_history_get_subscription_re_31zydoC
GET /api/subscription-request-history/stats Get subscription request history stats Tags: Subscription Request History Controller
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing beyond the HTTP verb. It does not state auth requirements, the scope or time range of the statistics, aggregation behavior, or the shape of the result. 'GET' at least implies a read-only operation, but that is the only behavioral signal.
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 short and front-loaded, but two of the three lines (the raw endpoint path and the 'Tags: ... Controller' line) are boilerplate that add no value to an agent. The single substantive sentence duplicates the tool name rather than extending it.
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 stats endpoint with no output schema, the description should at minimum indicate what the statistics cover, but it never says. Combined with zero annotations and no usage context, an agent has no way to know what this returns or when it is the right call beyond the name itself.
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 takes zero parameters, so there is nothing for the description to clarify; per the rubric this earns the baseline of 4. The empty schema leaves no ambiguity for the agent to resolve.
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 verb (Get) and a resource (subscription request history stats), so the operation is discernible, but it is essentially a restatement of the endpoint path and name with no differentiation from the near-identical sibling user_subscription_request_history_get_subscription_re_1r7914 or users_get_user_subscription_request_history. An agent can tell it is a stats read, but not how it differs from those alternatives.
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 when-to-use guidance, no mention of prerequisites, time windows, or alternatives. The only implied usage is that it returns statistics, which is inherent in the name. Nothing helps an agent choose this over the sibling history tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_update_userB
PATCH /api/users Update a user Update a user by ID or username. Exactly one of the fields must be provided. Tags: Users Controller
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| confirm | No | Подтверждение выполнения не-GET операции. Без confirm:true возвращается превью запроса (метод, URL, тело) и запрос не отправляется (см. MCP_CONFIRM). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, yet it discloses almost nothing: no permissions required, no note on whether omitted fields are preserved (the PATCH semantics are only implied by the URL line), no reversibility or side-effect information. The confirm-gating behavior exists only in the schema's 'confirm' property, not the description.
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 useful content ('Update a user by ID or username. Exactly one of the fields must be provided.') is buried after two boilerplate lines, one of which ('Tags: Users Controller') is pure noise. The PATCH line at least signals a partial-update semantics, but overall the structure wastes the prime opening slot.
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 mutation tool with no annotations, no output schema, and 50% parameter coverage, the description is under-specified: it never explains the confirm/preview mechanism, error behavior, or what a successful update returns. An agent has to fall back on the schema and Russian-language confirm text to call this safely.
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%, and the body holds 11+ properties while the description mentions only the id/username identification rule. It adds the useful 'exactly one identifier' constraint but leaves the bulk of updatable fields (status, expireAt, trafficLimit, squads, etc.) undiscussed, so it does not compensate 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 ('Update a user') and adds an identifying constraint ('by ID or username'), which distinguishes it from create/delete siblings. It does not, however, differentiate itself from bulk update siblings like users_bulk_actions_bulk_update_users, and the leading 'PATCH /api/users' line is raw HTTP boilerplate rather than purpose.
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?
'Exactly one of the fields must be provided' is a real usage constraint, but it is ambiguous about which fields and gives no guidance on when to prefer this over bulk update, enable/disable, or reset siblings. Usage is implied by 'update a user by ID or username' but no alternatives are named.
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.
222 tool updates
v1.0.0- First observed
api_audit_tail - First observed
api_describe - First observed
api_search - First observed
api_status - First observed
api_tokens_create_api_token - First observed
api_tokens_delete_api_token - First observed
api_tokens_get_api_tokens - First observed
api_tokens_get_scopes - First observed
auth_get_status - First observed
auth_login - First observed
auth_oauth2_authorize - First observed
auth_oauth2_callback - First observed
auth_passkey_authentication_options - First observed
auth_passkey_authentication_verify - First observed
auth_register - First observed
bandwidth_stats_nodes_get_node_usage - First observed
bandwidth_stats_nodes_get_stats_node_users_usage - First observed
bandwidth_stats_nodes_get_stats_nodes_users_usage - First observed
bandwidth_stats_users_get_stats_nodes_usage - First observed
config_profile_create_config_profile - First observed
config_profile_delete_config_profile_by_uuid - First observed
config_profile_get_all_inbounds - First observed
config_profile_get_computed_config_profile_by_uuid - First observed
config_profile_get_config_profile_by_uuid - First observed
config_profile_get_config_profiles - First observed
config_profile_get_inbounds_by_profile_uuid - First observed
config_profile_get_tags - First observed
config_profile_reorder_config_profiles - First observed
config_profile_set_tags - First observed
config_profile_update_config_profile - First observed
connections_connections_by_node - First observed
connections_connections_by_node_result - First observed
connections_connections_by_user - First observed
connections_connections_by_user_result - First observed
connections_drop_connections - First observed
connections_geocheck_by_node - First observed
connections_geocheck_by_node_result - First observed
external_squad_add_users_to_external_squad - First observed
external_squad_create_external_squad - First observed
external_squad_delete_external_squad - First observed
external_squad_get_external_squad_by_uuid - First observed
external_squad_get_external_squads - First observed
external_squad_get_tags - First observed
external_squad_remove_users_from_external_squad - First observed
external_squad_reorder_external_squads - First observed
external_squad_set_tags - First observed
external_squad_update_external_squad - First observed
hosts_bulk_actions_delete_hosts - First observed
hosts_bulk_actions_disable_hosts - First observed
hosts_bulk_actions_enable_hosts - First observed
hosts_bulk_actions_set_port_to_hosts - First observed
hosts_create_host - First observed
hosts_delete_host - First observed
hosts_get_hosts - First observed
hosts_get_hosts_tags - First observed
hosts_get_one_host - First observed
hosts_reorder_hosts - First observed
hosts_update_host - First observed
hwid_user_devices_create_user_hwid_device - First observed
hwid_user_devices_delete_all_user_hwid_devices - First observed
hwid_user_devices_delete_user_hwid_device - First observed
hwid_user_devices_get_all_users - First observed
hwid_user_devices_get_hwid_devices_stats - First observed
hwid_user_devices_get_top_users_by_hwid_devices - First observed
hwid_user_devices_get_user_hwid_devices - First observed
infra_billing_create_infra_billing_node - First observed
infra_billing_create_infra_billing_record - First observed
infra_billing_create_infra_provider - First observed
infra_billing_delete_infra_billing_node - First observed
infra_billing_delete_infra_billing_record - First observed
infra_billing_delte_infra_provider - First observed
infra_billing_get_billing_nodes - First observed
infra_billing_get_infra_billing_records - First observed
infra_billing_get_infra_provider - First observed
infra_billing_get_infra_providers - First observed
infra_billing_update_infra_billing_node - First observed
infra_billing_update_infra_provider - First observed
internal_squad_add_many_users_to_internal_squad - First observed
internal_squad_add_users_to_internal_squad - First observed
internal_squad_create_internal_squad - First observed
internal_squad_delete_internal_squad - First observed
internal_squad_get_internal_squad_accessible_nodes - First observed
internal_squad_get_internal_squad_by_uuid - First observed
internal_squad_get_internal_squad_usage - First observed
internal_squad_get_internal_squads - First observed
internal_squad_get_tags - First observed
internal_squad_remove_many_users_from_internal_squad - First observed
internal_squad_remove_users_from_internal_squad - First observed
internal_squad_reorder_internal_squads - First observed
internal_squad_set_tags - First observed
internal_squad_stats_get_internal_squad_usage - First observed
internal_squad_stats_get_internal_squad_user_usage - First observed
internal_squad_update_internal_squad - First observed
keygen_generate_key - First observed
metadata_get_node_metadata - First observed
metadata_get_user_metadata - First observed
metadata_upsert_node_metadata - First observed
metadata_upsert_user_metadata - First observed
node_integration_create_integration - First observed
node_integration_delete_integration - First observed
node_integration_get_all_integrations - First observed
node_integration_get_integration_by_uuid - First observed
node_integration_update_integration - First observed
node_plugin_clone_node_plugin - First observed
node_plugin_create_config - First observed
node_plugin_create_shared_list - First observed
node_plugin_delete_config - First observed
node_plugin_delete_shared_list - First observed
node_plugin_get_all_configs - First observed
node_plugin_get_all_shared_lists - First observed
node_plugin_get_config_by_uuid - First observed
node_plugin_get_shared_list_by_name - First observed
node_plugin_get_tags - First observed
node_plugin_plugin_executor - First observed
node_plugin_reorder_node_plugins - First observed
node_plugin_set_tags - First observed
node_plugin_sync_node_plugin - First observed
node_plugin_sync_shared_list - First observed
node_plugin_update_config - First observed
node_plugin_update_shared_list - First observed
nodes_bulk_nodes_actions - First observed
nodes_bulk_nodes_update - First observed
nodes_create_node - First observed
nodes_delete_node - First observed
nodes_disable_node - First observed
nodes_enable_node - First observed
nodes_get_node - First observed
nodes_get_nodes - First observed
nodes_get_nodes_tags - First observed
nodes_profile_modification - First observed
nodes_reorder_nodes - First observed
nodes_reset_node_traffic - First observed
nodes_restart_all_nodes - First observed
nodes_restart_node - First observed
nodes_update_node - First observed
nodes_usage_history_get_stats_nodes_usage - First observed
passkey_delete_passkey - First observed
passkey_get_active_passkeys - First observed
passkey_passkey_registration_options - First observed
passkey_passkey_registration_verify - First observed
passkey_update_passkey - First observed
remnawave_settings_get_settings - First observed
remnawave_settings_update_settings - First observed
snippets_create_snippet - First observed
snippets_delete_snippet_by_name - First observed
snippets_get_snippets - First observed
snippets_sync_snippet - First observed
snippets_update_snippet - First observed
subscription_get_subscription - First observed
subscription_get_subscription_by_client_type - First observed
subscription_get_subscription_info_by_short_uuid - First observed
subscription_page_config_clone_subscription_page_config - First observed
subscription_page_config_create_config - First observed
subscription_page_config_delete_config - First observed
subscription_page_config_get_all_configs - First observed
subscription_page_config_get_config_by_uuid - First observed
subscription_page_config_get_tags - First observed
subscription_page_config_reorder_subscription_page_configs - First observed
subscription_page_config_set_tags - First observed
subscription_page_config_update_config - First observed
subscription_settings_get_settings - First observed
subscription_settings_update_settings - First observed
subscription_template_create_template - First observed
subscription_template_delete_template - First observed
subscription_template_get_all_templates - First observed
subscription_template_get_tags - First observed
subscription_template_get_template_by_uuid - First observed
subscription_template_reorder_subscription_templates - First observed
subscription_template_set_tags - First observed
subscription_template_update_template - First observed
subscriptions_get_all_subscriptions - First observed
subscriptions_get_connection_keys_by_user_id - First observed
subscriptions_get_raw_subscription_by_short_uuid - First observed
subscriptions_get_subpage_config_by_short_uuid - First observed
subscriptions_get_subscription_by_short_uuid_protected - First observed
subscriptions_get_subscription_by_username - First observed
subscriptions_get_subscription_by_uuid - First observed
system_debug_srr_matcher - First observed
system_get_bandwidth_stats - First observed
system_get_configuration - First observed
system_get_http_stats - First observed
system_get_metadata - First observed
system_get_nodes_metrics - First observed
system_get_nodes_statistics - First observed
system_get_recap - First observed
system_get_remnawave_health - First observed
system_get_stats - First observed
system_get_stats_digest - First observed
system_get_x25519_keypairs - First observed
system_metrics - First observed
torrent_blocker_reports_get_torrent_blocker_reports - First observed
torrent_blocker_reports_get_torrent_blocker_reports_stats - First observed
torrent_blocker_reports_truncate_torrent_blocker_reports - First observed
user_subscription_request_history_get_subscription_re_1r7914 - First observed
user_subscription_request_history_get_subscription_re_31zydo - First observed
users_bulk_actions_bulk_all_extend_expiration_date - First observed
users_bulk_actions_bulk_all_reset_user_traffic - First observed
users_bulk_actions_bulk_delete_users - First observed
users_bulk_actions_bulk_delete_users_by_status - First observed
users_bulk_actions_bulk_extend_expiration_date - First observed
users_bulk_actions_bulk_reset_user_traffic - First observed
users_bulk_actions_bulk_revoke_users_subscription - First observed
users_bulk_actions_bulk_update_all_users - First observed
users_bulk_actions_bulk_update_users - First observed
users_bulk_actions_bulk_update_users_internal_squads - First observed
users_create_user - First observed
users_delete_user - First observed
users_disable_user - First observed
users_enable_user - First observed
users_extend_user_expiration_date - First observed
users_get_user_accessible_nodes - First observed
users_get_user_by_id - First observed
users_get_user_by_short_uuid - First observed
users_get_user_by_username - First observed
users_get_user_subscription_request_history - First observed
users_get_users - First observed
users_get_users_stream - First observed
users_get_users_tags - First observed
users_reset_user_traffic - First observed
users_resolve_user - First observed
users_revoke_user_subscription - First observed
users_update_user
TDQS
Scored across 222 tools
With 222 tools, many endpoints overlap in purpose (e.g., two internal squad usage tools, offset vs cursor user listing, multiple subscription getters), forcing the agent to read fine-grained descriptions to choose correctly. The controller prefixes help somewhat, but the volume and near-duplicate names make misselection likely.
Names generally follow a resource_action snake_case pattern (users_create_user, nodes_restart_node), but inconsistencies appear: random suffixes like _1r7914, a typo (infra_billing_delte_infra_provider), and mixed get vs get_all conventions. Still, the dominant pattern is readable.
222 tools vastly exceeds a reasonable MCP surface (calibration marks 50+ as extreme mismatch), overwhelming the agent and making navigation costly despite helper tools like api_search.
The surface covers nearly all Remnawave panel domains (users, nodes, hosts, squads, configs, billing, subscriptions, auth, passkeys, metrics, etc.) with full CRUD and bulk operations, leaving few obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Supervised API-write gateway for AI agents with policy, human approval and execution receipts.
1AI-callable tools for API mocking, testing, monitoring, security, and automation.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Verified, pay-per-use API tools for AI agents through one authenticated connection.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to administrate WHMCS installations through the External API, providing ~50 tools for clients, billing, orders, services, domains, support, and aggregators with safety features and governance.392ISC
- AlicenseCqualityBmaintenanceWraps the Remnawave API to provide per-operation MCP tools with mutation safety and data redaction, enabling secure interaction with Remnawave panel.100MIT
- FlicenseNot gradedqualityCmaintenanceEnables controlled AI-agent access to enterprise-shaped tools with a deny-by-default gated write path, human approval, dry-run execution, and append-only audit logging.1-
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to manage a Remnawave panel through its full API, covering users, nodes, hosts, subscriptions, and more with configurable tool profiles and read/write token access.16MIT