Skip to main content
Glama
TrackLine
by TrackLine

mcp-remnawave

English | Русский


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 supportX-Api-Key header for panels behind Caddy with custom path

  • Type-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 build

Configuration

Create a .env file or pass environment variables:

Variable

Required

Description

REMNAWAVE_BASE_URL

Yes

Panel URL (e.g. https://vpn.example.com)

REMNAWAVE_API_TOKEN

Yes

API token from panel settings

REMNAWAVE_API_KEY

No

API key for Caddy reverse proxy authentication

REMNAWAVE_READONLY

No

Set to true to enable readonly mode

REMNAWAVE_BASE_URL=https://vpn.example.com
REMNAWAVE_API_TOKEN=your-api-token-here

Caddy 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-key

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

users_list, users_get, users_get_by_username, users_get_by_short_uuid, users_get_by_telegram_id, users_get_by_email, users_get_by_tag, users_get_by_subscription_uuid, users_tags_list, users_resolve

Nodes (3)

nodes_list, nodes_get, nodes_tags_list

Hosts (3)

hosts_list, hosts_get, hosts_tags_list

System (10)

all tools (read-only by nature)

Subscriptions (10)

all tools (read-only by nature)

Config Profiles & Inbounds (5)

config_profiles_list, config_profiles_get, inbounds_list, config_profiles_get_inbounds, config_profiles_get_computed_config

Internal Squads (2)

squads_list, squads_accessible_nodes

HWID (4)

hwid_devices_list, hwid_devices_list_all, hwid_stats, hwid_top_users

API Tokens (1)

api_tokens_list

Keygen (1)

keygen_get

Infra Billing (4)

billing_providers_list, billing_provider_get, billing_nodes_list, billing_history_list

Snippets (1)

snippets_list

External Squads (2)

external_squads_list, external_squads_get

Settings (1)

settings_get

Sub Page Configs (2)

sub_page_configs_list, sub_page_configs_get

Node Plugins (4)

node_plugins_list, node_plugins_get, node_plugins_torrent_reports, node_plugins_torrent_stats

IP Control (4)

ip_control_fetch_ips, ip_control_get_fetch_ips_result, ip_control_fetch_users_ips, ip_control_get_fetch_users_ips_result

Metadata (2)

metadata_node_get, metadata_user_get

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 -d

Environment variables are passed via .env file or docker-compose.yml.

Available Tools

Users (27 tools)

Tool

Description

Mode

users_list

List all users with pagination

read

users_get

Get user by UUID

read

users_get_by_username

Get user by username

read

users_get_by_short_uuid

Get user by short UUID

read

users_get_by_telegram_id

Get user by Telegram ID

read

users_get_by_email

Get user by email

read

users_get_by_tag

Get user by tag

read

users_get_by_subscription_uuid

Get user by subscription UUID

read

users_tags_list

List all user tags

read

users_resolve

Resolve users by multiple criteria

read

users_create

Create a new user

write

users_update

Update user settings

write

users_delete

Delete a user

write

users_enable

Enable a disabled user

write

users_disable

Disable a user

write

users_revoke_subscription

Revoke subscription (regenerate link)

write

users_reset_traffic

Reset traffic counter

write

users_bulk_delete_by_status

Bulk delete users by status

write

users_bulk_update

Bulk update users

write

users_bulk_reset_traffic

Bulk reset traffic

write

users_bulk_revoke_subscription

Bulk revoke subscriptions

write

users_bulk_delete

Bulk delete users

write

users_bulk_update_squads

Bulk update user squads

write

users_bulk_extend_expiration

Bulk extend expiration dates

write

users_bulk_all_update

Bulk update all users

write

users_bulk_all_reset_traffic

Bulk reset all users traffic

write

users_bulk_all_extend_expiration

Bulk extend all users expiration

write

Nodes (15 tools)

Tool

Description

Mode

nodes_list

List all nodes

read

nodes_get

Get node by UUID

read

nodes_tags_list

List all node tags

read

nodes_create

Create a new node

write

nodes_update

Update node settings

write

nodes_delete

Delete a node

write

nodes_enable

Enable a node

write

nodes_disable

Disable a node

write

nodes_restart

Restart a specific node

write

nodes_restart_all

Restart all nodes

write

nodes_reset_traffic

Reset node traffic counter

write

nodes_reorder

Reorder nodes

write

nodes_bulk_profile_modification

Bulk modify node profiles

write

nodes_bulk_actions

Bulk node actions

write

nodes_bulk_update

Bulk update nodes

write

Hosts (11 tools)

Tool

Description

Mode

hosts_list

List all hosts

read

hosts_get

Get host by UUID

read

hosts_tags_list

List all host tags

read

hosts_create

Create a new host

write

hosts_update

Update host settings

write

hosts_delete

Delete a host

write

hosts_bulk_enable

Bulk enable hosts

write

hosts_bulk_disable

Bulk disable hosts

write

hosts_bulk_delete

Bulk delete hosts

write

hosts_bulk_set_inbound

Bulk set host inbound

write

hosts_bulk_set_port

Bulk set host port

write

System (10 tools)

Tool

Description

Mode

system_stats

Panel statistics (users, nodes, traffic, CPU, memory)

read

system_bandwidth_stats

Bandwidth statistics

read

system_nodes_metrics

Node metrics

read

system_nodes_statistics

Node statistics

read

system_health

Panel health check

read

system_metadata

Panel version and metadata

read

system_generate_x25519

Generate X25519 key pair

read

auth_status

Check authentication status

read

system_stats_recap

System statistics recap

read

system_srr_matcher

Test SRR routing rules

read

Subscriptions (10 tools)

Tool

Description

Mode

subscriptions_list

List all subscriptions

read

subscriptions_get_by_uuid

Get subscription by UUID

read

subscriptions_get_by_username

Get subscription by username

read

subscriptions_get_by_short_uuid

Get subscription by short UUID

read

subscriptions_get_raw_by_short_uuid

Get raw subscription by short UUID

read

subscriptions_get_subpage_config

Get subscription subpage config

read

subscriptions_get_connection_keys

Get connection keys by UUID

read

subscription_info

Get subscription info

read

subscription_request_history_list

Subscription request history

read

subscription_request_history_stats

Subscription request history stats

read

Config Profiles & Inbounds (9 tools)

Tool

Description

Mode

config_profiles_list

List config profiles

read

config_profiles_get

Get config profile by UUID

read

inbounds_list

List all inbounds

read

config_profiles_get_inbounds

Get inbounds by profile UUID

read

config_profiles_get_computed_config

Get computed config by profile UUID

read

config_profiles_create

Create config profile

write

config_profiles_update

Update config profile

write

config_profiles_delete

Delete config profile

write

config_profiles_reorder

Reorder config profiles

write

Internal Squads (7 tools)

Tool

Description

Mode

squads_list

List all squads

read

squads_accessible_nodes

Get squad accessible nodes

read

squads_create

Create a squad

write

squads_update

Update a squad

write

squads_delete

Delete a squad

write

squads_add_users

Add users to a squad

write

squads_remove_users

Remove users from a squad

write

HWID Devices (7 tools)

Tool

Description

Mode

hwid_devices_list

List user's HWID devices

read

hwid_devices_list_all

List all HWID devices

read

hwid_stats

Get HWID statistics

read

hwid_top_users

Get top users by devices

read

hwid_device_create

Create HWID device

write

hwid_device_delete

Delete a specific device

write

hwid_devices_delete_all

Delete all user's devices

write

API Tokens (3 tools)

Tool

Description

Mode

api_tokens_list

List API tokens

read

api_tokens_create

Create API token

write

api_tokens_delete

Delete API token

write

Keygen (1 tool)

Tool

Description

Mode

keygen_get

Get keygen data

read

Infra Billing (12 tools)

Tool

Description

Mode

billing_providers_list

List billing providers

read

billing_provider_get

Get billing provider by UUID

read

billing_nodes_list

List billing nodes

read

billing_history_list

List billing history

read

billing_provider_create

Create billing provider

write

billing_provider_update

Update billing provider

write

billing_provider_delete

Delete billing provider

write

billing_node_create

Create billing node

write

billing_node_update

Update billing node

write

billing_node_delete

Delete billing node

write

billing_history_create

Create billing history entry

write

billing_history_delete

Delete billing history entry

write

Snippets (4 tools)

Tool

Description

Mode

snippets_list

List snippets

read

snippets_create

Create snippet

write

snippets_update

Update snippet

write

snippets_delete

Delete snippet

write

External Squads (8 tools)

Tool

Description

Mode

external_squads_list

List external squads

read

external_squads_get

Get external squad by UUID

read

external_squads_create

Create external squad

write

external_squads_update

Update external squad

write

external_squads_delete

Delete external squad

write

external_squads_add_users

Add users to external squad

write

external_squads_remove_users

Remove users from external squad

write

external_squads_reorder

Reorder external squads

write

Settings (2 tools)

Tool

Description

Mode

settings_get

Get panel settings

read

settings_update

Update panel settings

write

Subscription Page Configs (7 tools)

Tool

Description

Mode

sub_page_configs_list

List subscription page configs

read

sub_page_configs_get

Get subscription page config

read

sub_page_configs_create

Create subscription page config

write

sub_page_configs_update

Update subscription page config

write

sub_page_configs_delete

Delete subscription page config

write

sub_page_configs_reorder

Reorder subscription page configs

write

sub_page_configs_clone

Clone subscription page config

write

Node Plugins (11 tools)

Tool

Description

Mode

node_plugins_list

List node plugins

read

node_plugins_get

Get node plugin by UUID

read

node_plugins_torrent_reports

Get torrent blocker reports

read

node_plugins_torrent_stats

Get torrent blocker stats

read

node_plugins_create

Create node plugin

write

node_plugins_update

Update node plugin

write

node_plugins_delete

Delete node plugin

write

node_plugins_reorder

Reorder node plugins

write

node_plugins_clone

Clone node plugin

write

node_plugins_execute

Execute node plugin

write

node_plugins_torrent_truncate

Truncate torrent blocker reports

write

IP Control (5 tools)

Tool

Description

Mode

ip_control_fetch_ips

Fetch IPs for a user

read

ip_control_get_fetch_ips_result

Get fetch IPs job result

read

ip_control_fetch_users_ips

Fetch users IPs on a node

read

ip_control_get_fetch_users_ips_result

Get fetch users IPs job result

read

ip_control_drop_connections

Drop user connections

write

Metadata (4 tools)

Tool

Description

Mode

metadata_node_get

Get node metadata

read

metadata_user_get

Get user metadata

read

metadata_node_upsert

Upsert node metadata

write

metadata_user_upsert

Upsert user metadata

write

Resources

URI

Description

remnawave://stats

Current panel statistics

remnawave://nodes

All nodes status

remnawave://health

Panel health status

remnawave://users/{uuid}

Specific user details

Prompts

Prompt

Description

create_user_wizard

Step-by-step user creation guide

node_diagnostics

Node troubleshooting

traffic_report

Traffic usage report

user_audit

Complete user audit

bulk_user_cleanup

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 prompts

License

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 или передайте переменные окружения:

Переменная

Обязательная

Описание

REMNAWAVE_BASE_URL

Да

URL панели (например https://vpn.example.com)

REMNAWAVE_API_TOKEN

Да

API-токен из настроек панели

REMNAWAVE_API_KEY

Нет

API-ключ для аутентификации через Caddy reverse proxy

REMNAWAVE_READONLY

Нет

true для включения режима только чтения

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)

users_list, users_get, users_get_by_username, users_get_by_short_uuid, users_get_by_telegram_id, users_get_by_email, users_get_by_tag, users_get_by_subscription_uuid, users_tags_list, users_resolve

Ноды (3)

nodes_list, nodes_get, nodes_tags_list

Хосты (3)

hosts_list, hosts_get, hosts_tags_list

Система (10)

все инструменты (только чтение по природе)

Подписки (10)

все инструменты (только чтение по природе)

Конфиг-профили и Inbounds (5)

config_profiles_list, config_profiles_get, inbounds_list, config_profiles_get_inbounds, config_profiles_get_computed_config

Внутренние группы (2)

squads_list, squads_accessible_nodes

HWID (4)

hwid_devices_list, hwid_devices_list_all, hwid_stats, hwid_top_users

API-токены (1)

api_tokens_list

Keygen (1)

keygen_get

Биллинг (4)

billing_providers_list, billing_provider_get, billing_nodes_list, billing_history_list

Сниппеты (1)

snippets_list

Внешние группы (2)

external_squads_list, external_squads_get

Настройки (1)

settings_get

Страницы подписок (2)

sub_page_configs_list, sub_page_configs_get

Плагины нод (4)

node_plugins_list, node_plugins_get, node_plugins_torrent_reports, node_plugins_torrent_stats

IP-контроль (4)

ip_control_fetch_ips, ip_control_get_fetch_ips_result, ip_control_fetch_users_ips, ip_control_get_fetch_users_ips_result

Метаданные (2)

metadata_node_get, metadata_user_get

Использование с 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 инструментов)

