Remnawave Tools MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REMNAWAVE_VERSION | Yes | Version of the Remnawave server (e.g., 2.7.4). | |
| REMNAWAVE_BASE_URL | Yes | The base URL of the Remnawave server. | |
| REMNAWAVE_API_TOKEN | Yes | API token for authentication. | |
| REMNAWAVE_TOOLS_ALLOW_MUTATIONS | No | Set to 'true' to allow mutating operations. Default is 'false'. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| remnawave_discoverA | List all Remnawave flat tools with domain, operation, and local safety class. |
| remnawave_describeC | Return upstream remnawave_api schema/details for a domain and operation. |
| remnawave_bandwidth_stats_get_node_user_usage_legacyD | Remnawave bandwidth_stats.get_node_user_usage_legacy (read). |
| remnawave_bandwidth_stats_get_node_users_usageC | Remnawave bandwidth_stats.get_node_users_usage (read). |
| remnawave_bandwidth_stats_get_user_usageD | Remnawave bandwidth_stats.get_user_usage (read). |
| remnawave_bandwidth_stats_get_user_usage_legacyD | Remnawave bandwidth_stats.get_user_usage_legacy (read). |
| remnawave_bandwidth_stats_list_nodes_usageD | Remnawave bandwidth_stats.list_nodes_usage (read). |
| remnawave_external_squads_add_usersD | Remnawave external_squads.add_users (mutation). |
| remnawave_external_squads_createD | Remnawave external_squads.create (mutation). |
| remnawave_external_squads_deleteD | Remnawave external_squads.delete (mutation). |
| remnawave_external_squads_getD | Remnawave external_squads.get (read). |
| remnawave_external_squads_listC | Remnawave external_squads.list (read). |
| remnawave_external_squads_remove_usersD | Remnawave external_squads.remove_users (mutation). |
| remnawave_external_squads_reorderD | Remnawave external_squads.reorder (mutation). |
| remnawave_external_squads_updateC | Remnawave external_squads.update (mutation). |
| remnawave_hosts_bulk_deleteD | Remnawave hosts.bulk_delete (mutation). |
| remnawave_hosts_bulk_disableD | Remnawave hosts.bulk_disable (mutation). |
| remnawave_hosts_bulk_enableD | Remnawave hosts.bulk_enable (mutation). |
| remnawave_hosts_bulk_set_inboundD | Remnawave hosts.bulk_set_inbound (mutation). |
| remnawave_hosts_bulk_set_portD | Remnawave hosts.bulk_set_port (mutation). |
| remnawave_hosts_createD | Remnawave hosts.create (mutation). |
| remnawave_hosts_deleteD | Remnawave hosts.delete (mutation). |
| remnawave_hosts_getC | Remnawave hosts.get (read). |
| remnawave_hosts_listC | Remnawave hosts.list (read). |
| remnawave_hosts_list_tagsC | Remnawave hosts.list_tags (read). |
| remnawave_hosts_reorderC | Remnawave hosts.reorder (mutation). |
| remnawave_hosts_updateD | Remnawave hosts.update (mutation). |
| remnawave_hwid_create_deviceD | Remnawave hwid.create_device (mutation). |
| remnawave_hwid_delete_all_devicesD | Remnawave hwid.delete_all_devices (mutation). |
| remnawave_hwid_delete_deviceD | Remnawave hwid.delete_device (mutation). |
| remnawave_hwid_get_statsD | Remnawave hwid.get_stats (read). |
| remnawave_hwid_get_top_usersD | Remnawave hwid.get_top_users (sensitive-read). |
| remnawave_hwid_get_user_devicesD | Remnawave hwid.get_user_devices (sensitive-read). |
| remnawave_hwid_list_usersD | Remnawave hwid.list_users (sensitive-read). |
| remnawave_infra_billing_create_history_recordD | Remnawave infra_billing.create_history_record (mutation). |
| remnawave_infra_billing_create_nodeD | Remnawave infra_billing.create_node (mutation). |
| remnawave_infra_billing_create_providerC | Remnawave infra_billing.create_provider (mutation). |
| remnawave_infra_billing_delete_history_recordD | Remnawave infra_billing.delete_history_record (mutation). |
| remnawave_infra_billing_delete_nodeD | Remnawave infra_billing.delete_node (mutation). |
| remnawave_infra_billing_delete_providerC | Remnawave infra_billing.delete_provider (mutation). |
| remnawave_infra_billing_get_providerC | Remnawave infra_billing.get_provider (read). |
| remnawave_infra_billing_list_historyC | Remnawave infra_billing.list_history (read). |
| remnawave_infra_billing_list_nodesC | Remnawave infra_billing.list_nodes (read). |
| remnawave_infra_billing_list_providersC | Remnawave infra_billing.list_providers (read). |
| remnawave_infra_billing_update_nodeD | Remnawave infra_billing.update_node (mutation). |
| remnawave_infra_billing_update_providerD | Remnawave infra_billing.update_provider (mutation). |
| remnawave_internal_squads_add_usersC | Remnawave internal_squads.add_users (mutation). |
| remnawave_internal_squads_createC | Remnawave internal_squads.create (mutation). |
| remnawave_internal_squads_deleteC | Remnawave internal_squads.delete (mutation). |
| remnawave_internal_squads_getC | Remnawave internal_squads.get (read). |
| remnawave_internal_squads_get_accessible_nodesD | Remnawave internal_squads.get_accessible_nodes (read). |
| remnawave_internal_squads_listC | Remnawave internal_squads.list (read). |
| remnawave_internal_squads_remove_usersD | Remnawave internal_squads.remove_users (mutation). |
| remnawave_internal_squads_reorderD | Remnawave internal_squads.reorder (mutation). |
| remnawave_internal_squads_updateD | Remnawave internal_squads.update (mutation). |
| remnawave_keygen_generate_node_secretD | Remnawave keygen.generate_node_secret (mutation). |
| remnawave_metadata_get_nodeC | Remnawave metadata.get_node (read). |
| remnawave_metadata_get_userC | Remnawave metadata.get_user (read). |
| remnawave_metadata_upsert_nodeD | Remnawave metadata.upsert_node (mutation). |
| remnawave_metadata_upsert_userD | Remnawave metadata.upsert_user (mutation). |
| remnawave_nodes_bulk_actionsD | Remnawave nodes.bulk_actions (mutation). |
| remnawave_nodes_bulk_updateD | Remnawave nodes.bulk_update (mutation). |
| remnawave_nodes_createC | Remnawave nodes.create (mutation). |
| remnawave_nodes_deleteD | Remnawave nodes.delete (mutation). |
| remnawave_nodes_disableD | Remnawave nodes.disable (mutation). |
| remnawave_nodes_enableC | Remnawave nodes.enable (mutation). |
| remnawave_nodes_getC | Remnawave nodes.get (read). |
| remnawave_nodes_listD | Remnawave nodes.list (read). |
| remnawave_nodes_list_tagsD | Remnawave nodes.list_tags (read). |
| remnawave_nodes_profile_modificationD | Remnawave nodes.profile_modification (mutation). |
| remnawave_nodes_reorderD | Remnawave nodes.reorder (mutation). |
| remnawave_nodes_reset_trafficC | Remnawave nodes.reset_traffic (mutation). |
| remnawave_nodes_restartD | Remnawave nodes.restart (mutation). |
| remnawave_nodes_restart_allD | Remnawave nodes.restart_all (mutation). |
| remnawave_nodes_updateC | Remnawave nodes.update (mutation). |
| remnawave_profiles_createD | Remnawave profiles.create (mutation). |
| remnawave_profiles_deleteD | Remnawave profiles.delete (mutation). |
| remnawave_profiles_getD | Remnawave profiles.get (read). |
| remnawave_profiles_get_computedD | Remnawave profiles.get_computed (read). |
| remnawave_profiles_listC | Remnawave profiles.list (read). |
| remnawave_profiles_list_all_inboundsD | Remnawave profiles.list_all_inbounds (read). |
| remnawave_profiles_list_inboundsD | Remnawave profiles.list_inbounds (read). |
| remnawave_profiles_reorderD | Remnawave profiles.reorder (mutation). |
| remnawave_profiles_updateC | Remnawave profiles.update (mutation). |
| remnawave_public_subscriptions_getD | Remnawave public_subscriptions.get (sensitive-read). |
| remnawave_public_subscriptions_get_by_client_typeD | Remnawave public_subscriptions.get_by_client_type (sensitive-read). |
| remnawave_public_subscriptions_get_infoC | Remnawave public_subscriptions.get_info (sensitive-read). |
| remnawave_snippets_createD | Remnawave snippets.create (mutation). |
| remnawave_snippets_deleteC | Remnawave snippets.delete (mutation). |
| remnawave_snippets_listD | Remnawave snippets.list (read). |
| remnawave_snippets_updateC | Remnawave snippets.update (mutation). |
| remnawave_subscription_page_configs_cloneC | Remnawave subscription_page_configs.clone (mutation). |
| remnawave_subscription_page_configs_createD | Remnawave subscription_page_configs.create (mutation). |
| remnawave_subscription_page_configs_deleteC | Remnawave subscription_page_configs.delete (mutation). |
| remnawave_subscription_page_configs_getC | Remnawave subscription_page_configs.get (read). |
| remnawave_subscription_page_configs_listC | Remnawave subscription_page_configs.list (read). |
| remnawave_subscription_page_configs_reorderD | Remnawave subscription_page_configs.reorder (mutation). |
| remnawave_subscription_page_configs_updateC | Remnawave subscription_page_configs.update (mutation). |
| remnawave_subscription_request_history_get_statsC | Remnawave subscription_request_history.get_stats (read). |
| remnawave_subscription_request_history_listC | Remnawave subscription_request_history.list (read). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 152 tools
Most tools target distinct resource-action pairs, but there are overlaps like legacy vs non-legacy methods and multiple user lookup tools (by email, id, username, etc.) that could confuse selection.
All tools follow the exact pattern remnawave_<resource>_<action> with snake_case, making naming perfectly predictable and consistent.
With 152 tools, the surface is extremely bloated. Many tools are redundant or overly granular (e.g., multiple bulk operations, legacy methods), making it unwieldy for agents.
Covers major domains like users, nodes, hosts, billing, and profiles, but includes many niche or redundant operations while lacking some lifecycle operations (e.g., no straightforward user delete? Actually there is users_delete, so it's okay but uneven).