remnawave-mcp
The remnawave-mcp server provides comprehensive management and monitoring of a Remnawave VPN panel through LLM clients (Claude Desktop, Cursor, Windsurf, etc.) via the Model Context Protocol.
User Management: List, create, update, delete, enable/disable users; get by UUID/username/short UUID; revoke subscriptions, reset traffic, and perform bulk operations
Node Management: List, create, update, delete, enable/disable, restart nodes; reset traffic and reorder nodes
Host Management: Create, update, delete VPN hosts with TLS, SNI, ALPN, fingerprints, and security layer configuration; bulk enable/disable/port actions
System Monitoring: Real-time panel statistics (users, nodes, traffic, CPU, memory), bandwidth metrics, node health checks, authentication status, and panel metadata
Subscription Management: List and retrieve subscription details by UUID, username, or short UUID; access public subscription info
Config & Inbounds: Manage config profiles, inbounds, snippets, node plugins, and subscription page configurations
Security & Access Control: Manage API tokens, HWID devices (list/create/delete/stats), and IP control (fetch IPs, drop connections)
Squad Management: Create, update, delete internal/external squads; add/remove users from squads; manage billing providers and history
Metadata Management: Get and upsert metadata for nodes and users
X25519 Key Generation: Generate key pairs for VLESS Reality configurations
Guided Workflows: Predefined prompts for user creation, node diagnostics, traffic reports, user audits, and bulk cleanup
Read-Only Mode: Restrict to read-only tools (69 available) for safe monitoring in shared environments
Caddy Integration: Automatic
X-Api-Keyheader handling for panels behind Caddy reverse proxy with custom paths
Provides specialized support for Remnawave panels deployed behind a Caddy reverse proxy, including configuration for custom URL paths and X-Api-Key header authentication.
Enables identification and management of VPN users through their Telegram IDs, allowing AI agents to look up users or create new accounts associated with Telegram identities.
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-mcpShow me the current system stats and node health"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-remnawave
MCP Server for Remnawave Panel
MCP server (Model Context Protocol) providing LLM clients (Claude Desktop, Cursor, Windsurf, etc.) with tools to manage a Remnawave VPN panel.
Version: 1.2.0 | Remnawave API: 2.7.4
Features
153 tools — full management of users, nodes, hosts, subscriptions, squads, HWID, config profiles, inbounds, API tokens, billing, snippets, external squads, settings, subscription page configs, node plugins, IP control, and metadata
3 resources — real-time panel stats, node status, health checks
5 prompts — guided workflows for common tasks
Readonly mode — restrict to 69 read-only tools for safe monitoring
Caddy support —
X-Api-Keyheader for panels behind Caddy with custom pathType-safe — built on @remnawave/backend-contract for API route validation
stdio transport — works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client
Requirements
Node.js >= 22
Remnawave panel with API token (Settings > API Tokens)
Installation
git clone https://github.com/TrackLine/mcp-remnawave.git
cd mcp-remnawave
npm install
npm run buildConfiguration
Create a .env file or pass environment variables:
Variable | Required | Description |
| Yes | Panel URL (e.g. |
| Yes | API token from panel settings |
| No | API key for Caddy reverse proxy authentication |
| No | Set to |
REMNAWAVE_BASE_URL=https://vpn.example.com
REMNAWAVE_API_TOKEN=your-api-token-hereCaddy with Custom Path
If your Remnawave panel is deployed behind Caddy with a custom path and API key protection, set the base URL to include the custom path and provide the API key:
REMNAWAVE_BASE_URL=https://example.com/your-secret-path/api
REMNAWAVE_API_KEY=your-caddy-api-keyThe X-Api-Key header will be added to every request automatically.
Readonly Mode
Set REMNAWAVE_READONLY=true to disable all write operations (create, update, delete, enable, disable, restart, revoke, reset). Only read/list tools will be registered.
Useful for monitoring dashboards or shared environments where you want to prevent accidental changes.
In readonly mode, the available tools are reduced from 153 to 69:
Category | Available tools |
Users (10) |
|
Nodes (3) |
|
Hosts (3) |
|
System (10) | all tools (read-only by nature) |
Subscriptions (10) | all tools (read-only by nature) |
Config Profiles & Inbounds (5) |
|
Internal Squads (2) |
|
HWID (4) |
|
API Tokens (1) |
|
Keygen (1) |
|
Infra Billing (4) |
|
Snippets (1) |
|
External Squads (2) |
|
Settings (1) |
|
Sub Page Configs (2) |
|
Node Plugins (4) |
|
IP Control (4) |
|
Metadata (2) |
|
Usage with Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"remnawave": {
"command": "node",
"args": ["/absolute/path/to/remnawave-mcp/dist/index.js"],
"env": {
"REMNAWAVE_BASE_URL": "https://vpn.example.com",
"REMNAWAVE_API_TOKEN": "your-api-token-here",
"REMNAWAVE_API_KEY": "your-caddy-api-key",
"REMNAWAVE_READONLY": "false"
}
}
}
}Usage with Cursor / Windsurf
Add to .cursor/mcp.json or .windsurf/mcp.json in your project:
{
"mcpServers": {
"remnawave": {
"command": "node",
"args": ["/absolute/path/to/remnawave-mcp/dist/index.js"],
"env": {
"REMNAWAVE_BASE_URL": "https://vpn.example.com",
"REMNAWAVE_API_TOKEN": "your-api-token-here",
"REMNAWAVE_API_KEY": "your-caddy-api-key",
"REMNAWAVE_READONLY": "false"
}
}
}
}Docker
npm run build
docker compose up -dEnvironment variables are passed via .env file or docker-compose.yml.
Available Tools
Users (27 tools)
Tool | Description | Mode |
| List all users with pagination | read |
| Get user by UUID | read |
| Get user by username | read |
| Get user by short UUID | read |
| Get user by Telegram ID | read |
| Get user by email | read |
| Get user by tag | read |
| Get user by subscription UUID | read |
| List all user tags | read |
| Resolve users by multiple criteria | read |
| Create a new user | write |
| Update user settings | write |
| Delete a user | write |
| Enable a disabled user | write |
| Disable a user | write |
| Revoke subscription (regenerate link) | write |
| Reset traffic counter | write |
| Bulk delete users by status | write |
| Bulk update users | write |
| Bulk reset traffic | write |
| Bulk revoke subscriptions | write |
| Bulk delete users | write |
| Bulk update user squads | write |
| Bulk extend expiration dates | write |
| Bulk update all users | write |
| Bulk reset all users traffic | write |
| Bulk extend all users expiration | write |
Nodes (15 tools)
Tool | Description | Mode |
| List all nodes | read |
| Get node by UUID | read |
| List all node tags | read |
| Create a new node | write |
| Update node settings | write |
| Delete a node | write |
| Enable a node | write |
| Disable a node | write |
| Restart a specific node | write |
| Restart all nodes | write |
| Reset node traffic counter | write |
| Reorder nodes | write |
| Bulk modify node profiles | write |
| Bulk node actions | write |
| Bulk update nodes | write |
Hosts (11 tools)
Tool | Description | Mode |
| List all hosts | read |
| Get host by UUID | read |
| List all host tags | read |
| Create a new host | write |
| Update host settings | write |
| Delete a host | write |
| Bulk enable hosts | write |
| Bulk disable hosts | write |
| Bulk delete hosts | write |
| Bulk set host inbound | write |
| Bulk set host port | write |
System (10 tools)
Tool | Description | Mode |
| Panel statistics (users, nodes, traffic, CPU, memory) | read |
| Bandwidth statistics | read |
| Node metrics | read |
| Node statistics | read |
| Panel health check | read |
| Panel version and metadata | read |
| Generate X25519 key pair | read |
| Check authentication status | read |
| System statistics recap | read |
| Test SRR routing rules | read |
Subscriptions (10 tools)
Tool | Description | Mode |
| List all subscriptions | read |
| Get subscription by UUID | read |
| Get subscription by username | read |
| Get subscription by short UUID | read |
| Get raw subscription by short UUID | read |
| Get subscription subpage config | read |
| Get connection keys by UUID | read |
| Get subscription info | read |
| Subscription request history | read |
| Subscription request history stats | read |
Config Profiles & Inbounds (9 tools)
Tool | Description | Mode |
| List config profiles | read |
| Get config profile by UUID | read |
| List all inbounds | read |
| Get inbounds by profile UUID | read |
| Get computed config by profile UUID | read |
| Create config profile | write |
| Update config profile | write |
| Delete config profile | write |
| Reorder config profiles | write |
Internal Squads (7 tools)
Tool | Description | Mode |
| List all squads | read |
| Get squad accessible nodes | read |
| Create a squad | write |
| Update a squad | write |
| Delete a squad | write |
| Add users to a squad | write |
| Remove users from a squad | write |
HWID Devices (7 tools)
Tool | Description | Mode |
| List user's HWID devices | read |
| List all HWID devices | read |
| Get HWID statistics | read |
| Get top users by devices | read |
| Create HWID device | write |
| Delete a specific device | write |
| Delete all user's devices | write |
API Tokens (3 tools)
Tool | Description | Mode |
| List API tokens | read |
| Create API token | write |
| Delete API token | write |
Keygen (1 tool)
Tool | Description | Mode |
| Get keygen data | read |
Infra Billing (12 tools)
Tool | Description | Mode |
| List billing providers | read |
| Get billing provider by UUID | read |
| List billing nodes | read |
| List billing history | read |
| Create billing provider | write |
| Update billing provider | write |
| Delete billing provider | write |
| Create billing node | write |
| Update billing node | write |
| Delete billing node | write |
| Create billing history entry | write |
| Delete billing history entry | write |
Snippets (4 tools)
Tool | Description | Mode |
| List snippets | read |
| Create snippet | write |
| Update snippet | write |
| Delete snippet | write |
External Squads (8 tools)
Tool | Description | Mode |
| List external squads | read |
| Get external squad by UUID | read |
| Create external squad | write |
| Update external squad | write |
| Delete external squad | write |
| Add users to external squad | write |
| Remove users from external squad | write |
| Reorder external squads | write |
Settings (2 tools)
Tool | Description | Mode |
| Get panel settings | read |
| Update panel settings | write |
Subscription Page Configs (7 tools)
Tool | Description | Mode |
| List subscription page configs | read |
| Get subscription page config | read |
| Create subscription page config | write |
| Update subscription page config | write |
| Delete subscription page config | write |
| Reorder subscription page configs | write |
| Clone subscription page config | write |
Node Plugins (11 tools)
Tool | Description | Mode |
| List node plugins | read |
| Get node plugin by UUID | read |
| Get torrent blocker reports | read |
| Get torrent blocker stats | read |
| Create node plugin | write |
| Update node plugin | write |
| Delete node plugin | write |
| Reorder node plugins | write |
| Clone node plugin | write |
| Execute node plugin | write |
| Truncate torrent blocker reports | write |
IP Control (5 tools)
Tool | Description | Mode |
| Fetch IPs for a user | read |
| Get fetch IPs job result | read |
| Fetch users IPs on a node | read |
| Get fetch users IPs job result | read |
| Drop user connections | write |
Metadata (4 tools)
Tool | Description | Mode |
| Get node metadata | read |
| Get user metadata | read |
| Upsert node metadata | write |
| Upsert user metadata | write |
Resources
URI | Description |
| Current panel statistics |
| All nodes status |
| Panel health status |
| Specific user details |
Prompts
Prompt | Description |
| Step-by-step user creation guide |
| Node troubleshooting |
| Traffic usage report |
| Complete user audit |
| Find and manage expired users |
Example Queries
"Show me all users with expired subscriptions"
"Create user vasya with 50 GB limit for one month"
"Restart node amsterdam-01"
"Give me a traffic report for the last week"
"Disable users who exceeded their traffic limit"
"Which nodes are offline right now?"
"Show billing history"
"List all node plugins"
"Get IP connections for user X"Project Structure
src/
├── index.ts # Entry point (stdio transport)
├── server.ts # McpServer setup
├── config.ts # Environment config
├── client/
│ └── index.ts # Remnawave HTTP client
├── tools/
│ ├── helpers.ts # Result formatting helpers
│ ├── index.ts # Tool registration
│ ├── users.ts # User management (27 tools)
│ ├── nodes.ts # Node management (15 tools)
│ ├── hosts.ts # Host management (11 tools)
│ ├── system.ts # System & auth (10 tools)
│ ├── subscriptions.ts # Subscriptions (10 tools)
│ ├── inbounds.ts # Config profiles & inbounds (9 tools)
│ ├── squads.ts # Internal squads (7 tools)
│ ├── hwid.ts # HWID devices (7 tools)
│ ├── infra-billing.ts # Infrastructure billing (12 tools)
│ ├── node-plugins.ts # Node plugins (11 tools)
│ ├── external-squads.ts # External squads (8 tools)
│ ├── subscription-page-configs.ts # Subscription page configs (7 tools)
│ ├── ip-control.ts # IP control (5 tools)
│ ├── snippets.ts # Snippets (4 tools)
│ ├── metadata.ts # Node & user metadata (4 tools)
│ ├── api-tokens.ts # API tokens (3 tools)
│ ├── settings.ts # Panel settings (2 tools)
│ └── keygen.ts # Keygen (1 tool)
├── resources/
│ └── index.ts # MCP resources
└── prompts/
└── index.ts # MCP promptsLicense
MIT
Related MCP server: StealthSurf MCP Server
MCP-сервер для Remnawave Panel
MCP-сервер (Model Context Protocol), предоставляющий LLM-клиентам (Claude Desktop, Cursor, Windsurf и др.) инструменты для управления VPN-панелью Remnawave.
Версия: 1.2.0 | Remnawave API: 2.7.4
Возможности
153 инструмента — полное управление пользователями, нодами, хостами, подписками, группами, HWID, конфиг-профилями, inbounds, API-токенами, биллингом, сниппетами, внешними группами, настройками, страницами подписок, плагинами нод, IP-контролем и метаданными
3 ресурса — статистика панели, статус нод, проверка здоровья в реальном времени
5 промптов — пошаговые сценарии для типичных задач
Readonly-режим — ограничение до 69 инструментов только для чтения
Поддержка Caddy — заголовок
X-Api-Keyдля панелей за Caddy с кастомным путёмType-safe — построен на @remnawave/backend-contract для валидации API-маршрутов
stdio транспорт — работает с Claude Desktop, Cursor, Windsurf и любым MCP-совместимым клиентом
Требования
Node.js >= 22
Remnawave панель с API-токеном (Настройки > API Tokens)
Установка
git clone https://github.com/TrackLine/mcp-remnawave.git
cd mcp-remnawave
npm install
npm run buildКонфигурация
Создайте файл .env или передайте переменные окружения:
Переменная | Обязательная | Описание |
| Да | URL панели (например |
| Да | API-токен из настроек панели |
| Нет | API-ключ для аутентификации через Caddy reverse proxy |
| Нет |
|
REMNAWAVE_BASE_URL=https://vpn.example.com
REMNAWAVE_API_TOKEN=ваш-api-токенCaddy с кастомным путём
Если ваша панель Remnawave развёрнута за Caddy с кастомным путём и защитой API-ключом, укажите полный путь в base URL и предоставьте API-ключ:
REMNAWAVE_BASE_URL=https://example.com/your-secret-path/api
REMNAWAVE_API_KEY=ваш-caddy-api-ключЗаголовок X-Api-Key будет автоматически добавляться к каждому запросу.
Режим Readonly
Установите REMNAWAVE_READONLY=true, чтобы отключить все операции записи (создание, обновление, удаление, включение, отключение, перезапуск, отзыв, сброс). Будут зарегистрированы только инструменты чтения.
Полезно для мониторинговых дашбордов или общих окружений, где нужно исключить случайные изменения.
В readonly-режиме количество доступных инструментов сокращается с 153 до 69:
Категория | Доступные инструменты |
Пользователи (10) |
|
Ноды (3) |
|
Хосты (3) |
|
Система (10) | все инструменты (только чтение по природе) |
Подписки (10) | все инструменты (только чтение по природе) |
Конфиг-профили и Inbounds (5) |
|
Внутренние группы (2) |
|
HWID (4) |
|
API-токены (1) |
|
Keygen (1) |
|
Биллинг (4) |
|
Сниппеты (1) |
|
Внешние группы (2) |
|
Настройки (1) |
|
Страницы подписок (2) |
|
Плагины нод (4) |
|
IP-контроль (4) |
|
Метаданные (2) |
|
Использование с Claude Desktop
Добавьте в конфигурацию Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json на macOS):
{
"mcpServers": {
"remnawave": {
"command": "node",
"args": ["/абсолютный/путь/к/remnawave-mcp/dist/index.js"],
"env": {
"REMNAWAVE_BASE_URL": "https://vpn.example.com",
"REMNAWAVE_API_TOKEN": "ваш-api-токен",
"REMNAWAVE_API_KEY": "ваш-caddy-api-ключ",
"REMNAWAVE_READONLY": "false"
}
}
}
}Использование с Cursor / Windsurf
Добавьте в .cursor/mcp.json или .windsurf/mcp.json вашего проекта:
{
"mcpServers": {
"remnawave": {
"command": "node",
"args": ["/абсолютный/путь/к/remnawave-mcp/dist/index.js"],
"env": {
"REMNAWAVE_BASE_URL": "https://vpn.example.com",
"REMNAWAVE_API_TOKEN": "ваш-api-токен",
"REMNAWAVE_API_KEY": "ваш-caddy-api-ключ",
"REMNAWAVE_READONLY": "false"
}
}
}
}Docker
npm run build
docker compose up -dПеременные окружения передаются через .env файл или docker-compose.yml.
Доступные инструменты
Пользователи (27 инструментов)
Инструмент | Описание | Режим |
| Список пользователей с пагинацией | read |
| Получить пользователя по UUID | read |
| Получить пользователя по username | read |
| Получить пользователя по short UUID | read |
| Получить пользователя по Telegram ID | read |
| Получить пользователя по email | read |
| Получить пользователя по тегу | read |
| Получить пользователя по UUID подписки | read |
| Список тегов пользователей | read |
| Поиск пользователей по нескольким критериям | read |
| Создать нового пользователя | write |
| Обновить настройки пользователя | write |
| Удалить пользователя | write |
| Включить пользователя | write |
| Отключить пользователя | write |
| Отозвать подписку (перегенерировать ссылку) | write |
| Сбросить счётчик трафика | write |
| Массовое удаление по статусу | write |
| Массовое обновление | write |
| Массовый сброс трафика | write |
| Массовый отзыв подписок | write |
| Массовое удаление | write |
| Массовое обновление групп | write |
| Массовое продление срока | write |
| Обновить всех пользователей | write |
| Сбросить трафик всех пользователей | write |
| Продлить срок всех пользователей | write |
Ноды (15 инструментов)
Инструмент | Описание | Режим |
| Список всех нод | read |
| Получить ноду по UUID | read |
| Список тегов нод | read |
| Создать новую ноду | write |
| Обновить настройки ноды | write |
| Удалить ноду | write |
| Включить ноду | write |
| Отключить ноду | write |
| Перезапустить ноду | write |
| Перезапустить все ноды | write |
| Сбросить трафик ноды | write |
| Переупорядочить ноды | write |
| Массовое изменение профилей нод | write |
| Массовые действия с нодами | write |
| Массовое обновление нод | write |
Хосты (11 инструментов)
Инструмент | Описание | Режим |
| Список всех хостов | read |
| Получить хост по UUID | read |
| Список тегов хостов | read |
| Создать новый хост | write |
| Обновить настройки хоста | write |
| Удалить хост | write |
| Массовое включение хостов | write |
| Массовое отключение хостов | write |
| Массовое удаление хостов | write |
| Массовая установка inbound | write |
| Массовая установка порта | write |
Система (10 инструментов)
Инструмент | Описание | Режим |
| Статистика панели (пользователи, ноды, трафик, CPU, память) | read |
| Статистика пропускной способности | read |
| Метрики нод | read |
| Статистика нод | read |
| Проверка здоровья панели | read |
| Версия и метаданные панели | read |
| Генерация пары ключей X25519 | read |
| Проверка статуса аутентификации | read |
| Обзор статистики | read |
| Тест SRR-правил маршрутизации | read |
Подписки (10 инструментов)
Инструмент | Описание | Режим |
| Список всех подписок | read |
| Подписка по UUID | read |
| Подписка по username | read |
| Подписка по short UUID | read |
| Сырая подписка по short UUID | read |
| Конфиг субстраницы подписки | read |
| Ключи подключения по UUID | read |
| Информация о подписке | read |
| История запросов подписок | read |
| Статистика запросов подписок | read |
Конфиг-профили и Inbounds (9 инструментов)
Инструмент | Описание | Режим |
| Список конфиг-профилей | read |
| Получить конфиг-профиль по UUID | read |
| Список всех inbounds | read |
| Inbounds по UUID профиля | read |
| Вычисленный конфиг по UUID профиля | read |
| Создать конфиг-профиль | write |
| Обновить конфиг-профиль | write |
| Удалить конфиг-профиль | write |
| Переупорядочить конфиг-профили | write |
Внутренние группы (7 инструментов)
Инструмент | Описание | Режим |
| Список групп | read |
| Доступные ноды группы | read |
| Создать группу | write |
| Обновить группу | write |
| Удалить группу | write |
| Добавить пользователей в группу | write |
| Убрать пользователей из группы | write |
HWID-устройства (7 инструментов)
Инструмент | Описание | Режим |
| Список устройств пользователя | read |
| Список всех устройств | read |
| Статистика HWID | read |
| Топ пользователей по устройствам | read |
| Создать HWID-устройство | write |
| Удалить конкретное устройство | write |
| Удалить все устройства пользователя | write |
API-токены (3 инструмента)
Инструмент | Описание | Режим |
| Список API-токенов | read |
| Создать API-токен | write |
| Удалить API-токен | write |
Keygen (1 инструмент)
Инструмент | Описание | Режим |
| Получить данные keygen | read |
Биллинг инфраструктуры (12 инструментов)
Инструмент | Описание | Режим |
| Список провайдеров биллинга | read |
| Получить провайдера по UUID | read |
| Список биллинговых нод | read |
| История биллинга | read |
| Создать провайдера | write |
| Обновить провайдера | write |
| Удалить провайдера | write |
| Создать биллинговую ноду | write |
| Обновить биллинговую ноду | write |
| Удалить биллинговую ноду | write |
| Создать запись истории | write |
| Удалить запись истории | write |
Сниппеты (4 инструмента)
Инструмент | Описание | Режим |
| Список сниппетов | read |
| Создать сниппет | write |
| Обновить сниппет | write |
| Удалить сниппет | write |
Внешние группы (8 инструментов)
Инструмент | Описание | Режим |
| Список внешних групп | read |
| Получить внешнюю группу по UUID | read |
| Создать внешнюю группу | write |
| Обновить внешнюю группу | write |
| Удалить внешнюю группу | write |
| Добавить пользователей | write |
| Убрать пользователей | write |
| Переупорядочить | write |
Настройки (2 инструмента)
Инструмент | Описание | Режим |
| Получить настройки панели | read |
| Обновить настройки панели | write |
Страницы подписок (7 инструментов)
Инструмент | Описание | Режим |
| Список конфигов страниц | read |
| Получить конфиг страницы | read |
| Создать конфиг страницы | write |
| Обновить конфиг страницы | write |
| Удалить конфиг страницы | write |
| Переупорядочить | write |
| Клонировать конфиг | write |
Плагины нод (11 инструментов)
Инструмент | Описание | Режим |
| Список плагинов | read |
| Получить плагин по UUID | read |
| Отчёты торрент-блокировщика | read |
| Статистика торрент-блокировщика | read |
| Создать плагин | write |
| Обновить плагин | write |
| Удалить плагин | write |
| Переупорядочить плагины | write |
| Клонировать плагин | write |
| Выполнить плагин | write |
| Очистить отчёты торрент-блокировщика | write |
IP-контроль (5 инструментов)
Инструмент | Описание | Режим |
| Получить IP пользователя | read |
| Результат запроса IP | read |
| Получить IP пользователей на ноде | read |
| Результат запроса IP пользователей | read |
| Сбросить соединения | write |
Метаданные (4 инструмента)
Инструмент | Описание | Режим |
| Получить метаданные ноды | read |
| Получить метаданные пользователя | read |
| Обновить метаданные ноды | write |
| Обновить метаданные пользователя | write |
Ресурсы
URI | Описание |
| Текущая статистика панели |
| Статус всех нод |
| Состояние здоровья панели |
| Данные конкретного пользователя |
Промпты
Промпт | Описание |
| Пошаговое создание пользователя |
| Диагностика ноды |
| Отчёт по трафику |
| Полный аудит пользователя |
| Поиск и управление просроченными пользователями |
Примеры запросов
«Покажи мне всех пользователей с истёкшей подпиской»
«Создай пользователя vasya с лимитом 50 ГБ на месяц»
«Перезапусти ноду amsterdam-01»
«Дай отчёт по трафику за последнюю неделю»
«Отключи пользователей, которые превысили лимит трафика»
«Какие ноды сейчас офлайн?»
«Покажи историю биллинга»
«Список плагинов нод»
«Получи IP-соединения пользователя X»Структура проекта
src/
├── index.ts # Точка входа (stdio транспорт)
├── server.ts # Настройка McpServer
├── config.ts # Конфигурация окружения
├── client/
│ └── index.ts # HTTP-клиент Remnawave
├── tools/
│ ├── helpers.ts # Хелперы форматирования
│ ├── index.ts # Регистрация инструментов
│ ├── users.ts # Управление пользователями (27)
│ ├── nodes.ts # Управление нодами (15)
│ ├── hosts.ts # Управление хостами (11)
│ ├── system.ts # Система и авторизация (10)
│ ├── subscriptions.ts # Подписки (10)
│ ├── inbounds.ts # Конфиг-профили и inbounds (9)
│ ├── squads.ts # Внутренние группы (7)
│ ├── hwid.ts # HWID-устройства (7)
│ ├── infra-billing.ts # Биллинг инфраструктуры (12)
│ ├── node-plugins.ts # Плагины нод (11)
│ ├── external-squads.ts # Внешние группы (8)
│ ├── subscription-page-configs.ts # Страницы подписок (7)
│ ├── ip-control.ts # IP-контроль (5)
│ ├── snippets.ts # Сниппеты (4)
│ ├── metadata.ts # Метаданные нод и пользователей (4)
│ ├── api-tokens.ts # API-токены (3)
│ ├── settings.ts # Настройки панели (2)
│ └── keygen.ts # Keygen (1)
├── resources/
│ └── index.ts # MCP-ресурсы
└── prompts/
└── index.ts # MCP-промптыЛицензия
MIT
Available Tools
51 toolsauth_statusB
Check current authentication status with Remnawave panel
| 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 states the tool checks authentication status but doesn't describe what the check entails (e.g., returns user info, session validity, permissions), whether it requires authentication itself, or any side effects. For a tool with zero annotation coverage, this leaves significant behavioral 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?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action ('Check current authentication status'), making it easy to parse. Every part of the sentence contributes 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?
Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is minimally adequate. It explains what the tool does but lacks details on behavior, output format, or usage context. For a simple status-check tool, this is borderline viable but leaves room for improvement in guiding the agent.
Complex tools with many parameters or behaviors need more documentation. 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 0 parameters, and schema description coverage is 100% (empty schema). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for tools with no parameters. No additional parameter information is required or 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 clearly states the tool's purpose with a specific verb ('Check') and resource ('authentication status'), specifying it relates to the 'Remnawave panel'. It distinguishes itself from siblings by focusing on authentication status rather than user/host/node management. However, it doesn't explicitly differentiate from potential authentication-related siblings (none exist in the 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 is provided on when to use this tool versus alternatives. The description implies it checks authentication status, but doesn't specify scenarios (e.g., before performing operations, troubleshooting login issues) or prerequisites. Without explicit usage context, the agent must infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profiles_listB
List all config profiles
| 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 states it's a list operation, implying read-only behavior, but doesn't specify whether it returns all profiles, supports pagination, requires authentication, or has rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('List all config profiles') that is front-loaded and wastes no words. It directly communicates the core purpose without unnecessary elaboration, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'config profiles' are, what the return format looks like, or any behavioral traits like authentication needs. For a tool in this context with no structured support, the description should provide more context to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, meaning no parameters are documented in the schema. The description doesn't add parameter details, which is appropriate since there are none. It accurately reflects the lack of parameters by not mentioning any, earning a high baseline score for tools with zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('config profiles'), making the purpose immediately understandable. It distinguishes itself from siblings like 'hosts_list' or 'users_list' by specifying 'config profiles' as the target resource. However, it lacks specificity about what 'config profiles' are in this context, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context (e.g., after authentication), or comparisons to similar list operations like 'hosts_list' or 'users_list'. Without any usage context, the agent must infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_createC
Create a new host in Remnawave
| Name | Required | Description | Default |
|---|---|---|---|
| remark | Yes | Host remark/name | |
| address | Yes | Host address | |
| port | Yes | Host port | |
| configProfileUuid | Yes | Config profile UUID | |
| configProfileInboundUuid | Yes | Config profile inbound UUID | |
| path | No | URL path | |
| sni | No | SNI (Server Name Indication) | |
| host | No | Host header | |
| alpn | No | ALPN protocol | |
| fingerprint | No | TLS fingerprint | |
| isDisabled | No | Create in disabled state | |
| securityLayer | No | Security layer | |
| tag | No | Host tag | |
| serverDescription | No | Server description | |
| nodes | No | Array of node UUIDs to assign |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Create' which implies a write/mutation operation, but doesn't disclose any behavioral traits: no information about authentication requirements, rate limits, whether the operation is idempotent, what happens on failure, or what the response looks like. For a creation tool with 15 parameters, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the essential information (create operation) and doesn't include unnecessary elaboration. Every word earns its place in conveying the core 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 creation tool with 15 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what a 'host' represents in Remnawave context, doesn't describe the creation process or response format, and provides no behavioral context. The description should do more to compensate for the lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. 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 15 parameters thoroughly with descriptions and enums where applicable. The description adds no parameter information beyond what's in the schema. According to guidelines, when schema coverage is high (>80%), the baseline is 3 even with no param info in description, which fits this case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('a new host in Remnawave'), making the purpose immediately understandable. It distinguishes from siblings like hosts_delete, hosts_get, hosts_list, and hosts_update by specifying creation rather than other operations. However, it doesn't specify what a 'host' represents in this context, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing config profiles or nodes to exist first), doesn't specify when creation is appropriate versus updating existing hosts, and doesn't reference related tools like hosts_update or config_profiles_list for obtaining required UUIDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_deleteC
Delete a host from Remnawave
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Host UUID to delete |
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 states 'Delete' which implies a destructive, irreversible mutation, but doesn't specify consequences (e.g., data loss, impact on associated resources), permissions required, error conditions, or response format. For a destructive operation with zero annotation coverage, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It front-loads the key action ('Delete') and resource ('host'), making it immediately understandable. Every word earns its place, and there's no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a destructive deletion operation), lack of annotations, and no output schema, the description is insufficient. It doesn't cover behavioral aspects like irreversibility, side effects, or what happens on success/failure. For a tool that permanently removes resources, more context is needed to ensure safe and correct usage.
Complex tools with many parameters or behaviors need more documentation. 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 100% description coverage, with the single parameter 'uuid' documented as 'Host UUID to delete'. The description adds no additional parameter semantics beyond this. According to the rules, when schema coverage is high (>80%), the baseline score is 3 even with no param info in the description, which applies 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 clearly states the action ('Delete') and resource ('a host from Remnawave'), making the purpose unambiguous. It distinguishes from siblings like hosts_get, hosts_list, and hosts_update by specifying deletion rather than retrieval or modification. However, it doesn't explicitly differentiate from other deletion tools like nodes_delete or users_delete, which slightly limits sibling 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?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing the host's UUID), exclusions (e.g., not for deleting nodes or users), or contextual cues (e.g., use after hosts_list to identify targets). With multiple deletion tools in the sibling list, this lack of differentiation is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_getC
Get a specific host by UUID
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Host UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states it's a read operation ('Get'), but doesn't disclose error conditions (e.g., invalid UUID), authentication requirements, rate limits, or what data is returned. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It front-loads the core purpose ('Get a specific host') and specifies the key identifier ('by UUID'), making it immediately actionable without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is insufficiently complete. It doesn't explain what a 'host' entails in this context, what data is returned, or potential side effects. For a tool that likely returns structured host data, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'by UUID', aligning with the single parameter 'uuid' in the schema. Since schema description coverage is 100% (the parameter is fully documented as 'Host UUID'), the description adds no additional semantic value beyond what the schema provides, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('a specific host by UUID'), making the purpose immediately understandable. It distinguishes this from hosts_list (which retrieves multiple hosts) but doesn't explicitly differentiate from other 'get' operations like nodes_get or users_get, which follow the same pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided on when to use this tool versus alternatives. While the description implies it's for retrieving a single host by UUID, it doesn't mention prerequisites (e.g., needing a valid UUID), when not to use it (e.g., for listing hosts), or how it relates to siblings like hosts_list or hosts_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_listB
List all Remnawave hosts
| 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 full burden for behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't specify whether it returns all hosts at once, uses pagination, requires authentication, has rate limits, or provides any metadata about the hosts. This leaves significant gaps for an agent to understand how to interact with it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that efficiently conveys the core purpose without any fluff. It's front-loaded and wastes no words, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'hosts' are in this context, what data is returned (e.g., host names, IDs, statuses), or any behavioral aspects like pagination or errors. For a list operation with no structured output documentation, more context is needed.
Complex tools with many parameters or behaviors need more documentation. 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 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to explain parameters, and it correctly implies no inputs are required. A baseline of 4 is appropriate since 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 clearly states the action ('List all') and the resource ('Remnawave hosts'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'hosts_get' (which presumably retrieves a single host) or 'nodes_list' (which lists a different resource type), so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'hosts_get' (for single host details), 'nodes_list' (for different resources), and 'users_list' (for user listings), there's no indication of context, prerequisites, or comparative use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hosts_updateC
Update an existing host
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Host UUID to update | |
| remark | No | New remark/name | |
| address | No | New address | |
| port | No | New port | |
| path | No | New URL path | |
| sni | No | New SNI | |
| host | No | New host header | |
| alpn | No | New ALPN | |
| fingerprint | No | New fingerprint | |
| isDisabled | No | Enable/disable host | |
| securityLayer | No | New security layer | |
| tag | No | New tag | |
| serverDescription | No | New server description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Update an existing host' implies a mutation operation but reveals nothing about permissions required, whether changes are reversible, rate limits, error conditions, or what happens to unspecified fields. This is inadequate for a mutation tool with 13 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just three words. While it may be too brief for adequate completeness, every word earns its place by stating the core action without any fluff or redundant 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 mutation tool with 13 parameters, no annotations, and no output schema, the description is severely incomplete. It doesn't explain what 'updating a host' entails, what fields can be modified, what the expected outcome is, or any behavioral characteristics. The agent would need to infer too much from just three words.
Complex tools with many parameters or behaviors need more documentation. 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 13 parameters thoroughly with descriptions and enums. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing host' clearly states the verb (update) and resource (host), but it's quite generic. It doesn't specify what aspects of a host can be updated or differentiate meaningfully from sibling tools like 'hosts_create' or 'hosts_delete' beyond the basic verb difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided about when to use this tool versus alternatives. The description doesn't mention prerequisites (like needing a host UUID), when not to use it, or how it differs from related tools like 'nodes_update' or 'users_update' in the same system.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hwid_device_deleteC
Delete a specific HWID device
| Name | Required | Description | Default |
|---|---|---|---|
| deviceUuid | Yes | HWID device UUID to delete |
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. It states the tool deletes a device but does not mention critical details like whether the deletion is permanent, requires specific permissions, has side effects (e.g., on associated data), or returns any confirmation. This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no unnecessary words, making it highly concise and front-loaded. It efficiently communicates the core action without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature (deletion), no annotations, and no output schema, the description is insufficient. It fails to address important aspects like confirmation of deletion, error handling, or impact on related resources, making it incomplete for safe and effective use by an agent.
Complex tools with many parameters or behaviors need more documentation. 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 100% description coverage, with the parameter 'deviceUuid' clearly documented. The description adds no additional semantic context beyond what the schema provides, such as format examples or validation rules, so it meets the baseline score for high schema coverage without enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and the resource ('a specific HWID device'), making the purpose understandable. However, it does not explicitly differentiate from its sibling 'hwid_devices_delete_all', which handles bulk deletion, leaving some ambiguity about when to choose one over the other.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided on when to use this tool versus alternatives, such as 'hwid_devices_delete_all' for deleting multiple devices or other deletion tools like 'hosts_delete'. The description lacks context about prerequisites, permissions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hwid_devices_delete_allC
Delete all HWID devices for a user
| Name | Required | Description | Default |
|---|---|---|---|
| userUuid | Yes | User UUID |
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. It states the tool deletes all HWID devices for a user, implying a destructive operation, but fails to mention critical details like whether this action is irreversible, requires admin permissions, has rate limits, or returns confirmation data. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no unnecessary words, making it highly concise and front-loaded. It efficiently communicates the core action without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., irreversibility, permissions), usage context, and expected outcomes, which are critical for safe and effective tool invocation in this 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?
The input schema has 100% description coverage, clearly documenting the 'userUuid' parameter. The description does not add any semantic details beyond what the schema provides, such as format examples or validation rules. However, with high schema coverage, a baseline score of 3 is appropriate as the schema adequately covers 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 clearly states the action ('Delete') and target resource ('all HWID devices for a user'), making the purpose unambiguous. However, it does not explicitly differentiate from the sibling 'hwid_device_delete' (singular), which might handle individual device deletion, leaving some ambiguity about when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided on when to use this tool versus alternatives like 'hwid_device_delete' or other device management tools. The description lacks context on prerequisites, such as user authentication or permissions, or any warnings about irreversible deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hwid_devices_listC
List HWID devices for a specific user
| Name | Required | Description | Default |
|---|---|---|---|
| userUuid | Yes | User 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 of behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't cover aspects like pagination, rate limits, authentication needs, or what happens if the userUuid is invalid. This is a significant gap for a tool with no 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 description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list format, fields included) or address potential errors, which is crucial for a tool with no structured output documentation. This leaves significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'userUuid' fully documented in the schema. The description adds no additional parameter details beyond implying the userUuid is required for filtering. This meets the baseline of 3 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 clearly states the action ('List') and resource ('HWID devices') with a specific scope ('for a specific user'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'hwid_device_delete' or 'hwid_devices_delete_all' beyond the list vs. delete distinction, which is why it's not 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?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare it to other list tools like 'users_list' or 'hosts_list', leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inbounds_listB
List all inbounds from all config profiles
| 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. While 'List all inbounds' implies a read-only operation, it doesn't specify whether this requires authentication, has rate limits, returns paginated results, or what format the output takes. For a tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it immediately understandable without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no annotations, no output schema, and a simple listing tool, the description is incomplete. It doesn't explain what 'inbounds' are in this context, what data is returned, or any behavioral aspects like authentication requirements or response format. More context is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline is 4. The description doesn't need to explain parameters since there are none, and it correctly implies no inputs are required for this listing 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 clearly states the action ('List all inbounds') and the resource ('from all config profiles'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'config_profiles_list' or 'nodes_list' that might list related resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare it to sibling tools like 'config_profiles_list' or 'nodes_list' that might serve similar listing purposes in different contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_createC
Create a new node in Remnawave
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Node name | |
| address | Yes | Node address (IP or hostname) | |
| port | No | Node port | |
| countryCode | No | Country code (e.g. US, DE, NL) | |
| isTrafficTrackingActive | No | Enable traffic tracking | |
| trafficLimitBytes | No | Traffic limit in bytes | |
| trafficResetDay | No | Day of month to reset traffic (1-31) | |
| notifyPercent | No | Traffic notification threshold percentage | |
| consumptionMultiplier | No | Traffic consumption multiplier | |
| activeConfigProfileUuid | Yes | Config profile UUID to assign | |
| activeInbounds | Yes | Array of inbound UUIDs to enable |
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. 'Create' implies a write/mutation operation, but the description doesn't mention permissions required, whether the operation is idempotent, what happens on failure, or what the response contains. For a creation tool with 11 parameters and no annotations, this is a significant gap in 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 a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized and front-loaded with the essential information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, 4 required) and lack of both annotations and output schema, the description is insufficiently complete. It doesn't explain what a 'node' represents in Remnawave, what happens after creation, or what values are returned. For a creation tool with significant parameter complexity, more context is needed.
Complex tools with many parameters or behaviors need more documentation. 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%, meaning all parameters are documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema descriptions. According to guidelines, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('new node in Remnawave'), making the purpose immediately understandable. It distinguishes from siblings like nodes_list, nodes_get, nodes_update, and nodes_delete by specifying creation rather than other operations. However, it doesn't explicitly differentiate from hosts_create, which might be a similar but distinct resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when creation is appropriate versus updating existing nodes, or how this relates to similar tools like hosts_create. The agent must 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.
nodes_deleteB
Delete a node from Remnawave
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Node UUID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose whether deletion is permanent, requires specific permissions, affects related resources (e.g., users or subscriptions), or has rate limits. This is inadequate for a destructive operation 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 description is a single, direct sentence with zero wasted words. It's front-loaded with the key action and resource, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is incomplete. It lacks critical context such as what happens post-deletion (e.g., confirmation, error handling), impact on system state, or typical usage patterns, leaving significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. 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 doesn't add parameter details beyond the schema, but schema description coverage is 100% (the 'uuid' parameter is fully documented). With only one parameter, the baseline is 4 since the schema sufficiently explains the single required 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 clearly states the action ('Delete') and resource ('a node from Remnawave'), making the purpose immediately understandable. However, it doesn't differentiate from sibling deletion tools like 'hosts_delete' or 'hwid_device_delete', which would require specifying what type of node is being deleted (e.g., network node, server 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?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing the node's UUID from 'nodes_list'), consequences of deletion, or when to choose this over similar tools like 'nodes_disable' for temporary removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_disableC
Disable a node
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Node UUID |
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. It states the action ('disable') but fails to explain what disabling entails (e.g., whether it's reversible, affects traffic, requires permissions, or has side effects). This leaves critical behavioral traits unspecified 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?
The description is extremely concise ('Disable a node'), consisting of three words that directly convey the core purpose without any fluff. It is front-loaded and wastes no space, making it efficient for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 insufficient. It lacks details on behavior, effects, error conditions, or return values, leaving the agent with incomplete context to use the tool effectively despite the simple parameter 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 100%, with the single parameter 'uuid' documented as 'Node UUID'. The description adds no additional meaning beyond this, such as format examples or sourcing guidance. Baseline score of 3 applies since the schema adequately covers parameter 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 'Disable a node' clearly states the action (disable) and target resource (node), which is adequate. However, it lacks specificity about what 'disable' means operationally (e.g., deactivating vs. deleting) and does not distinguish it from sibling tools like 'nodes_delete' or 'users_disable', leaving room for ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'nodes_delete', 'nodes_enable', or 'users_disable'. The description does not mention prerequisites, consequences, or contextual triggers, offering minimal assistance for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_enableC
Enable a disabled node
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | 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 full burden. It states the action but lacks behavioral details: no mention of permissions required, whether the change is immediate or requires restart, what happens on success/failure, or if it affects connected users. 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?
The description is a single, efficient sentence with zero wasted words. It is front-loaded with the core action and target, making it immediately understandable without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 incomplete. It lacks details on behavioral traits (e.g., side effects, error conditions), usage context, and expected outcomes. Given the complexity of enabling a system node, more guidance is needed for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'uuid' documented as 'Node UUID'. The description adds no additional parameter context beyond implying the UUID belongs to a disabled node. Baseline 3 is appropriate since the schema fully describes the 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 'Enable a disabled node' clearly states the action (enable) and target resource (node), with the qualifier 'disabled' indicating the precondition. It distinguishes from sibling 'nodes_disable' by specifying the opposite operation, though it doesn't explicitly differentiate from other node-related tools like 'nodes_restart' or 'nodes_update'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. While 'disabled' implies a precondition, there's no mention of prerequisites (e.g., node must exist and be disabled), exclusions (e.g., cannot enable an already enabled node), or related tools like 'nodes_disable' for the reverse operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_getC
Get a specific node by UUID
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Node UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits such as error handling (e.g., what happens if the UUID is invalid), authentication needs, rate limits, or response format. This leaves significant gaps for a tool that likely involves data retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a simple tool with one parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what a 'node' is in this context, what data is returned, or any prerequisites, making it inadequate for a tool that likely returns structured data about a resource.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'uuid' fully documented in the schema. The description adds no additional meaning beyond implying it's used to identify a node, so it meets the baseline for high schema coverage without compensating 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 clearly states the action ('Get') and target resource ('a specific node by UUID'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'nodes_list' or 'hosts_get', which would require mentioning it retrieves a single node rather than listing multiple.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided on when to use this tool versus alternatives like 'nodes_list' for multiple nodes or other 'get' tools for different resources. The description implies usage when you have a node UUID, but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_listB
List all Remnawave nodes
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose whether this is a read-only operation, whether it requires authentication, how results are formatted (pagination, sorting), or any rate limits. For a list operation with zero annotation coverage, this is insufficient 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 a single, efficient sentence that gets straight to the point with zero wasted words. It's perfectly front-loaded and appropriately sized for a simple list operation with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description should provide more context about what 'list all Remnawave nodes' entails—what information is returned, format, any filtering options, or authentication requirements. For a tool in a system with many sibling operations, this minimal description leaves significant gaps in understanding the tool's behavior and 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?
The tool has zero parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, which is correct for this case. A baseline of 4 is appropriate since the description doesn't need to compensate for any parameter documentation gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('all Remnawave nodes'), making the purpose immediately understandable. It distinguishes from siblings like nodes_get (specific node) and nodes_create/delete/update (mutations), but doesn't explicitly mention these distinctions in the description text 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?
The description provides no guidance on when to use this tool versus alternatives like hosts_list, inbounds_list, or system_nodes_statistics. It doesn't indicate whether this is for administrative monitoring, configuration purposes, or other contexts, leaving the agent to infer usage 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.
nodes_reorderC
Reorder nodes by providing an ordered array of UUIDs
| Name | Required | Description | Default |
|---|---|---|---|
| uuids | Yes | Ordered array of node UUIDs |
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 mentions the action ('Reorder nodes') but doesn't specify if this is a destructive mutation, what permissions are required, how errors are handled (e.g., invalid UUIDs), or what the expected outcome is (e.g., order persistence). This is inadequate for a tool that likely modifies system state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function. It's front-loaded with the action and avoids unnecessary words, though it could be slightly more informative without losing 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 the complexity of a reordering operation with no annotations and no output schema, the description is incomplete. It doesn't explain what 'reorder' entails (e.g., affects display, routing, or hierarchy), potential side effects, or return values. For a mutation tool with one parameter, this lacks necessary context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'uuids' clearly documented as an 'Ordered array of node UUIDs'. The description adds no additional meaning beyond this, such as format examples or constraints (e.g., minimum array length). Given the high schema coverage, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('Reorder nodes') and the mechanism ('by providing an ordered array of UUIDs'), which clarifies the purpose. However, it doesn't distinguish this tool from siblings like 'nodes_list' or 'nodes_update'—it's unclear if this reorders all nodes globally or within a specific context, making it somewhat vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided on when to use this tool versus alternatives. For example, it doesn't specify if this should be used after creating nodes with 'nodes_create' or instead of updating order via 'nodes_update', nor does it mention prerequisites like needing existing nodes. This leaves the agent with no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_reset_trafficC
Reset traffic counter for a node
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | 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 of behavioral disclosure. It states the action ('Reset traffic counter') but fails to explain critical aspects like whether this requires admin permissions, if it's destructive (e.g., resets data irreversibly), what happens to the node's traffic metrics, or any rate limits. This is a significant gap for a mutation 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 description is a single, direct sentence with no wasted words, efficiently conveying the core action and target. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a mutation operation (resetting traffic counters), lack of annotations, and no output schema, the description is insufficient. It omits behavioral details like permissions, side effects, or return values, which are crucial for safe and effective use. The description does not compensate for the missing structured data, leaving gaps in understanding.
Complex tools with many parameters or behaviors need more documentation. 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 100% description coverage, with the 'uuid' parameter clearly documented as 'Node UUID'. The description does not add any additional meaning or context beyond what the schema provides, such as format examples or sourcing details. With high schema coverage, the baseline score of 3 is appropriate, as the schema handles the parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Reset') and resource ('traffic counter for a node'), making the purpose specific and understandable. It distinguishes itself from sibling tools like 'users_reset_traffic' by specifying 'node' instead of 'user', though it doesn't explicitly contrast with other node-related tools like 'nodes_restart' or 'nodes_update'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as other node management tools (e.g., 'nodes_restart', 'nodes_update') or user traffic reset ('users_reset_traffic'). It lacks context about prerequisites, timing, or exclusions, leaving the agent 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.
nodes_restartC
Restart a specific node
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Node UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action without disclosing behavioral traits. It doesn't mention whether this requires admin permissions, if it causes service interruption, what the restart process entails, expected downtime, or error conditions. For a potentially disruptive operation, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple operation and front-loads the essential information (restart + specific node).
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 potentially disruptive mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral implications, permissions needed, expected outcomes, or error handling. Given the complexity of node management and sibling tools offering related functions, more context is needed.
Complex tools with many parameters or behaviors need more documentation. 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 single 'uuid' parameter fully documented as 'Node UUID'. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or where to find the UUID. Baseline 3 is appropriate when 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 'Restart a specific node' clearly states the action (restart) and target resource (node), with 'specific' implying individual node targeting. It distinguishes from sibling 'nodes_restart_all' by specifying individual vs. bulk operation, though it doesn't explicitly name the sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided about when to use this tool versus alternatives like 'nodes_restart_all' for bulk operations, 'nodes_disable'/'nodes_enable' for state changes, or 'nodes_reset_traffic' for traffic management. The description implies individual node targeting but offers no explicit 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.
nodes_restart_allB
Restart all nodes
| 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 full burden. 'Restart all nodes' implies a potentially disruptive operation affecting multiple system components, but it doesn't disclose critical behavioral traits like required permissions, whether this is reversible, expected downtime, confirmation prompts, or rate limits. This is inadequate for a tool with clear operational impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise at three words ('Restart all nodes') with zero wasted language. It's front-loaded with the essential action and scope, making it immediately understandable without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 potentially disruptive bulk operation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address what 'restart' entails, what happens to services during restart, whether there's confirmation, what the return value indicates, or error conditions. The context demands more operational clarity.
Complex tools with many parameters or behaviors need more documentation. 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 with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter information, and it correctly implies no parameters are required for this bulk operation. Baseline 4 is appropriate for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain 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 'Restart all nodes' clearly states the action (restart) and target (all nodes), which is a specific verb+resource combination. However, it doesn't explicitly differentiate from its sibling 'nodes_restart' (which likely restarts individual nodes), leaving some ambiguity about when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'nodes_restart' (likely for individual nodes), 'nodes_disable', 'nodes_enable', and 'nodes_reset_traffic', there's no indication of when a bulk restart is appropriate versus other node management operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodes_updateC
Update an existing node
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Node UUID to update | |
| name | No | New node name | |
| address | No | New address | |
| port | No | New port | |
| countryCode | No | New country code | |
| isTrafficTrackingActive | No | Enable/disable traffic tracking | |
| trafficLimitBytes | No | New traffic limit | |
| trafficResetDay | No | New traffic reset day | |
| notifyPercent | No | New notification threshold | |
| consumptionMultiplier | No | New consumption multiplier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is an update operation but doesn't mention whether it requires specific permissions, if changes are reversible, what happens to unspecified fields, or potential side effects. This is inadequate for a mutation 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 description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 10 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'update' entails operationally, what values are returned, or how errors are handled. The agent lacks critical context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 10 parameters. The description adds no additional parameter information beyond what's in the schema, meeting the baseline score of 3 for high schema coverage without extra 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 clearly states the action ('Update') and resource ('an existing node'), making the purpose immediately understandable. It doesn't distinguish from sibling tools like 'nodes_create' or 'nodes_delete', but it's not misleading or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'nodes_create' for new nodes or 'nodes_disable' for deactivation. There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage 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.
squads_add_usersC
Add users to an internal squad
| Name | Required | Description | Default |
|---|---|---|---|
| squadUuid | Yes | Squad UUID | |
| userUuids | Yes | Array of user UUIDs to add |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It implies a mutation operation but doesn't specify whether this requires admin permissions, whether users can be added multiple times, what happens with invalid UUIDs, or what the response looks like. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and immediately communicates the core functionality without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 incomplete. It doesn't address behavioral aspects like permissions, error conditions, or response format. Given the complexity of adding users to a squad (which likely involves access control and validation), more context is needed.
Complex tools with many parameters or behaviors need more documentation. 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 both parameters (squadUuid and userUuids) adequately. The description adds no additional parameter context beyond what's in the schema, meeting the baseline expectation when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add users') and target resource ('to an internal squad'), providing a specific verb+resource combination. However, it doesn't differentiate from its sibling 'squads_remove_users' beyond the opposite action direction, missing explicit distinction about when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided about when to use this tool versus alternatives like 'squads_update' or 'users_update', nor about prerequisites such as squad/user existence or permissions. The description only states what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squads_createC
Create a new internal squad
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Squad name |
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 states 'Create' implies a write operation, but it doesn't cover critical aspects like required permissions, whether the operation is idempotent, what happens on failure, or what the response looks like (e.g., success confirmation or squad ID). This is inadequate for a mutation 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 description is a single, efficient sentence with zero waste—it directly states the tool's action and target. It's appropriately sized and front-loaded, making it easy to parse without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a creation operation with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., permissions, error handling), output expectations, and how it fits within the broader context of sibling tools, making it insufficient for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter information beyond what's in the schema, which has 100% coverage for the single parameter 'name'. Since schema coverage is high, the baseline score is 3, as the schema already fully documents the parameter, and the description doesn't compensate with additional semantics (e.g., naming constraints or examples).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('a new internal squad'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'squads_add_users' or 'squads_update', which would require more specificity about what distinguishes creation from other squad operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication, permissions), when not to use it, or how it relates to sibling tools like 'squads_list' or 'squads_update', leaving the agent without contextual usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squads_deleteB
Delete an internal squad
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Squad UUID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'delete' implies a destructive operation, the description doesn't specify whether deletion is permanent, requires specific permissions, affects associated resources (e.g., users, nodes), or provides confirmation feedback. This leaves significant behavioral gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's appropriately sized for a simple deletion tool and immediately communicates the core purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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. It doesn't explain what 'delete' entails operationally, what happens to squad members or resources, whether the action is reversible, or what confirmation (if any) is returned. Given the tool's potential impact, more contextual information is needed.
Complex tools with many parameters or behaviors need more documentation. 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 'uuid' has 100% schema description coverage ('Squad UUID to delete'), so the schema already provides complete documentation. The description doesn't add parameter details beyond what's in the schema, but with zero parameters needing additional explanation, this meets the baseline for tools with comprehensive 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 'Delete an internal squad' clearly states the action (delete) and resource (internal squad), making the purpose immediately understandable. It distinguishes from other squad operations like 'squads_create' or 'squads_update', though it doesn't explicitly differentiate from general deletion tools like 'hosts_delete' or 'users_delete'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., squad must exist), consequences of deletion, or when to choose other squad tools like 'squads_remove_users' for partial removal instead of full deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squads_listB
List all internal squads
| 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 full burden for behavioral disclosure. 'List all internal squads' implies a read-only operation but doesn't specify pagination behavior, sorting, filtering capabilities, authentication requirements, rate limits, or what 'internal' means operationally. This leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a simple list operation with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read operation with no parameters and no output schema, the description is insufficiently complete. It doesn't explain what 'internal' means, what data is returned, whether results are paginated, or any authentication requirements. With no annotations and no output schema, more context is needed for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline would be 4. The description appropriately doesn't discuss parameters since none exist, and the schema already fully documents this. No additional parameter semantics are needed or 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 clearly states the action ('List') and resource ('all internal squads'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like 'squads_get' (which might retrieve a specific squad), but the scope 'all' provides some differentiation from single-resource retrieval operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'squads_get' (likely for retrieving specific squads) and 'squads_create'/'squads_update'/'squads_delete' (for mutations), there's no indication of when this list operation is appropriate versus those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squads_remove_usersC
Remove users from an internal squad
| Name | Required | Description | Default |
|---|---|---|---|
| squadUuid | Yes | Squad UUID | |
| userUuids | Yes | Array of user UUIDs to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Remove') which implies mutation, but doesn't describe what this operation entails (e.g., whether users lose access to squad resources, if removal is reversible, what permissions are required, or what happens if users are in multiple squads). For a mutation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a tool with two parameters and clear schema documentation, and the information is front-loaded with the essential action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 insufficiently complete. It doesn't address what the tool returns (success/failure indicators, error conditions), what side effects occur (e.g., notification to removed users, impact on their permissions), or operational constraints (rate limits, authentication requirements). Given the complexity of user management operations, more context is needed for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters clearly documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema (squadUuid and userUuids). This meets the baseline expectation when schema documentation is complete, but provides no additional semantic context about parameter usage or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove users') and target resource ('from an internal squad'), making the purpose immediately understandable. It distinguishes from sibling tools like 'squads_add_users' by specifying removal rather than addition. However, it doesn't explicitly differentiate from other user removal tools like 'users_delete', which might cause some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing squad admin permissions), when not to use it (e.g., for bulk user deletion vs. removal from a specific squad), or direct alternatives like 'users_delete' for complete user removal versus just squad membership removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squads_updateC
Update an internal squad
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Squad UUID | |
| name | No | New squad name |
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. It states this is an update operation, implying mutation, but lacks details on permissions required, whether changes are reversible, error handling, or side effects. This is inadequate for a mutation 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 description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every part of the sentence serves a clear purpose in conveying the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 incomplete. It doesn't address behavioral aspects like permissions or side effects, nor does it explain the update scope or result format. Given the complexity of updating resources, this leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. 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 fully documents both parameters (uuid and name). The description doesn't add any meaning beyond this, such as explaining what a 'squad' represents or constraints on name changes. The baseline score of 3 reflects adequate but minimal value addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('an internal squad'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'squads_create' or 'squads_delete' beyond the basic verb, nor does it specify what aspects of a squad can be updated beyond what's implied by the parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing a squad UUID), exclusions, or comparisons to sibling tools like 'squads_add_users' or 'squads_remove_users' for user management, leaving usage context entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscription_infoC
Get subscription info by short UUID (public endpoint)
| Name | Required | Description | Default |
|---|---|---|---|
| shortUuid | Yes | Short UUID |
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 mentions 'public endpoint' which hints at accessibility, but doesn't disclose critical behavioral traits like authentication requirements, rate limits, error handling, or what specific subscription information is returned. For a tool with no annotation coverage, this leaves significant 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?
The description is a single, efficient sentence with zero waste. It's appropriately sized for a simple lookup tool and front-loads the essential information (action, resource, input method).
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no annotations and no output schema, the description is incomplete. It doesn't explain what subscription information is returned, error conditions, or how this tool differs from similar siblings. For a tool in a context with many alternatives, this leaves the agent guessing about appropriate use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal value beyond the input schema, which has 100% coverage. It mentions 'short UUID' but doesn't clarify format, length, or examples. With high schema coverage, the baseline is 3, but the description doesn't compensate with additional semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('subscription info'), and specifies the input method ('by short UUID') and access type ('public endpoint'). However, it doesn't explicitly differentiate from sibling tools like 'subscriptions_get_by_short_uuid' which appears to serve a similar purpose, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools for subscription retrieval (e.g., 'subscriptions_get_by_short_uuid', 'subscriptions_get_by_username', 'subscriptions_list'), there's no indication of which tool to choose for different scenarios or any prerequisites for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions_get_by_short_uuidC
Get subscription details by short UUID
| Name | Required | Description | Default |
|---|---|---|---|
| shortUuid | Yes | Short UUID |
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 a read operation ('Get'), implying it's non-destructive, but doesn't disclose behavioral traits such as authentication requirements, error handling, rate limits, or what 'subscription details' includes. This is inadequate 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 description is a single, efficient sentence with zero waste. It front-loads the core purpose without unnecessary elaboration, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'subscription details' returns, error conditions, or security context. For a read operation in a system with authentication-heavy siblings, this leaves significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. 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 parameter 'shortUuid' documented in the schema. The description adds no additional meaning beyond implying it's used for lookup, matching the baseline score 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 clearly states the action ('Get') and resource ('subscription details') with a specific lookup method ('by short UUID'). It distinguishes from siblings like 'subscriptions_get_by_username' and 'subscriptions_get_by_uuid' by specifying the identifier type. However, it doesn't explicitly contrast with 'subscription_info' which might serve a similar purpose, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'subscriptions_get_by_username', 'subscriptions_get_by_uuid', or 'subscription_info'. It lacks context about prerequisites (e.g., authentication needs) or typical scenarios, leaving the agent 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.
subscriptions_get_by_usernameC
Get subscription details by username
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Username |
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's a read operation ('Get'), but doesn't disclose behavioral traits such as authentication requirements, rate limits, error handling (e.g., if username not found), or what 'subscription details' includes. This leaves significant gaps for an agent to use it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Get subscription details') and specifies the method ('by username'). There is no wasted verbiage, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'subscription details' includes, potential errors, or how it differs from similar tools. For a read tool with one parameter, it's minimally adequate but lacks context needed for robust use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'username' fully documented in the schema. The description adds no additional meaning beyond implying the parameter is used for lookup, so it meets the baseline of 3 where 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 clearly states the verb ('Get') and resource ('subscription details') with a specific lookup method ('by username'). It distinguishes from siblings like 'subscriptions_get_by_uuid' and 'subscriptions_get_by_short_uuid' by specifying the identifier type, though it doesn't explicitly contrast with 'subscription_info' which might be similar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided on when to use this tool versus alternatives like 'subscriptions_get_by_uuid' or 'subscriptions_get_by_short_uuid'. The description implies usage when you have a username, but it doesn't specify prerequisites, error conditions, or comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions_get_by_uuidC
Get subscription details by UUID
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Subscription UUID |
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. It indicates a read operation ('Get') but doesn't specify permissions required, error conditions (e.g., invalid UUID format), rate limits, or response format. This leaves significant gaps in understanding how the tool behaves beyond its basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It front-loads the core purpose efficiently, making it easy for an agent to parse and understand immediately without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and no output schema, the description is insufficient. It lacks details on authentication needs, error handling, return data structure, or how it differs from sibling tools. Given the context of multiple similar retrieval tools, more completeness is needed to guide proper agent selection.
Complex tools with many parameters or behaviors need more documentation. 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 single parameter 'uuid' fully documented in the schema as 'Subscription UUID'. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline for high schema coverage without compensating 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 clearly states the action ('Get') and resource ('subscription details') with a specific identifier ('by UUID'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'subscription_info' or 'subscriptions_get_by_username', which appear to serve similar retrieval functions but use different identifiers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided on when to use this tool versus alternatives like 'subscription_info' or 'subscriptions_get_by_username'. The description only states what it does, leaving the agent to infer usage context from tool names alone without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions_listC
List all subscriptions with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | Offset for pagination | |
| size | No | Number of subscriptions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions pagination but doesn't specify default values, rate limits, authentication requirements, or what happens when no subscriptions exist. For a list operation with zero annotation coverage, this leaves significant behavioral 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?
The description is a single, efficient sentence that communicates the core functionality without any wasted words. It's appropriately sized for a straightforward list operation and gets directly to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 operation with no annotations and no output schema, the description is insufficient. It doesn't explain what information is returned about subscriptions, how results are ordered, error conditions, or authentication requirements. The agent would need to guess about important operational details.
Complex tools with many parameters or behaviors need more documentation. 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 parameters ('start' and 'size') clearly documented in the schema. The description adds the concept of pagination but doesn't provide additional semantic context beyond what the schema already specifies, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all subscriptions'), making the purpose unambiguous. However, it doesn't differentiate from sibling subscription tools like 'subscription_info' or 'subscriptions_get_by_*', which are more specific retrieval 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 guidance is provided about when to use this tool versus alternatives. The description doesn't mention sibling tools like 'subscription_info' (for single subscription details) or 'subscriptions_get_by_*' (for filtered lookups), leaving the agent to guess about appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_bandwidth_statsC
Get bandwidth statistics
| 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 states 'Get bandwidth statistics' but doesn't specify if this is a read-only operation, requires authentication, has rate limits, or what the output format might be. This leaves significant gaps for an agent to understand how to invoke it safely and effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient phrase ('Get bandwidth statistics') that is front-loaded and wastes no words. It directly conveys the core action without unnecessary elaboration, making it highly concise and well-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?
Given the complexity of a statistics tool with no annotations and no output schema, the description is incomplete. It doesn't explain what bandwidth statistics are returned (e.g., metrics, time frames, units) or behavioral aspects like permissions or data freshness. This leaves the agent with insufficient context to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, but since there are no parameters, this is acceptable. A baseline of 4 is appropriate as the schema fully covers the lack of 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 'Get bandwidth statistics' clearly states the verb ('Get') and resource ('bandwidth statistics'), making the purpose understandable. However, it lacks specificity about what bandwidth statistics are retrieved (e.g., system-wide, per-node, time range) and doesn't differentiate from sibling tools like 'system_stats' or 'system_nodes_statistics', which might overlap in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'system_stats' and 'system_nodes_statistics' that might offer related metrics, there's no indication of context, prerequisites, or exclusions for selecting this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_generate_x25519B
Generate X25519 key pair for VLESS Reality
| 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 full burden but only states what the tool does, not how it behaves (e.g., whether it returns public/private keys, format, security implications, or side effects). This leaves critical behavioral traits 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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and earns its place by clearly conveying the essential 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?
Given the tool has no parameters and no output schema, the description adequately covers the purpose but lacks details on behavior, output format, or integration context. It's minimally viable but leaves gaps in understanding how to use the generated 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?
With 0 parameters and 100% schema description coverage, the schema fully documents the lack of inputs. The description adds value by specifying the key type (X25519) and use case (VLESS Reality), which provides context beyond the empty schema, justifying a score above 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?
The description clearly states the action ('Generate X25519 key pair') and the purpose ('for VLESS Reality'), which is specific and informative. However, it doesn't explicitly differentiate from sibling tools like 'system_metadata' or 'system_stats', which lowers it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as whether it's for initial setup, key rotation, or specific configurations. Without annotations or context, the agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_healthB
Check Remnawave panel health status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Check' which implies a read-only operation, but doesn't specify whether this requires authentication, has rate limits, returns real-time vs cached data, or what format the health status takes. For a tool with zero annotation coverage, this leaves significant behavioral 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?
The description is a single, focused sentence with zero wasted words. It's front-loaded with the essential purpose and doesn't include any unnecessary elaboration. Every word earns its place in conveying the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no annotations, no output schema, and the description provides minimal behavioral context, this is incomplete for a system health checking tool. The agent won't know what the health status includes, whether it's comprehensive or partial, what format it returns, or any prerequisites for use. The description should provide more context about what 'health status' encompasses.
Complex tools with many parameters or behaviors need more documentation. 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 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't mention parameters since none exist, which is correct. A baseline of 4 is appropriate for zero-parameter tools when the schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain 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 'Check Remnawave panel health status' clearly states the verb ('Check') and resource ('Remnawave panel health status'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'system_stats' or 'system_metadata' that might provide related system information, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'system_stats' or 'system_metadata' from the sibling list. It lacks context about what specific health aspects it checks or when it's appropriate compared to other system-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_metadataB
Get Remnawave panel metadata and version information
| 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-only operation ('Get'), but doesn't disclose behavioral traits like authentication requirements, rate limits, error conditions, or what specific metadata and version information is returned. This leaves gaps for an agent to understand how to invoke it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a system metadata tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'metadata and version information' includes, the return format, or any behavioral context, which could hinder an agent's ability to use it correctly without additional trial or documentation.
Complex tools with many parameters or behaviors need more documentation. 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 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to add parameter semantics, so a baseline score of 4 is appropriate, as there's no missing information 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 clearly states the tool's purpose with a specific verb ('Get') and resource ('Remnawave panel metadata and version information'). It distinguishes from many siblings that manage hosts, nodes, users, etc., but doesn't explicitly differentiate from other system_* tools like system_health or system_stats, which might also provide system-level information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context, or exclusions, such as whether it requires authentication or if other tools like system_health might be more appropriate for specific needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_nodes_metricsC
Get detailed node metrics
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. It states a read operation ('Get') but doesn't cover aspects like authentication needs, rate limits, data format, or potential side effects. This is inadequate 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 description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it highly concise and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no annotations and no output schema, the description is incomplete. It lacks details on what 'detailed node metrics' includes, how data is returned, or any behavioral context. For a tool in a system context with siblings, this leaves significant 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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param info, which is appropriate here. Baseline is 4 for zero parameters, as it avoids redundancy.
Input schemas describe structure but not intent. Descriptions should explain 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 detailed node metrics' states a clear verb ('Get') and resource ('node metrics'), but it's vague about what 'detailed' entails and doesn't distinguish from sibling tools like 'system_nodes_statistics' or 'system_health'. It avoids tautology but lacks specificity for 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 guidance is provided on when to use this tool versus alternatives such as 'system_nodes_statistics' or 'system_health'. The description implies a context of retrieving metrics but offers no explicit when/when-not instructions or prerequisites, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_nodes_statisticsC
Get node statistics
| 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 full burden but only states the action without disclosing behavioral traits like read-only status, potential side effects, rate limits, or authentication needs. It's minimal and doesn't add meaningful context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words, making it appropriately concise. However, it could be more structured by front-loading key details, but its brevity is a strength in this context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity implied by 'statistics' and the lack of annotations and output schema, the description is incomplete. It doesn't explain what statistics are returned, their format, or any limitations, leaving significant gaps for the agent to understand the tool's 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?
The tool has 0 parameters with 100% schema description coverage, so no parameter information is needed. The description doesn't add semantics beyond the schema, but this is acceptable given the lack of parameters, aligning with the baseline for zero 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 'Get node statistics' clearly states the action (get) and resource (node statistics), but it's vague about what 'node statistics' entails and doesn't differentiate from sibling tools like 'system_nodes_metrics' or 'system_stats'. It provides basic purpose but lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provided on when to use this tool versus alternatives such as 'system_nodes_metrics' or 'system_stats'. The description offers no context, prerequisites, or exclusions, leaving the agent 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.
system_statsB
Get overall Remnawave panel statistics (users, nodes, traffic, memory, CPU)
| 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's a 'Get' operation, implying read-only behavior, but doesn't disclose any behavioral traits such as rate limits, authentication requirements, or whether it returns real-time or aggregated data. The description adds minimal context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key action and resource, listing specific statistics without redundancy. Every word contributes to understanding the tool's scope, making it appropriately sized and well-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?
Given the tool's complexity is low (0 parameters, no output schema), the description is complete enough for a basic read operation. However, without annotations or output schema, it lacks details on behavioral aspects like data format or potential errors, leaving some gaps for an AI agent to infer usage.
Complex tools with many parameters or behaviors need more documentation. 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 0 parameters, and schema description coverage is 100%. The description doesn't need to add parameter semantics, as there are none to document. It appropriately focuses on the tool's purpose without unnecessary details, meeting the baseline for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'overall Remnawave panel statistics', specifying the types of statistics (users, nodes, traffic, memory, CPU). It distinguishes from siblings like 'system_bandwidth_stats' or 'system_health' by focusing on comprehensive panel-level metrics. However, it doesn't explicitly differentiate from all siblings, such as 'system_nodes_statistics', which might overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over other system-related tools like 'system_health' or 'system_nodes_statistics', nor does it specify any prerequisites or exclusions. Usage is implied only by the tool's name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_createC
Create a new VPN user in Remnawave
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Unique username | |
| expireAt | Yes | Expiration date in ISO 8601 format | |
| trafficLimitBytes | No | Traffic limit in bytes (0 = unlimited) | |
| trafficLimitStrategy | No | Traffic reset period | |
| status | No | Initial user status | |
| description | No | User description | |
| tag | No | User tag for grouping | |
| telegramId | No | Telegram user ID | |
| No | User email | ||
| hwidDeviceLimit | No | Max number of HWID devices | |
| activeInternalSquads | No | Array of internal squad UUIDs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action. It doesn't mention required permissions, whether this operation is idempotent, what happens on duplicate usernames, rate limits, or what the response contains. For a mutation tool with 11 parameters, this leaves significant behavioral 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?
The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized for a tool with comprehensive schema documentation and gets straight to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 complex mutation tool with 11 parameters and no annotations or output schema, the description is insufficient. It doesn't explain what happens after creation, what permissions are needed, error conditions, or return values. The agent lacks critical context needed to use this tool effectively.
Complex tools with many parameters or behaviors need more documentation. 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 11 parameters thoroughly with descriptions, enums, and required fields. The description adds no additional parameter information beyond what's in the schema, meeting the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new VPN user in Remnawave'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'users_update' or 'hosts_create' beyond the obvious 'create' vs 'update' distinction, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when not to use it, or how it differs from similar operations like 'users_update' or 'hosts_create'. The agent must infer usage 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.
users_deleteB
Permanently delete a Remnawave user
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | User UUID to delete |
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. While it indicates the action is 'Permanently delete', it lacks details on permissions required, irreversible consequences, error conditions (e.g., if user doesn't exist), or response format. This is a significant gap for a destructive operation 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 description is a single, direct sentence with zero wasted words, front-loading the key action ('Permanently delete'). It is appropriately sized for a tool with one parameter and clear purpose, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is incomplete. It fails to address critical context such as authentication requirements, side effects (e.g., data loss), success/error responses, or safety warnings. This leaves the agent under-informed for a high-stakes 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?
The schema description coverage is 100%, with the single parameter 'uuid' documented as 'User UUID to delete'. The description does not add any meaning beyond this, such as format examples or validation rules. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema adequately handles parameter 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 clearly states the action ('Permanently delete') and the resource ('a Remnawave user'), making the purpose specific and unambiguous. It distinguishes itself from sibling tools like users_disable, users_enable, or users_update by emphasizing the permanent nature of the deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., user must exist, be disabled first), exclusions (e.g., cannot delete active users), or comparisons to siblings like users_disable for temporary removal, leaving the agent without contextual usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_disableA
Disable a Remnawave user (block VPN access)
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | User UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It states the action is 'disable' with outcome 'block VPN access', but doesn't disclose whether this is reversible (vs. users_delete), permission requirements, side effects, or what happens to existing user data/subscriptions. For a mutation tool with zero annotation coverage, this leaves significant behavioral 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?
Single sentence with zero waste - every word contributes to understanding the tool's purpose and outcome. Front-loaded with the core action and immediately specifies the concrete effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 adequately covers the basic purpose but lacks information about behavioral consequences, reversibility, error conditions, or response format. It's minimally viable but has clear gaps given the tool's destructive nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (parameter 'uuid' is fully described as 'User UUID'), so the baseline is 3. The description doesn't add any parameter-specific information beyond what the schema provides, but doesn't need to given complete schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Disable') and target ('a Remnawave user'), with specific outcome ('block VPN access'). It distinguishes from siblings like users_enable (opposite action) and users_delete (different destructive operation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (to block VPN access for a user) but doesn't explicitly state when to use this vs. alternatives like users_delete or users_revoke_subscription. It provides functional purpose but lacks comparative guidance with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_enableB
Enable a disabled Remnawave user (restore VPN access)
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | User UUID |
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 mentions the outcome ('restore VPN access') but lacks critical behavioral details: whether this requires admin permissions, if it's reversible, potential side effects, or error conditions. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word contributes meaning without redundancy, making it appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one parameter with full schema coverage and no output schema, the description covers the basic purpose but lacks completeness for a mutation tool. It doesn't address permissions, side effects, or response format, which are important for safe invocation. The simplicity of the tool keeps it from being lower, but more context would help.
Complex tools with many parameters or behaviors need more documentation. 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 single parameter 'uuid' documented as 'User UUID'. The description doesn't add any parameter-specific information beyond what the schema provides, such as format examples or where to obtain the UUID. With high schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Enable') and target ('a disabled Remnawave user'), with the specific outcome 'restore VPN access' providing additional context. It distinguishes from sibling 'users_disable' by being the opposite operation, though it doesn't explicitly mention other user-related tools like 'users_get' or 'users_update'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for enabling disabled users, but provides no guidance on when to use this versus alternatives like 'users_update' for other modifications, or prerequisites such as checking user status first. No explicit when-not-to-use or comparison with siblings is included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_getC
Get a specific Remnawave user by their UUID
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | User 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 states it's a read operation ('Get'), but doesn't disclose behavioral aspects like authentication requirements, rate limits, error responses (e.g., if UUID is invalid), or what data is returned. This is inadequate 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 description is a single, efficient sentence with no wasted words. It front-loads the key information ('Get a specific Remnawave user') and specifies the identifier type ('by their UUID').
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no annotations and no output schema, the description is incomplete. It doesn't explain what user data is returned, error handling, or authentication needs. For a read operation in a system with many sibling tools, more context is needed to guide proper usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'uuid' fully documented in the schema. The description adds no additional meaning beyond implying the UUID identifies a user, which is already clear from the schema. Baseline 3 is appropriate 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 clearly states the action ('Get') and resource ('a specific Remnawave user'), specifying retrieval by UUID. It distinguishes from general listing tools like 'users_list' but doesn't explicitly differentiate from similar lookup tools like 'users_get_by_username' or 'users_get_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?
No guidance is provided on when to use this tool versus alternatives like 'users_get_by_username' or 'users_get_by_short_uuid'. The description implies usage when you have a UUID, but it doesn't mention prerequisites, error conditions, or comparisons with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_get_by_short_uuidB
Get a Remnawave user by their short UUID
| Name | Required | Description | Default |
|---|---|---|---|
| shortUuid | Yes | Short 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 states it's a read operation ('Get'), but doesn't disclose behavioral traits such as authentication requirements, rate limits, error responses, or what happens if the short UUID is invalid. For a tool with no annotations, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It front-loads the key information (action and resource) and is appropriately sized for a simple lookup tool, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (single parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on usage, behavior, and output, which are important for an agent to operate correctly without annotations. It's complete enough for a simple read operation but could be improved with more 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?
The schema description coverage is 100%, with the parameter 'shortUuid' fully documented in the schema. The description adds no additional meaning beyond implying the parameter is used for lookup, so it meets the baseline of 3 where the schema does the heavy lifting without extra value from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('a Remnawave user'), specifying the lookup method ('by their short UUID'). It distinguishes from siblings like 'users_get' (likely by regular UUID) and 'users_get_by_username', making the purpose specific but not fully differentiating from 'subscriptions_get_by_short_uuid' which uses the same lookup method for a different resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'users_get' or 'users_get_by_username'. The description implies usage when you have a short UUID, but it doesn't specify prerequisites, error conditions, or comparisons to sibling tools, leaving the agent to infer context from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_get_by_usernameC
Get a Remnawave user by their username
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Username |
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 states the tool retrieves a user by username, implying a read-only operation, but doesn't specify if it requires authentication, rate limits, error handling (e.g., for non-existent usernames), or the format of the returned data. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that efficiently conveys the core functionality without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and no output schema, the description is incomplete. It doesn't explain what data is returned, potential errors, or behavioral nuances like authentication needs. Given the complexity of user retrieval operations and the lack of structured data, more context is needed to fully guide an agent.
Complex tools with many parameters or behaviors need more documentation. 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 100% description coverage, with the 'username' parameter documented as 'Username'. The description adds no additional semantic context beyond this, such as format examples or constraints. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema adequately handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('a Remnawave user'), making the purpose specific and understandable. However, it doesn't distinguish this tool from sibling tools like 'users_get' or 'users_get_by_short_uuid', which also retrieve user information but by different identifiers, leaving room for ambiguity in 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?
The description provides no guidance on when to use this tool versus alternatives, such as 'users_get' (which might use a different identifier) or 'users_list' (for multiple users). There's no mention of prerequisites, exclusions, or specific contexts, leaving the agent without clear usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_listB
List all Remnawave VPN users with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | Offset for pagination | |
| size | No | Number of users to return |
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 it's a list operation with pagination, implying it's read-only and non-destructive, but doesn't disclose behavioral traits like rate limits, authentication requirements, error handling, or what the output format looks like (e.g., JSON structure). This leaves gaps for an AI agent to invoke it correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('List all Remnawave VPN users') and includes key operational detail ('with pagination') without any wasted words. It's appropriately sized for a simple list 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?
Given the tool's low complexity (2 parameters, no output schema, no annotations), the description is minimally adequate but incomplete. It covers the basic action and pagination, but lacks details on output format, error cases, or integration with sibling tools, which could hinder an AI agent's ability to use it effectively in broader workflows.
Complex tools with many parameters or behaviors need more documentation. 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 100% description coverage, with clear documentation for 'start' (offset) and 'size' (number of users). The description adds minimal value beyond the schema by mentioning 'pagination', which aligns with the parameters but doesn't provide additional semantics like default behavior or constraints. Baseline 3 is appropriate as 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 clearly states the action ('List') and resource ('all Remnawave VPN users'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'users_get', 'users_get_by_username', or 'subscriptions_list', which also retrieve user-related data but with different scopes or filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 mentions 'with pagination', which implies usage for large datasets, but provides no explicit guidance on when to use this tool versus alternatives like 'users_get' (for single users) or 'subscriptions_list' (for subscription-focused data). There's no mention of prerequisites, exclusions, or comparative contexts with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_reset_trafficC
Reset traffic counter for a Remnawave user
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | User UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action is a 'reset' which implies mutation/destructive behavior, but doesn't clarify whether this is reversible, what permissions are required, whether it affects other user data, or what the expected outcome looks like. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the tool's purpose without unnecessary words. It's appropriately sized for a single-parameter tool and front-loads the essential 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 mutation tool ('reset') with no annotations and no output schema, the description is incomplete. It doesn't explain what 'reset' entails (sets to zero? clears history?), what happens after reset, error conditions, or return values. Given the complexity of a destructive operation and lack of structured data, more behavioral context is needed.
Complex tools with many parameters or behaviors need more documentation. 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 single parameter 'uuid' well-documented as 'User UUID'. The description doesn't add any additional parameter context beyond what the schema provides, but with complete schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Reset traffic counter') and target resource ('for a Remnawave user'), providing specific verb+resource pairing. However, it doesn't distinguish this tool from the similar 'nodes_reset_traffic' sibling tool, which appears to reset traffic for nodes rather than 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 is provided about when to use this tool versus alternatives. While the description implies it's for resetting user traffic counters, there's no mention of prerequisites, timing considerations, or comparison with other traffic-related operations 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.
users_revoke_subscriptionC
Revoke subscription for a Remnawave user (generates new subscription link)
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | User 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 mentions the action ('Revoke subscription') and a side effect ('generates new subscription link'), but lacks critical behavioral details: whether this is reversible, what permissions are required, if it affects user access immediately, or what the response looks like. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Revoke subscription') and includes a useful additional detail ('generates new subscription link'). There's no wasted verbiage or redundancy, making it highly concise and well-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?
Given the tool's complexity (a mutation operation with no annotations and no output schema), the description is incomplete. It lacks information on behavioral outcomes, error conditions, or return values. While concise, it doesn't provide enough context for safe and effective use by an AI agent, especially compared to richer sibling 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?
Schema description coverage is 100%, with the single parameter 'uuid' documented as 'User UUID'. The description doesn't add any parameter-specific details beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't need to heavily.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Revoke subscription') and the target ('for a Remnawave user'), with the additional detail that it 'generates new subscription link'. It distinguishes from siblings like subscription_info or subscriptions_get_by_uuid by focusing on revocation rather than retrieval. However, it doesn't explicitly differentiate from other user management tools like users_disable or users_delete, which slightly limits 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., user must have an active subscription), exclusions, or compare it to sibling tools like users_disable or subscription_info. The agent must infer usage from the name and context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_updateC
Update an existing Remnawave user
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | User UUID to update | |
| username | No | New username | |
| expireAt | No | New expiration date (ISO 8601) | |
| trafficLimitBytes | No | New traffic limit in bytes | |
| trafficLimitStrategy | No | Traffic reset period | |
| status | No | User status | |
| description | No | User description | |
| tag | No | User tag | |
| telegramId | No | Telegram user ID | |
| No | User email | ||
| hwidDeviceLimit | No | Max HWID devices | |
| activeInternalSquads | No | Internal squad UUIDs |
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. While 'Update' implies a mutation operation, the description doesn't disclose critical behavioral traits such as required permissions, whether changes are reversible, error handling (e.g., what happens if the UUID doesn't exist), or side effects. This leaves significant gaps for a tool that modifies user 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 description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place by conveying essential 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?
Given the complexity (12 parameters, mutation operation) and lack of annotations or output schema, the description is insufficiently complete. It doesn't explain what happens on success or failure, what permissions are needed, or how partial updates are handled. For a tool with many parameters and no structured safety hints, more contextual information is warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with each parameter clearly documented in the input schema (e.g., 'User UUID to update', 'New username', 'Traffic reset period'). The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3 for adequate but not additive documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Update') and resource ('existing Remnawave user'), making the purpose immediately understandable. It distinguishes from sibling tools like users_create, users_delete, users_disable, etc., by specifying it's for updating existing users rather than creating, deleting, or changing specific statuses. However, it doesn't specify what fields can be updated, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing the user's UUID), when not to use it (e.g., for creating new users vs. updating existing ones), or refer to sibling tools like users_create or users_disable. The agent must infer usage from the tool name and context alone.
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. Dates show when Glama detected each change.
51 tool updates
v1.0.0- First observed
auth_status - First observed
config_profiles_list - First observed
hosts_create - First observed
hosts_delete - First observed
hosts_get - First observed
hosts_list - First observed
hosts_update - First observed
hwid_device_delete - First observed
hwid_devices_delete_all - First observed
hwid_devices_list - First observed
inbounds_list - First observed
nodes_create - First observed
nodes_delete - First observed
nodes_disable - First observed
nodes_enable - First observed
nodes_get - First observed
nodes_list - First observed
nodes_reorder - First observed
nodes_reset_traffic - First observed
nodes_restart - First observed
nodes_restart_all - First observed
nodes_update - First observed
squads_add_users - First observed
squads_create - First observed
squads_delete - First observed
squads_list - First observed
squads_remove_users - First observed
squads_update - First observed
subscription_info - First observed
subscriptions_get_by_short_uuid - First observed
subscriptions_get_by_username - First observed
subscriptions_get_by_uuid - First observed
subscriptions_list - First observed
system_bandwidth_stats - First observed
system_generate_x25519 - First observed
system_health - First observed
system_metadata - First observed
system_nodes_metrics - First observed
system_nodes_statistics - First observed
system_stats - First observed
users_create - First observed
users_delete - First observed
users_disable - First observed
users_enable - First observed
users_get - First observed
users_get_by_short_uuid - First observed
users_get_by_username - First observed
users_list - First observed
users_reset_traffic - First observed
users_revoke_subscription - First observed
users_update
TDQS
Most tools have distinct purposes targeting specific resources like hosts, nodes, users, subscriptions, and system operations, with clear action distinctions (e.g., create, delete, list). However, some overlap exists, such as 'subscription_info' and 'subscriptions_get_by_short_uuid' which both retrieve subscription details by short UUID, potentially causing confusion. Overall, descriptions help clarify boundaries, but a few tools could be misselected due to similar functions.
Tool names follow a highly consistent verb_noun pattern throughout, such as 'hosts_list', 'nodes_create', and 'users_update'. All tools use snake_case uniformly, with verbs like 'create', 'delete', 'list', and 'get' applied predictably across resources. This consistency makes the tool set easy to navigate and understand at a glance.
With 51 tools, the count is excessive for the Remnawave panel management domain, leading to a heavy and potentially overwhelming interface. While the tools cover various resources like hosts, nodes, users, and subscriptions, many operations (e.g., multiple 'get' methods for subscriptions) could be consolidated. This high number suggests over-fragmentation rather than a well-scoped set, making it harder for agents to manage efficiently.
The tool set provides comprehensive CRUD and lifecycle coverage for the Remnawave panel domain, including resources like hosts, nodes, users, subscriptions, squads, and system operations. It supports full management workflows with actions such as create, read, update, delete, enable/disable, restart, and traffic reset. No obvious gaps are present; agents can perform all essential operations without dead ends.
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
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
MCP server enabling AI agents to manage Bitrix24 features via standardized protocol
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA production-ready MCP server that enables AI assistants to manage enterprise Active Directory environments through 45 specialized tools for users, groups, and GPOs. Its multi-client architecture allows for the secure management of multiple AD domains from a single codebase using natural language commands.3MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI agents to manage VPN configurations, cloud servers, and account settings through the StealthSurf API. It supports natural language commands for tasks such as creating VPN configs, managing cloud server orders, and performing device security audits.3MIT
- AlicenseBqualityDmaintenanceA local MCP server for managing WHM and cPanel servers through AI clients, supporting server health, account, DNS, email, database, SSL, bandwidth, disk, cron, and service-management tools across multiple WHM accounts.31MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server that provides AI assistants with professional-grade network analysis capabilities, combining Wireshark packet analysis, nmap scanning, and threat intelligence for enhanced network troubleshooting and security analysis.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/TrackLine/mcp-remnawave'
If you have feedback or need assistance with the MCP directory API, please join our Discord server