Инструмент

Описание

Режим

users_list

Список пользователей с пагинацией

read

users_get

Получить пользователя по UUID

read

users_get_by_username

Получить пользователя по username

read

users_get_by_short_uuid

Получить пользователя по short UUID

read

users_get_by_telegram_id

Получить пользователя по Telegram ID

read

users_get_by_email

Получить пользователя по email

read

users_get_by_tag

Получить пользователя по тегу

read

users_get_by_subscription_uuid

Получить пользователя по UUID подписки

read

users_tags_list

Список тегов пользователей

read

users_resolve

Поиск пользователей по нескольким критериям

read

users_create

Создать нового пользователя

write

users_update

Обновить настройки пользователя

write

users_delete

Удалить пользователя

write

users_enable

Включить пользователя

write

users_disable

Отключить пользователя

write

users_revoke_subscription

Отозвать подписку (перегенерировать ссылку)

write

users_reset_traffic

Сбросить счётчик трафика

write

users_bulk_delete_by_status

Массовое удаление по статусу

write

users_bulk_update

Массовое обновление

write

users_bulk_reset_traffic

Массовый сброс трафика

write

users_bulk_revoke_subscription

Массовый отзыв подписок

write

users_bulk_delete

Массовое удаление

write

users_bulk_update_squads

