Skip to main content
Glama

Keenetic-router-plugin

A plugin (MCP server + skill) that gives an AI agent control over a Keenetic router via RCI — the same API the router's web interface uses. It works directly on the local network, no cloud involved. The MCP server is standalone and works with any MCP client (e.g., Codex), while the skill (domain knowledge about Keenetic for the AI) is only available in the Claude Code plugin ecosystem.

Tested on KeeneticOS 5.0.12. On another model/firmware, specific RCI paths may differ — before getting started, run npm run smoke (read-only, it changes nothing on the router).

What the AI can and cannot do through this plugin

Reading — no confirmation needed, at any time: firmware version, WAN status, list of interfaces, connected devices, Wi-Fi clients, port forwarding, routes, DHCP reservations, VPN interfaces, full configuration export (export_config).

Changes — only if the AI explicitly passes confirm: true: changing the Wi-Fi password, enabling/disabling the access point, adding/removing port forwardings, adding/removing routes, binding/unbinding a network to an already configured VPN tunnel, batch applying routes from a .bat file. Without confirm: true, the call is rejected. You can ask the AI to first run it with dryRun: true — it will show what exactly will be sent to the router, changing nothing.

Dangerous operations — additionally require ALLOW_DESTRUCTIVE=true in the server config: rebooting the router. As long as the flag is not enabled, the router cannot be rebooted through the AI, even with confirm: true.

What the plugin cannot do at all (not implemented): creating VPN tunnels from scratch (WireGuard/OpenVPN/IPsec), factory reset, firmware update.

Every write/destructive call (applied, rejected, or failed with an error) is written to audit.log.

Related MCP server: AsusWRT MCP Server

Installation