Массовое обновление групп

write

users_bulk_extend_expiration

Массовое продление срока

write

users_bulk_all_update

Обновить всех пользователей

write

users_bulk_all_reset_traffic

Сбросить трафик всех пользователей

write

users_bulk_all_extend_expiration

Продлить срок всех пользователей

write

Ноды (15 инструментов)

Инструмент

Описание

Режим

nodes_list

Список всех нод

read

nodes_get

Получить ноду по UUID

read

nodes_tags_list

Список тегов нод

read

nodes_create

Создать новую ноду

write

nodes_update

Обновить настройки ноды

write

nodes_delete

Удалить ноду

write

nodes_enable

Включить ноду

write

nodes_disable

Отключить ноду

write

nodes_restart

Перезапустить ноду

write

nodes_restart_all

Перезапустить все ноды

write

nodes_reset_traffic

Сбросить трафик ноды

write

nodes_reorder

Переупорядочить ноды

write

nodes_bulk_profile_modification

Массовое изменение профилей нод

write

nodes_bulk_actions

Массовые действия с нодами

write

nodes_bulk_update

Массовое обновление нод

write

Хосты (11 инструментов)

Инструмент

Описание

Режим

hosts_list

Список всех хостов

read

hosts_get

Получить хост по UUID

read

hosts_tags_list

Список тегов хостов

read

hosts_create

Создать новый хост

write

hosts_update

Обновить настройки хоста

write

hosts_delete

Удалить хост

write

hosts_bulk_enable

Массовое включение хостов

write

hosts_bulk_disable

Массовое отключение хостов

write

hosts_bulk_delete

Массовое удаление хостов

write

hosts_bulk_set_inbound

Массовая установка inbound

write

hosts_bulk_set_port

Массовая установка порта

write

Система (10 инструментов)

Инструмент

Описание

Режим

system_stats

Статистика панели (пользователи, ноды, трафик, CPU, память)

read

system_bandwidth_stats

Статистика пропускной способности

read

system_nodes_metrics

Метрики нод

read

system_nodes_statistics

Статистика нод

read

system_health

Проверка здоровья панели

read

system_metadata

Версия и метаданные панели

read

system_generate_x25519

Генерация пары ключей X25519

read

auth_status

Проверка статуса аутентификации

read

system_stats_recap

Обзор статистики

read

system_srr_matcher

Тест SRR-правил маршрутизации

read

Подписки (10 инструментов)

Инструмент

Описание

Режим

subscriptions_list

Список всех подписок

read

subscriptions_get_by_uuid

Подписка по UUID

read

subscriptions_get_by_username

Подписка по username