Requires Node.js 20+.

  1. Clone the project and install dependencies:

    npm install
    npm run build
  2. Copy .env.example to .env in the same directory and fill it in:

    ROUTER_HOST=192.168.1.1        # LAN-адрес роутера (в свойствах сети — "основной шлюз")
    ROUTER_PORT=80
    ROUTER_LOGIN=имя_пользователя
    ROUTER_PASSWORD=пароль_пользователя
    ALLOW_DESTRUCTIVE=false        # true — разрешить reboot_router

    Instead of .env, the same values can be passed with --env when registering the server — see the below.

  3. Check the connection (read-only, it doesn't change anything on the router):

    npm run smoke

    If a request returned an error, your model/firmware has a different RCI path — fix it in src/capabilities/*.ts before working with the AI.

Connecting to Claude Code

As a plugin (recommended — comes with the skill right away):

claude --plugin-dir "<путь-к-проекту>"

For a permanent connection (not just one session), use /plugin install once you put the project into a Git repository or local marketplace.

Server only, without the skill:

claude mcp add --transport stdio --scope user keenetic -- node "<путь-к-проекту>/dist/index.js"

If you haven't created a .env, add your credentials right here:

claude mcp add --transport stdio --scope user \
  --env ROUTER_HOST=192.168.1.1 --env ROUTER_LOGIN=имя_пользователя --env ROUTER_PASSWORD=его_пароль \
  keenetic -- node "<путь-к-проекту>/dist/index.js"

Check the connection with claude mcp list, claude mcp get keenetic or /mcp inside a session.

After that, in the conversation you can write, for example: "show the devices connected to the router" or "change the guest Wi-Fi password".

Connecting to Codex

In ~/.codex/config.toml:

[mcp_servers.keenetic]
command = "node"
args = ["<путь-к-проекту>/dist/index.js"]

Security

The guard model (confirm/dryRun/ALLOW_DESTRUCTIVE) protects against accidental and careless action by the AI. It does not protect the router password itself — if .env or the config falls into the wrong hands, someone can directly log into the router with that password, bypassing the server and all these restrictions.

  • export_config is formally read-only, but returns secrets in plain or weakly obfuscated form (password hashes, SSID-PSK, WireGuard parameters) — the same information as behind the "Save" button in the web interface, but now in the conversation with the AI. The tool itself asks the AI to warn you before calling it.

  • Create a separate user for the service in the router web interface (System → Users) rather than using admin, where possible. Caveat: some operations (specifically set_wifi_password/set_wifi_enabled) on Keenetic are available only to admin — if you need these, use admin, but with a fresh unique password.

  • Don't expose RCI/the web admin panel to the Internet — don't enable remote access, KeenDNS with management access, or a public port forward to the web admin panel for this account. By default, Keenetic is already closed from the outside.

  • Restrict access to .env at the OS level (chmod 600 .env on macOS/Linux, or file properties → "Security" on Windows). The file is already in .gitignore.

  • Use a long unique password that doesn't match symlink or any other passwords.

Development

npm run dev     # запуск сервера напрямую через tsx, без сборки
npm test        # unit-тесты (без обращения к реальному роутеру)
npm run smoke   # live read-only проверка на реальном роутере из .env

Versions and releases

The project version (package.json, .claude-plugin/plugin.json) is bumped automatically on push to master — GitHub Actions runs semantic-release, which determines the version level based on commit messages (Angular convention):

  • fix: ... → patch

  • feat: ... → minor

  • feat!: ... / {ANGULAR...} in commit body → major

  • chore:, docs:, refactor:, test: etc. — no release is created

We never bump or edit the version manually — it's fully derived from the commit history.

Available Tools

23 tools
add_domain_routeДобавить доменный маршрут (policy-routing по FQDN)A
Idempotent

Создаёт object-group fqdn со списком доменов и привязывает его через dns-proxy route к указанному интерфейсу. Форма подтверждена вживую (перехват XHR веб-интерфейса на Keenetic Hero 4G+).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesИмя object-group, например domain-list3 (уникальное — сверься со списком существующих через export_config)
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
targetYesИмя интерфейса, куда направить трафик по этим доменам (обычно VPN, например Wireguard1)
confirmNoОбязательно true, чтобы реально применить изменение на роутере.
domainsYesСписок доменов (FQDN)
descriptionYesЧеловекочитаемое описание списка

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate readOnly=false, destructive=false, and idempotent=true. The description adds useful behavioral detail: the tool creates an object-group and binds it via dns-proxy route, and includes live-capture provenance ('перехват XHR веб-интерфейса'). It does not state behavior on re-running with an existing name, but the schema's uniqueness warning mitigates this.

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?

Two tightly written sentences: the first states the core behavior and mechanism, the second provides trustworthy provenance. There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation tool with no output schema, the combination of a clear description, full parameter documentation, and annotations covers almost everything needed to call it correctly. The main gap is lack of explicit guidance on when this tool is preferred over related route-management siblings.

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 every parameter is already documented in the schema. The description adds limited parameter-level meaning beyond that, mostly reinforcing the domain-list and target-interface concepts. Baseline 3 is appropriate.

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 names a specific verb ('Создаёт'), a precise resource ('object-group fqdn'), and the routing mechanism ('dns-proxy route'), tying it to a target interface. This clearly distinguishes it from generic route tools like add_route or bind_route_to_vpn.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description and schema provide operational guidance such as checking uniqueness via export_config and using confirm/dryRun, but there is no explicit statement about when to choose this tool over sibling tools like add_route or run_route_batch. The FQDN-specific scope is implied rather than stated as a selection criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_port_forwardДобавить проброс портаA
Idempotent

Создаёт правило port forwarding с внешнего порта на внутренний IP:порт.

ParametersJSON Schema
NameRequiredDescriptionDefault
protoYes
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
confirmNoОбязательно true, чтобы реально применить изменение на роутере.
internalIpYes
externalPortYes
internalPortYes
wanInterfaceYesRCI id WAN-интерфейса (см. get_interfaces).

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with the annotations: it describes a write operation, so readOnlyHint=false matches. The idempotent and non-destructive hints are not contradicted. However, the description itself does not surface the important dryRun/confirm gate behavior, though those details exist in the parameter schema.

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 compact sentence with no filler. It front-loads the action and the resource, and every word contributes to the core 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?

The description is usable for understanding the main operation, and the schema fills in several parameter details. However, it does not explain the confirm/dryRun flow or anything about the returned RCI payload behavior, leaving an agent to infer important operational 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 description adds useful meaning to the otherwise undocumented parameters by framing the rule as external port to internal IP:port. It partially compensates for the low schema description coverage, but does not clarify the role of proto or wanInterface beyond what the schema already states.

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: creating a port forwarding rule. It specifies the mapping direction from external port to internal IP:port, which is concrete and distinguishes it from list_port_forwards, remove_port_forward, and route-related sibling tools.

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 gives no guidance about when to use this tool, when not to use it, or which alternatives might be more appropriate. It also omits the prerequisite of obtaining a valid WAN interface and does not explain the confirm/dryRun workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_routeДобавить маршрутC
Idempotent

Добавляет статический маршрут.

ParametersJSON Schema
NameRequiredDescriptionDefault
maskYesМаска подсети, например 255.255.255.0
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
metricNoПриоритет маршрута, меньше — приоритетнее (НЕ подтверждено вживую, проверяй на тестовом адресе перед боевым использованием).
targetYesИмя интерфейса или IP шлюза, куда направить маршрут.
confirmNoОбязательно true, чтобы реально применить изменение на роутере.
networkYesАдрес сети, например 10.0.5.0

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the mutation profile is known. However, the description adds no behavioral context beyond the core action, such as the need to set confirm=true for real changes or that dryRun provides a preview; these details live only in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no filler. It is front-loaded and immediately communicates the tool's purpose, though it is quite terse given the tool's six parameters.

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?

The schema is rich enough to support invocation, and annotations cover the safety profile. However, the description does not help an agent choose this tool over closely related route-management siblings, and there is no output schema or return-format guidance, leaving some selection and post-invocation ambiguity.

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%, and the schema already documents each parameter, including the caveat about metric and the confirm/dryRun behavior. The description itself adds no parameter-level meaning, so the baseline 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 states a clear verb and resource: 'Добавляет статический маршрут' ('Adds a static route'). The word 'static' helps distinguish it from route-related siblings such as add_domain_route, though it does not explicitly name them.

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 gives no guidance on when to use this tool versus alternatives like add_domain_route, run_route_batch, or bind_route_to_vpn. There is no mention of prerequisites, confirmation requirements, or dry-run usage, so an agent must infer context entirely from the schema and annotations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bind_route_to_vpnПривязать маршрут к VPNA
Idempotent

Направляет трафик указанной сети через уже настроенный на роутере VPN-интерфейс (policy-based routing).

ParametersJSON Schema
NameRequiredDescriptionDefault
maskYesМаска подсети, например 255.255.255.0
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
metricNoПриоритет маршрута, меньше — приоритетнее (НЕ подтверждено вживую, проверяй на тестовом адресе перед боевым использованием).
targetYesИмя интерфейса или IP шлюза, куда направить маршрут.
confirmNoОбязательно true, чтобы реально применить изменение на роутере.
networkYesАдрес сети, например 10.0.5.0

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only and not destructive. The description adds useful context beyond annotations: it clarifies that the VPN interface must already be configured and that the operation is policy-based routing. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word earns its place, and the parenthetical adds technical precision without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple routing action, the description plus the fully documented schema and annotations provide enough for an agent to call the tool correctly. The main gap is not mentioning the dryRun/confirm workflow or the need to list available VPN interfaces, but those are partially covered by parameter descriptions and 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%, so the parameters are already well-documented. The description does not add additional parameter-level meaning beyond saying the traffic of the specified network is routed through a VPN interface, which is already reflected in the schema.

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 specific action: directing traffic of a given network through an already-configured VPN interface using policy-based routing. It distinguishes itself from siblings like add_route or unbind_route_from_vpn by specifying the VPN context and policy-based routing nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied but not explicit: an agent can infer it should be used when routing a network through an existing VPN. However, it does not explicitly say when not to use it, nor does it mention alternatives or prerequisites such as verifying the VPN interface exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_firmware_updateПроверить обновление прошивкиA
Read-onlyIdempotent

Проверяет через компонентный менеджер роутера, доступна ли новая версия KeeneticOS в настроенном канале обновлений. ТРЕБУЕТ прав основного аккаунта admin — под менее привилегированным аккаунтом роутер отвечает ошибкой "execute denied" (подтверждено вживую на роутере разработки под непривилегированным аккаунтом). Это ограничение самого RCI, а не баг инструмента: если получена такая ошибка, сообщи пользователю, что нужен admin-аккаунт в конфигурации MCP-сервера (ROUTER_LOGIN/ROUTER_PASSWORD), и не пытайся обойти это иначе.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already communicate that this is a read-only, idempotent operation, but the description adds substantial behavioral value: it documents the admin-account requirement, the exact 'execute denied' error, the fact that this is an RCI limitation rather than a tool bug, and the agent's required response. This is exactly the kind of context an agent cannot infer from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded first, and every subsequent sentence justifies its place: the admin requirement, the observed failure mode, the cause, and the do-not-or workaround instruction. It is detailed but not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameter-free, read-only tool, this is nearly complete: an agent knows what is checked, what credential privileges are needed, and what to do when the router rejects the call. The only minor gap is that the exact return value or update payload is not described, and there is no output schema to carry that information.

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 and the input schema has full coverage, so there is no parameter-specific meaning for the description to add. The description does provide helpful operational context about the configured update channel and admin credentials in the MCP server config, but since there are no parameters, it stays at the 0-parameter baseline of 4.

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 states a very specific action: check whether a new KeeneticOS version is available through the router's component manager in the configured update channel. This is clearly distinguishable from sibling read-only tools such as get_version, which reports the installed version rather than update availability.

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 normal use context is clear — check for a firmware update availability — and the failure-handling guidance is explicit: on 'execute denied', tell the user to configure an admin account and do not try to bypass the restriction. It does not explicitly mention alternative tools or when not to use it, which prevents a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_configЭкспорт конфигурации (бэкап)A
Read-onlyIdempotent

Возвращает полный running-config роутера текстом (CLI-синтаксис) — та же информация, что и кнопка "Сохранить" у running-config в веб-интерфейсе (Управление → Настройки системы → Системные файлы). ВАЖНО: результат содержит секреты в открытом/слабо обфусцированном виде — хэши паролей пользователей, WPA-PSK Wi-Fi, параметры WireGuard. Перед вызовом предупреди пользователя об этом. После получения результата не пересказывай и не цитируй секретные значения без необходимости; если пользователь просит сохранить бэкап — предложи записать его в файл вне git-репозитория (в нём секреты в открытом виде), а не просто оставить текст в переписке.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only convey readOnly/idempotent/non-destructive; the description goes well beyond them by disclosing the critical trait: the result contains plaintext or weakly obfuscated secrets—password hashes, WPA-PSK, and WireGuard parameters. It also instructs the agent on safe downstream handling (not quoting secrets, writing backups to a file outside git), which is exactly the context an AI agent needs beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but every sentence earns its place: primary purpose is front-loaded, the web-UI equivalence adds precision, the 'ВАЖНО' section flags the security risk, and the final guidance prescribes concrete safe handling. Nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly bears the burden of explaining the return value—full running-config as CLI text—and thoroughly covers sensitivity and storage handling. The only minor gaps are a lack of any note about the output potentially being very large or truncated, which is a small omission for a zero-parameter read-only tool.

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 and 100% schema description coverage, so the schema itself fully defines the parameter surface. Per the baseline for 0-parameter tools, the description does not need to compensate; it additionally implies that no configuration is needed, which matches the empty schema.

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 states a precise verb ('Возвращает'), a specific resource ('полный running-config роутера'), and the output format (текст в CLI-синтаксисе). The reference to the web-UI Save button clarifies exactly what the tool returns and distinguishes it from the read-only sibling tools like get_version and get_system_info, which return only fragments of device state.

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 clearly establishes the use context: this is the config-backup/export tool, equivalent to the Save button, and it gives explicit operational conditions—warn the user before invoking and store results outside a git repository when a backup is requested. It stops short of naming alternatives or explicit when-not-to-use scenarios relative to siblings, so it earns 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_interfacesСписок интерфейсовA

Все сетевые интерфейсы роутера (WAN, Wi-Fi, VPN, мосты) и их состояние.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of explaining behavior. It says the tool reports interface state, which is useful, but it does not explicitly state that the operation is read-only, non-destructive, or what the returned state looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that includes the resource type, the full scope of interface categories, and the kind of state returned. There is no filler, repetition, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only list tool, the description gives enough context to select it: it returns all router interface types and their state. It does not specify an exact output shape, but given no output schema is defined, that is a minor gap rather than a blocking one.

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 takes zero parameters and the schema is already 100% covered. The description does not need to document parameter behavior since there are none 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 identifies the tool's scope: all router network interfaces (WAN, Wi-Fi, VPN, bridges) and their state. This distinguishes it from narrower siblings like get_wan_status or list_vpn_interfaces, though it lacks an explicit verb such as 'returns' or 'retrieves'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'all' implies this tool is for a broad interface overview, while siblings like get_wan_status and list_vpn_interfaces cover narrower subsets. However, there is no explicit guidance about when to choose this tool over those alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_system_infoСистемная информацияB

Аптайм, загрузка, память и т.п.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It implies a read-only retrieval of telemetry by naming informational fields, but it does not explicitly disclose that no side effects occur, nor does it describe output format, rate limits, or authentication requirements.

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 concise sentence that places the key examples up front. The phrase 'и т.п.' is somewhat low-information, but overall there is no unnecessary repetition or verbose phrasing.

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 zero-parameter informational tool, the description is minimally sufficient: an agent can infer that calling it yields system-level telemetry. Still, because there is no output schema and the description relies on vague examples, the exact contents and structure of the returned system info remain incomplete.

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 accepts zero parameters and schema description coverage is 100%, so there is no parameter ambiguity to explain. The baseline of 4 applies because no parameter details are needed.

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 names the resource as system information and gives concrete content examples: uptime, load, memory. However, it lacks an explicit verb and the trailing 'etc.' leaves the exact scope vague, and it doesn't distinguish this from nearby get-like siblings such as get_version or get_wan_status.

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 given about when to use this tool versus alternatives like get_version or get_wan_status. The description only enumerates information categories and provides no exclusions, prerequisites, or decision heuristics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_versionВерсия прошивкиB

Версия KeeneticOS и модель роутера.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It communicates what information is returned, but does that not explicitly state that the operation is read-only or has no side effects, although the get_ prefix suggests this and the tool is a trivial no-parameter read.

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 one short, information-dense line with no filler. It would be slightly better if it were a complete sentence with a verb like 'returns', but it is appropriately brief.

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 no-parameter info-getter, this describes the payload adequately. Yet, with no output schema and no comparison to get_system_info, the agent is left to infer the exact return semantics and when to select this over alternative getter tools.

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?

There are no parameters, so the baseline score is naturally 4. The description adds context by specifying the exact output fields, which is all that is actionable 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 names the exact delivered resource: the KeeneticOS version and router model. It identifies the core purpose and is specific enough to be distinct from most siblings, but it does not differentiate from get_system_info, which may also surface firmware/model details.

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 given about when to use this tool instead of a sibling. get_system_info could plausibly overlap with this one, but the description does not mention it or any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wan_statusСтатус WANB

Состояние основного интернет-подключения.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the disclosure burden. It clearly represents a read-only state query with no side effects, which is helpful. However, it does not disclose what the status contains, how connectivity is represented, or whether the result is just an up/down flag or richer 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 short sentence that immediately conveys the tool's focus. There is no wasted wording or redundant restatement of the tool name.

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?

The description is sufficient for understanding that this is a no-input status read of the main internet connection. However, with no output schema and no behavioral detail, the agent does not learn what kind of state data to expect. This is a moderate gap for a tool whose entire purpose is returning status.

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, so the schema provides no parameter semantics to enhance. The description does not need to explain parameters and the baseline of 4 applies well 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 resource (main internet/WAN connection) and the purpose (report its state). It differentiates the tool from get_interfaces by emphasizing the primary internet connection rather than the generic interface list. It is slightly terse, but the intent and scope are explicit.

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 gives no explicit guidance about when to use this tool versus siblings such as get_interfaces or get_system_info. There are no alternatives, conditions, or exclusions mentioned, so the decision is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_devicesПодключённые устройстваA

Список устройств из таблицы DHCP/hotspot: MAC, IP, имя, интерфейс.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It does include the fact that the source is the DHCP/hotspot table and that it returns a device list with specific fields, which gives some transparency for a read-like operation. However, it does not state whether this is an active snapshot, sorted, or what telemetry/format the output is in – a moderate 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?

A single sentence that leads with the action (‘Список’), the resource (‘устройств’), the source table, and the relevant fields. No filler, no repeated annotation content, and the key scoping information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description covers the essentials: what is returned (devices), from where (DHCP/hotspot), and the field set (MAC, IP, name, interface). One could argue for more behavior details, but the agent has enough to call the tool correctly and interpret a simple list result.

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 takes no parameters, so the baseline for this dimension is 4. The description compensates by listing the output fields (MAC, IP, name, interface), which adds meaning to what the agent can expect from the result, given that the empty input schema offers no constraint.

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?

‘Список устройств из таблицы DHCP/hotspot’ clearly identifies the resource (devices) and the action (list). It specifies the source table and the returned fields (MAC, IP, name, interface), which makes the purpose unambiguous and distinct from most read-only siblings.

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 states what the tool lists, but does not describe when to use it over alternatives like list_wifi_clients or list_dhcp_reservations. There is no guidance on situation or conditions, no hint that a device list might be the broad view, leaving the agent to infer usage from the name and core directory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dhcp_reservationsDHCP-резервацииB

Статические привязки IP к MAC.

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?

There are no annotations, so the description must disclose behavioral traits, but it only defines a domain concept. It does not state that the tool enumerates reservations, whether it is a read-only operation, what ordering or filtering is applied, or what response shape to expect and rejection. The phrase adds semantic context but not behavioral transparency.

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 short fragment with no filler and communicates the core concept efficiently. It is still somewhat under-specified as a full instruction, but there is nothing redundant here.

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 zero-parameter tool, the description is minimally sufficient: combined with the name it tells the agent what resource is involved. However, it does not describe the expected list output, scope of reservations, or side effects, and there is no output schema to fill that gap.

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?

No parameters exist, so the description has no obligation to document param meaning. Baseline 4 is appropriate for a zero-parameter 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?

Description 'Статические привязки IP к MAC' clearly identifies the resource (DHCP reservations) and adds domain meaning (static IP-to-MAC bindings), which distinguishes it from general device listing. However, it lacks an explicit verb phrase, relying on the tool name 'list' to carry the action.

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 such as list_devices or list_wifi_clients. The description only defines what a reservation is; the agent must infer usage context from siblings and name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_port_forwardsСписок port forwardingC

Текущие правила проброса портов.

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 to rely on, the description carries the full behavioral burden and it only says 'current port forwarding rules'. It does not disclose that the tool reads without side effects, what shape the result takes, whether it reflects active/effective rules, or how it is affected by siblings such as add_port_forward.

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 very short and front-loaded, with no filler words or structural complexity. It is concise, though it gets some conciseness from omitting the explicit verb rather than from being a complete, clear sentence.

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 zero-parameter list tool, naming the resource is enough to make the tool callable. However, the absence of an output schema and annotations means the agent still lacks clarity about what the tool returns and what guarantees it offers beyond the label.

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 zero parameters, so there are no parameter semantics to document. The baseline of 4 applies because no parameter information is needed and nothing is missing on that front.

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 identifies the resource being acted on (current port forwarding rules) but uses a noun phrase rather than an explicit verb like 'list' or 'retrieve'. The agent can infer the action from the tool name and title, but the description itself does not state it, so the purpose is somewhat implicit.

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 or why it should be preferred over related tools. The sibling tools add_port_forward and remove_port_forward suggest a read/modify split, but that distinction must be inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_routesСписок маршрутовB

Таблица статических маршрутов роутера.

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?

There are no annotations, so the description must carry the full behavioral burden. It states that the tool exposes a static route table, implying a read operation, but it does not disclose output shape, ordering, pagination, or whether the result includes only active routes. For a no-parameter list tool this is minimally informative but not fully transparent.

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 short and front-loaded, using only one meaningful phrase. It avoids redundancy with the title while adding the key qualifiers 'static' and 'router', but it could still afford a second clause describing the output.

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 parameterless tool this is close to adequate, but the absence of annotations and an output schema leaves the return format unstated. A simple listing tool should at least indicate whether it returns all static routes and in what form; the current description only names the subject.

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, so the description need not clarify parameter semantics. A baseline of 4 is appropriate because there is nothing for the schema or description 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 identifies the result as the router's static route table, which clearly maps to the tool name list_routes and distinguishes it from route-mutating siblings like add_route and remove_route. It is concise and resource-specific, though it does not explicitly state that it returns or lists entries.

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 given on when to use this tool instead of sibling listing tools such as list_devices, get_interfaces, or list_vpn_interfaces. The context signals make the tool self-evident as a route reader, but the description provides no explicit usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_vpn_interfacesVPN-интерфейсыA

Отфильтрованный список интерфейсов роутера — только VPN-туннели (WireGuard подтверждён вживую; OpenVPN/IKEv2/L2TP/PPTP/VLESS — по типу, не проверено на реальном роутере). Используй для последующей привязки маршрутов (bind_route_to_vpn).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries transparency responsibility. It goes beyond the title by disclosing an important reliability caveat: WireGuard filtering is live-verified, while OpenVPN/IKEv2/L2TP/PPTP/VLESS filtering is only type-based and not verified on a real router. This is highly useful. A minor gap is the lack of explicit statement about what fields the list returns.

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?

Two concise sentences cover the core purpose, the exact filtering scope, a reliability warning, and the practical use case. There is no filler, and the highest-value information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool with no output schema, the description is largely complete: it explains what is returned, which tunnel types are trusted, and why an agent would call it. It could add a little more detail about the output values needed by bind_route_to_vpn, but that is a minor gap given the low complexity.

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 and the schema already reflects that fully. With 100% schema coverage and no parameters to document, the baseline 4 applies and no description compensation is needed.

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 identifies the tool as returning a filtered list of router interfaces limited to VPN tunnels, making its purpose concrete and distinct from the generic sibling get_interfaces. It also names the typical next step (bind_route_to_vpn), reinforcing the tool's role.

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 explicitly says to use this tool for binding routes to VPN tunnels and scopes it to only VPN interfaces. It does not explicitly contrast it with get_interfaces for non-VPN interfaces, but the exclusion is strongly implied by 'only VPN tunnels'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_wifi_clientsКлиенты Wi-FiB

Устройства, ассоциированные с точками доступа.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/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 does not state that the operation is read-only, does not describe whether the list is live or cached, and does not say what kind of information is returned for each Wi-Fi client.

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 very short and contains no filler or redundant words. It is easy to parse, though a verb such as 'lists' or 'returns' would have made it more actionable for an agent.

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 zero-parameter list operation, this is close to minimally viable: an agent can infer what kinds of devices are returned. It lacks a clear statement of return fields/format, whether it reflects current association state, and how it differs from list_devices, which creates real ambiguity.

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, so there is no parameter semantics for the description to clarify. The empty input schema already covers everything relevant, and no parameter explanation would add value at call time.

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 identifies the resource as devices associated with access points, which clearly points to Wi-Fi clients and helps distinguish it from list_devices or get_interfaces. It is slightly weaker than a 5 because it is a noun phrase rather than an explicit statement like 'Lists all devices currently associated with access points.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended usage is implied: it is for retrieving/listing devices connected to Wi-Fi access points. However, it does not explicitly say when to prefer this over list_devices, get_interfaces, get_wan_status, or other sibling tools, and gives no usage scenarios or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reboot_routerПерезагрузить роутерA
Destructive

Немедленная перезагрузка роутера. Требует ALLOW_DESTRUCTIVE=true в конфигурации сервера. RCI-форма запроса НЕ проверена вживую на реальном устройстве в рамках этого проекта — рекомендуется сначала dryRun и явное подтверждение пользователя перед первым использованием.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
confirmNoОбязательно true, чтобы реально применить изменение на роутере.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as destructive and non-read-only. The description adds important context beyond the annotations: the server-config prerequisite, that the RCI request format has not been validated against a live device in this project, and that dryRun plus user confirmation should precede real use.

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?

Three short sentences, each carrying distinct information: the action, the configuration prerequisite, and the safety caveat. Nothing is redundant with the title or the schema, and the most important behavioral risk is disclosed early.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive two-parameter tool with no output schema, the description covers the prerequisite, the safety workflow, and the uncertainty about the RCI payload. It does not detail the exact response for a real reboot, but that is a minor gap given the schema already explains the dryRun return value.

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 already documents both boolean parameters in full, including dryRun returning an RCI payload and confirm being required for a real change. Since schema coverage is 100%, the description adds little strictly parameter-level information beyond recommending an invocation order, so 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific statement: 'Немедленная перезагрузка роутера.' It identifies both the action (reboot) and the resource (router), and this operation is distinct from all sibling tools, which are mostly read-only queries or configuration setters.

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 provides clear usage conditions: it requires ALLOW_DESTRUCTIVE=true, recommends running dryRun first, and requires explicit user confirmation before the first real use. It does not explicitly say when not to use it, but the safety guidance effectively tells the agent how to gate invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_port_forwardУдалить проброс портаB
Idempotent

Удаляет ранее созданное правило port forwarding.

ParametersJSON Schema
NameRequiredDescriptionDefault
protoYes
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
confirmNoОбязательно true, чтобы реально применить изменение на роутере.
externalPortYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnly=false, idempotent=true, and destructive=false, and the description aligns by saying an existing forwarding rule is removed. It adds little beyond the minimal deletion semantic and does not mention side effects such as the port becoming externally unreachable or how confirm/dryRun affect the operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler: the verb and object come first. It is efficiently sized, though its brevity leaves room for more operational detail.

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 flat four-parameter delete operation, the description is minimally sufficient when combined with the schema, but the agent is not told how to identify the exact rule safely or which sibling to consult for listing rules. It is adequate, not comprehensive.

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 50%, with dryRun and confirm already documented in the schema. The description does not explain that proto/externalPort together identify the rule to remove, so it adds only marginal meaning beyond the field names and enum/range 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 uses a clear verb ('Удаляет') and resource ('ранее созданное правило port forwarding'), so the core action is unambiguous. It is strongly distinguishable from add_port_forward and list_port_forwards, though it does not explicitly name sibling tools for contrast.

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 gives no guidance about when to use this tool versus list_port_forwards, add_port_forward, or remove_route. It also does not mention checking for the rule first or using dryRun/confirm as a safe workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_routeУдалить маршрутB
Idempotent

Удаляет статический маршрут.

ParametersJSON Schema
NameRequiredDescriptionDefault
maskYes
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
confirmNoОбязательно true, чтобы реально применить изменение на роутере.
networkYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=false, idempotentHint=true, and destructiveHint=false, and the description is consistent with these (no contradiction). It does not, however, add any behavioral context beyond them — e.g., that changes only take effect when confirm=true or that the RCI payload can be previewed via dryRun — although those semantics are at least present in the schema parameter descriptions.

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 short Russian sentence with no padding and the action verb front-loaded. It is appropriately small for a verb+resource definition, though it uses none of its space to convey routing guidance or behavioral hints that would raise its value.

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 mutating tool with 4 parameters and no output schema, the description "deletes a static route" is quite thin. It does not indicate what the agent should expect after invocation (result payload, success/failure semantics), that confirm=true is mandatory for applying and dryRun is available for preview sums (these live only in the parameter-level schema), or what happens to routes currently bound to VPNs.

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 coverage is 50%: dryRun and confirm are well described in the schema itself, so the description only needs to help with network and mask. It implicitly indicates that the two parameters identify a static route, but gives no format guidance (CIDR vs. netmask, IPv4/IPv6). The description therefore adds only marginal value over the schema and does not fully compensate for the two undocumented 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 states a specific verb ('Удаляет' — deletes) and a specific resource ('статический маршрут' — static route), which is enough to distinguish it from siblings like add_route, list_routes, and bind_route_from_vpn. It adds the qualifier 'статический', which goes slightly beyond the title. However, it never explicitly contrasts with any sibling, so it doesn't fully maximize this dimension.

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?

There is no guidance on when to use this tool versus alternatives such as run_route_batch, remove_port_forward, or unbind_route_from_vpn. The description only states what the tool does, not when it should be chosen, what prerequisites exist (e.g., the route must already exist), or what cases it is not suited for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_route_batchПакетно применить маршруты из .bat-файлаA

Читает .bat-файл, разбирает его ограниченной грамматикой (ROUTE ADD/DELETE, VPN BIND/UNBIND) и применяет построчно. Файл не исполняется системным интерпретатором — только заранее известные команды. Любая нераспознанная строка отклоняет весь батч (fail-closed) ещё до применения. dryRun возвращает все RCI payload'ы без отправки на роутер.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
confirmNoОбязательно true, чтобы реально применить изменение на роутере.
filePathYesПуть к .bat-файлу с маршрутами в поддерживаемой грамматике (см. examples/route-batch.example.bat).

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses several important behaviors beyond the annotations: the file is not executed by a system interpreter, only a whitelisted grammar is parsed, any unrecognized line fails the whole batch before application, and dryRun returns RCI payloads without sending them. This is especially valuable because the annotations only say the operation is not read-only; the description clarifies the actual safety and failure semantics.

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 compact and front-loaded: it states the primary action first, then the security/failure model, then the dryRun behavior. Each sentence provides distinct useful information without repetition or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a mutating batch operation with no output schema, and the description covers key context: supported grammar, fail-closed behavior, and dry-run semantics. The only noticeable gap is that the normal (non-dryRun) return/result shape is not described at all, so an agent is left to infer what happens after successful application beyond the act itself.

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 baseline is 3 and the description is not required to compensate. The description adds a small nuance by explaining that dryRun returns 'all RCI payloads', but the parameter meanings for filePath and confirm are sufficiently covered by the schema and not expanded further in the description.

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: 'Читает .bat-файл, разбирает его ограниченной грамматикой... и применяет построчно'. It names the supported grammar (ROUTE ADD/DELETE, VPN BIND/UNBIND), which differentiates it from single-route sibling tools. The batch-oriented scope is explicit and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it clear that this is a batch file processor, so the typical use case is implied. However, it does not explicitly state when an agent should choose this over the single-route siblings like add_route or remove_route, nor does it provide any when-not-to-use guidance. Usage is therefore inferred rather than explicitly routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_wifi_enabledВключить/выключить Wi-Fi сетьA
Idempotent

Поднимает или гасит указанную точку доступа (например гостевую сеть).

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
confirmNoОбязательно true, чтобы реально применить изменение на роутере.
enabledYes
interfaceIdYesRCI id интерфейса Wi-Fi (см. get_interfaces).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide the intent profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false) and the description adds minimal extra behavior: it clarifies that the target is an access point and gives a guest network example. It does not mention side effects like disconnecting clients or how dryRun/confirm work, but those are also present in the parameter descriptions.

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 tool description is a single concise sentence that covers the intent without unnecessary repetition or padding. The inline example is helpful and does not cause unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description plus the parameter schema and annotations provide enough detail for a simple toggle operation: the main parameter semantics are covered, the mutation profile is clear, and there is no output schema to worry about. Only the usage guidance, which was scored separately, is missing.

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 adds semantic meaning beyond the bare schema by mapping the boolean `enabled` parameter to action of 'up' or 'down', and by clarifying that the target is a specific access point (interfaceId). Since the schema leaves `enabled` undocumented, this fills an important gap rather than repeating what is already present.

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 uses a clear action ('Поднимает или гасит') and a specific resource ('указанную точку доступа') with an illustrative example (guest network). This directly conveys that the tool toggles a Wi‑Fi access point on or off, and it naturally distinguishes itself from siblings like set_wifi_password or route/port 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?

There is no guidance about when to use this tool versus other settings tools, nor any mention of prerequisites or exclusions. The only hint about the interfaceId comes from the schema, not the description, so an agent must discover usage context from elsewhere.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_wifi_passwordСменить пароль Wi-FiB
Idempotent

Устанавливает новый WPA-PSK пароль на указанной точке доступа.

ParametersJSON Schema
NameRequiredDescriptionDefault
pskYesНовый пароль WPA-PSK, 8–63 символа.
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
confirmNoОбязательно true, чтобы реально применить изменение на роутере.
interfaceIdYesRCI id интерфейса Wi-Fi, например "WifiMaster0/AccessPoint0" (см. get_interfaces).

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate this is a write operation, so the basic mutating behavior is already known. However, the description discloses nothing beyond annotations: it fails to note the possibility of preview via dryRun, the mandatory confirm requirement, or the side effect of existing Wi-Fi clients being disconnected when a password is changed. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that directly explains the core function with no filler. It is front-loaded with the main verb and object and earns its place in the definition.

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?

Together with the fully documented input schema, the tool is invocable correctly if the agent reads xem. However, the description alone does not fully capture the important confirm/dryRun behavior. There is no output schema and no explicit statement of what the tool returns, which leaves some ambiguity about the operation's result. It is adequate but not rich.

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 covers all four parameters with clear descriptions, including psk length, interfaceId format, dryRun behavior, and confirm semantics. Schema coverage is 100%, so the description does not need to add much here. It adds no extra meaning beyond what the schema provides, making a baseline score of 3 appropriate.

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 a specific action: it sets a new WPA-PSK password on a specific access point. This naturally differentiates it from sibling tools like set_wifi_enabled, which toggles Wi-Fi, and other router configuration tools.

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 usage guidance or exclusions. It does not mention when to use this tool instead of alternatives, does not state that confirm must be true to actually apply the change, and does not alert the agent to the dryRun preview option. These important invocation decisions are left fully undeclaremelded.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unbind_route_from_vpnОтвязать маршрут от VPNB
Idempotent

Убирает привязку сети к VPN-интерфейсу.

ParametersJSON Schema
NameRequiredDescriptionDefault
maskYes
dryRunNoЕсли true — вернуть RCI payload без отправки на роутер (предпросмотр).
confirmNoОбязательно true, чтобы реально применить изменение на роутере.
networkYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile with readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the description does not need to restate basic safety. It adds the core behavioral effect ('removes binding') but does not mention reversibility side effects, or any need to satisfy confirmation conditions beyond what the schema provides.

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 immediately states the action and target. It has no fluff or redundancy, and all words carry 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?

For a simple mutation tool, the description conveys the main effect, and the schema provides additional details about dryRun and confirm. However, it does not clarify that the operation depends on confirm=true, nor does it mention the relationship to bind_route_to_vpn, so the agent must infer some workflow context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has descriptions only for dryRun and confirm, leaving network and mask effectively undocumented. The description mentions 'network' as the target of the unbinding, but it does not explain the network/mask pairing or how these identify the route. With only 50% schema coverage, the description does not adequately compensate.

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 ('removes the binding') and the resource ('network to VPN interface'), so an agent can understand the core operation. It is distinguishable from sibling tools like remove_route and bind_route_to_vpn by its wording, although it does not explicitly name the counterpart.

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 bind_route_to_vpn, add_route, or remove_route. It relies on the tool name and the agent's inference, rather than explicit when-to-use or when-not-to-use instructions.

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.

  1. 3 tool updatesv1.2.0
    • Addedadd_domain_route
    • Changedadd_route1 field changed
      • addedInput schema / properties / metric
        Added value: +{
        +  "description": "Приоритет маршрута, меньше — приоритетнее (НЕ подтверждено вживую, проверяй на тестовом адресе перед боевым использованием).",
        +  "type": "number"
        +}
    • Changedbind_route_to_vpn1 field changed
      • addedInput schema / properties / metric
        Added value: +{
        +  "description": "Приоритет маршрута, меньше — приоритетнее (НЕ подтверждено вживую, проверяй на тестовом адресе перед боевым использованием).",
        +  "type": "number"
        +}
  2. 1 tool updatev1.1.0
    • Addedcheck_firmware_update
  3. 21 tool updatesv0.1.0
    • First observedadd_port_forward
    • First observedadd_route
    • First observedbind_route_to_vpn
    • First observedexport_config
    • First observedget_interfaces
    • First observedget_system_info
    • First observedget_version
    • First observedget_wan_status
    • First observedlist_devices
    • First observedlist_dhcp_reservations
    • First observedlist_port_forwards
    • First observedlist_routes
    • First observedlist_vpn_interfaces
    • First observedlist_wifi_clients
    • First observedreboot_router
    • First observedremove_port_forward
    • First observedremove_route
    • First observedrun_route_batch
    • First observedset_wifi_enabled
    • First observedset_wifi_password
    • First observedunbind_route_from_vpn

TDQS

B3.4/5.0

Scored across 23 tools

Disambiguation4/5

Большинство инструментов чётко различаются по ресурсу и действию (get_version, list_routes, set_wifi_password и т.д.). Небольшое пересечение есть между list_devices и list_wifi_clients, а также get_interfaces и list_vpn_interfaces, но описания явно указывают на разные контексты использования, так что путаница маловероятна.

Naming Consistency5/5

Все имена следуют единому шаблону 'глагол_существительное' в нижнем регистре с подчёркиваниями: get_version, list_interfaces, set_wifi_enabled, add_port_forward, remove_route, bind_route_to_vpn. Нет разнобоя в стилях или нечитаемых сокращений.

Tool Count3/5

23 инструмента попадают в диапазон 16-25, который по калибровке считается тяжёлым. Однако для полноценного управления роутером (сети, VPN, WiFi, проброс портов, маршрутизация) количество оправдано, но всё же превышает идеальный минимум.

Completeness3/5

Покрыты основные операции: список/создание/удаление маршрутов и проброса портов, управление WiFi, VPN-привязка, просмотр состояния. Но отсутствуют remove_domain_route (есть только add_domain_route), управление DHCP-резервированиями (только list), а также нет инструментов для обновления прошивки или изменения системных настроек, что создаёт заметные пробелы.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Enables AI agents to manage OpenWRT routers remotely via SSH, supporting system monitoring, network management, OpenThread Border Router configuration, and package management through natural language commands.
    19
    16
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to monitor and securely manage AsusWRT and AsusWRT-Merlin routers via SSH with allowlisted commands, supporting read-only monitoring and controlled mutations.
    47
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to manage TP-Link routers by listing clients, checking status, controlling Wi-Fi, and rebooting via natural language.
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP agents to control Keenetic routers via plain language, providing network monitoring, device management, and safe configuration changes with backup and read-only options.
    59
    19
    MIT