read

subscriptions_get_by_short_uuid

Подписка по short UUID

read

subscriptions_get_raw_by_short_uuid

Сырая подписка по short UUID

read

subscriptions_get_subpage_config

Конфиг субстраницы подписки

read

subscriptions_get_connection_keys

Ключи подключения по UUID

read

subscription_info

Информация о подписке

read

subscription_request_history_list

История запросов подписок

read

subscription_request_history_stats

Статистика запросов подписок

read

Конфиг-профили и Inbounds (9 инструментов)

Инструмент

Описание

Режим

config_profiles_list

Список конфиг-профилей

read

config_profiles_get

Получить конфиг-профиль по UUID

read

inbounds_list

Список всех inbounds

read

config_profiles_get_inbounds

Inbounds по UUID профиля

read

config_profiles_get_computed_config

Вычисленный конфиг по UUID профиля

read

config_profiles_create

Создать конфиг-профиль

write

config_profiles_update

Обновить конфиг-профиль

write

config_profiles_delete

Удалить конфиг-профиль

write

config_profiles_reorder

Переупорядочить конфиг-профили

write

Внутренние группы (7 инструментов)

Инструмент

Описание

Режим

squads_list

Список групп

read

squads_accessible_nodes

Доступные ноды группы

read

squads_create

Создать группу

write

squads_update

Обновить группу

write

squads_delete

Удалить группу

write

squads_add_users

Добавить пользователей в группу

write

squads_remove_users

Убрать пользователей из группы

write

HWID-устройства (7 инструментов)

Инструмент

Описание

Режим

hwid_devices_list

Список устройств пользователя

read

hwid_devices_list_all

Список всех устройств

read

hwid_stats

Статистика HWID

read

hwid_top_users

Топ пользователей по устройствам

read

hwid_device_create

Создать HWID-устройство

write

hwid_device_delete

Удалить конкретное устройство

write

hwid_devices_delete_all

Удалить все устройства пользователя

write

API-токены (3 инструмента)

Инструмент

Описание

Режим

api_tokens_list

Список API-токенов

read

api_tokens_create

Создать API-токен

write

api_tokens_delete

Удалить API-токен

write

Keygen (1 инструмент)

Инструмент

Описание

Режим

keygen_get

Получить данные keygen

read

Биллинг инфраструктуры (12 инструментов)

Инструмент

Описание

Режим

billing_providers_list

Список провайдеров биллинга

read

billing_provider_get

Получить провайдера по UUID

read

billing_nodes_list

Список биллинговых нод

read

billing_history_list

История биллинга

read

billing_provider_create

Создать провайдера

write

billing_provider_update

Обновить провайдера

write

billing_provider_delete

Удалить провайдера

write

billing_node_create

Создать биллинговую ноду

write

billing_node_update

Обновить биллинговую ноду

write

billing_node_delete

Удалить биллинговую ноду

write

billing_history_create

Создать запись истории

write

billing_history_delete

Удалить запись истории

write

Сниппеты (4 инструмента)

Инструмент

Описание

Режим

snippets_list

Список сниппетов

read

snippets_create

Создать сниппет

write

snippets_update

Обновить сниппет

write

snippets_delete

Удалить сниппет

write

Внешние группы (8 инструментов)

Инструмент

Описание

Режим

external_squads_list

Список внешних групп

read

external_squads_get

Получить внешнюю группу по UUID

read

external_squads_create

Создать внешнюю группу

write

external_squads_update

Обновить внешнюю группу

write

external_squads_delete

Удалить внешнюю группу

write

external_squads_add_users

Добавить пользователей

write

external_squads_remove_users

Убрать пользователей

write

external_squads_reorder

Переупорядочить

write

Настройки (2 инструмента)

Инструмент

Описание

Режим

settings_get

Получить настройки панели

read

settings_update

Обновить настройки панели

write

Страницы подписок (7 инструментов)

Инструмент

Описание

Режим

sub_page_configs_list

Список конфигов страниц

read

sub_page_configs_get

Получить конфиг страницы

read

sub_page_configs_create

Создать конфиг страницы

write

sub_page_configs_update

Обновить конфиг страницы

write

sub_page_configs_delete

Удалить конфиг страницы

write

sub_page_configs_reorder

Переупорядочить

write

sub_page_configs_clone

Клонировать конфиг

write

Плагины нод (11 инструментов)

Инструмент

Описание

Режим

node_plugins_list

Список плагинов

read

node_plugins_get

Получить плагин по UUID

read

node_plugins_torrent_reports

Отчёты торрент-блокировщика

read

node_plugins_torrent_stats

Статистика торрент-блокировщика

read

node_plugins_create

Создать плагин

write

node_plugins_update

Обновить плагин

write

node_plugins_delete

Удалить плагин

write

node_plugins_reorder

Переупорядочить плагины

write

node_plugins_clone

Клонировать плагин

write

node_plugins_execute

Выполнить плагин

write

node_plugins_torrent_truncate

Очистить отчёты торрент-блокировщика

write

IP-контроль (5 инструментов)

Инструмент

Описание

Режим

ip_control_fetch_ips

Получить IP пользователя

read

ip_control_get_fetch_ips_result

Результат запроса IP

read

ip_control_fetch_users_ips

Получить IP пользователей на ноде

read

ip_control_get_fetch_users_ips_result

Результат запроса IP пользователей

read

ip_control_drop_connections

Сбросить соединения

write

Метаданные (4 инструмента)

Инструмент

Описание

Режим

metadata_node_get

Получить метаданные ноды

read

metadata_user_get

Получить метаданные пользователя

read

metadata_node_upsert

Обновить метаданные ноды

write

metadata_user_upsert

Обновить метаданные пользователя

write

Ресурсы

URI

Описание

remnawave://stats

Текущая статистика панели

remnawave://nodes

Статус всех нод

remnawave://health

Состояние здоровья панели

remnawave://users/{uuid}

Данные конкретного пользователя

Промпты

Промпт

Описание

create_user_wizard

Пошаговое создание пользователя

node_diagnostics

Диагностика ноды

traffic_report

Отчёт по трафику

user_audit

Полный аудит пользователя

bulk_user_cleanup

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

Примеры запросов

«Покажи мне всех пользователей с истёкшей подпиской»
«Создай пользователя 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 tools
auth_statusB

Check current authentication status with Remnawave panel

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
remarkYesHost remark/name
addressYesHost address
portYesHost port
configProfileUuidYesConfig profile UUID
configProfileInboundUuidYesConfig profile inbound UUID
pathNoURL path
sniNoSNI (Server Name Indication)
hostNoHost header
alpnNoALPN protocol
fingerprintNoTLS fingerprint
isDisabledNoCreate in disabled state
securityLayerNoSecurity layer
tagNoHost tag
serverDescriptionNoServer description
nodesNoArray of node UUIDs to assign

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesHost UUID to delete

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesHost UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesHost UUID to update
remarkNoNew remark/name
addressNoNew address
portNoNew port
pathNoNew URL path
sniNoNew SNI
hostNoNew host header
alpnNoNew ALPN
fingerprintNoNew fingerprint
isDisabledNoEnable/disable host
securityLayerNoNew security layer
tagNoNew tag
serverDescriptionNoNew server description

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceUuidYesHWID device UUID to delete

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
userUuidYesUser UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
userUuidYesUser UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNode name
addressYesNode address (IP or hostname)
portNoNode port
countryCodeNoCountry code (e.g. US, DE, NL)
isTrafficTrackingActiveNoEnable traffic tracking
trafficLimitBytesNoTraffic limit in bytes
trafficResetDayNoDay of month to reset traffic (1-31)
notifyPercentNoTraffic notification threshold percentage
consumptionMultiplierNoTraffic consumption multiplier
activeConfigProfileUuidYesConfig profile UUID to assign
activeInboundsYesArray of inbound UUIDs to enable

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesNode UUID to delete

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesNode UUID

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesNode UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesNode UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidsYesOrdered array of node UUIDs

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesNode UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesNode UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesNode UUID to update
nameNoNew node name
addressNoNew address
portNoNew port
countryCodeNoNew country code
isTrafficTrackingActiveNoEnable/disable traffic tracking
trafficLimitBytesNoNew traffic limit
trafficResetDayNoNew traffic reset day
notifyPercentNoNew notification threshold
consumptionMultiplierNoNew consumption multiplier

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
squadUuidYesSquad UUID
userUuidsYesArray of user UUIDs to add

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSquad name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesSquad UUID to delete

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
squadUuidYesSquad UUID
userUuidsYesArray of user UUIDs to remove

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesSquad UUID
nameNoNew squad name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
shortUuidYesShort UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
shortUuidYesShort UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesUsername

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesSubscription UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoOffset for pagination
sizeNoNumber of subscriptions

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesUnique username
expireAtYesExpiration date in ISO 8601 format
trafficLimitBytesNoTraffic limit in bytes (0 = unlimited)
trafficLimitStrategyNoTraffic reset period
statusNoInitial user status
descriptionNoUser description
tagNoUser tag for grouping
telegramIdNoTelegram user ID
emailNoUser email
hwidDeviceLimitNoMax number of HWID devices
activeInternalSquadsNoArray of internal squad UUIDs

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUser UUID to delete

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUser UUID

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUser UUID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUser UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
shortUuidYesShort UUID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesUsername

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoOffset for pagination
sizeNoNumber of users to return

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUser UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUser UUID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUser UUID to update
usernameNoNew username
expireAtNoNew expiration date (ISO 8601)
trafficLimitBytesNoNew traffic limit in bytes
trafficLimitStrategyNoTraffic reset period
statusNoUser status
descriptionNoUser description
tagNoUser tag
telegramIdNoTelegram user ID
emailNoUser email
hwidDeviceLimitNoMax HWID devices
activeInternalSquadsNoInternal squad UUIDs

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 51 tool updatesv1.0.0
    • First observedauth_status
    • First observedconfig_profiles_list
    • First observedhosts_create
    • First observedhosts_delete
    • First observedhosts_get
    • First observedhosts_list
    • First observedhosts_update
    • First observedhwid_device_delete
    • First observedhwid_devices_delete_all
    • First observedhwid_devices_list
    • First observedinbounds_list
    • First observednodes_create
    • First observednodes_delete
    • First observednodes_disable
    • First observednodes_enable
    • First observednodes_get
    • First observednodes_list
    • First observednodes_reorder
    • First observednodes_reset_traffic
    • First observednodes_restart
    • First observednodes_restart_all
    • First observednodes_update
    • First observedsquads_add_users
    • First observedsquads_create
    • First observedsquads_delete
    • First observedsquads_list
    • First observedsquads_remove_users
    • First observedsquads_update
    • First observedsubscription_info
    • First observedsubscriptions_get_by_short_uuid
    • First observedsubscriptions_get_by_username
    • First observedsubscriptions_get_by_uuid
    • First observedsubscriptions_list
    • First observedsystem_bandwidth_stats
    • First observedsystem_generate_x25519
    • First observedsystem_health
    • First observedsystem_metadata
    • First observedsystem_nodes_metrics
    • First observedsystem_nodes_statistics
    • First observedsystem_stats
    • First observedusers_create
    • First observedusers_delete
    • First observedusers_disable
    • First observedusers_enable
    • First observedusers_get
    • First observedusers_get_by_short_uuid
    • First observedusers_get_by_username
    • First observedusers_list
    • First observedusers_reset_traffic
    • First observedusers_revoke_subscription
    • First observedusers_update

TDQS

B3.2/5.0
Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness5/5

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

ActivityStale
ResponsivenessResponsive

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An 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.
    3
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A 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.
    31
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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

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