Skip to main content
Glama

MikroTik MCP Server: manage RouterOS routers with Claude and AI assistants

CI License: MIT MCP RouterOS

MikroTik MCP is an open-source Model Context Protocol (MCP) server that connects Claude, and any other MCP-compatible AI assistant, to MikroTik RouterOS routers and switches. In plain language you can check router status, list interfaces, routes, firewall rules, DHCP leases and Wi-Fi clients, read logs, ping and traceroute, block IP addresses, back up the configuration, and change any RouterOS setting.

Quick facts

  • What it is: an MCP server (stdio) written in TypeScript for Node.js 20+.

  • Works with: Claude Desktop, Claude Code, Cursor, VS Code, Windsurf and any MCP client.

  • Supports: RouterOS v7 through the REST API, and RouterOS v6 and v7 through the binary API (ports 8728/8729).

  • Hardware: any MikroTik device running RouterOS, including hAP, hEX, RB, CCR, CRS, cAP, wAP and Cloud Hosted Router (CHR).

  • Safety: read-only mode, per-device permissions, and confirmation hints on destructive tools.

  • No WinBox needed: it uses MikroTik's documented APIs, which expose the same configuration as WinBox and the terminal.

  • License: MIT.

It talks to the router over RouterOS's own documented interfaces:

Transport

RouterOS

Port

Service to enable

rest (default)

v7.1+

443 (HTTPS) / 80

www-ssl (or www)

api

v6 and v7

8728 / 8729 (TLS)

api / api-ssl

Both expose the full configuration tree that WinBox and the terminal use, so every menu (/ip/..., /interface/..., /routing/..., /queue/..., ...) is reachable.

Tools

Generic (any menu path)

Tool

What it does

mikrotik_print

Read any menu, with filters and property selection

mikrotik_add

Add an item to any menu

mikrotik_set

Change an item (by .id or filter) or a singleton setting such as /system/identity

mikrotik_remove

Remove an item

mikrotik_set_enabled

Enable or disable an item

mikrotik_run_command

Run any command (/system/script/run, /interface/monitor-traffic once=yes, ...)

Curated

Tool

What it does

mikrotik_list_devices

Configured routers

mikrotik_system_overview

Identity, version, board, CPU/RAM/disk, uptime, clock, health, packages

mikrotik_interfaces

Interfaces with state and counters

mikrotik_ip_addresses

IPv4/IPv6 addresses

mikrotik_routes

Routing table

mikrotik_firewall_rules

filter / nat / mangle / raw rules with counters

mikrotik_dhcp_leases

DHCP leases

mikrotik_wireless_clients

Wi-Fi registration table (wifi, wifiwave2, wireless, CAPsMAN)

mikrotik_arp_table

ARP entries and discovered neighbors

mikrotik_logs

Recent log entries, filterable by topic or text

mikrotik_ping, mikrotik_traceroute

Diagnostics from the router

mikrotik_firewall_add_rule

Add a firewall rule, optionally above an existing one

mikrotik_address_list

Add/remove addresses in firewall address lists (block/allow hosts)

mikrotik_backup

Save a .backup and .rsc export on the router

mikrotik_reboot

Reboot (requires confirm: true)

Write tools carry MCP readOnlyHint: false / destructiveHint annotations so clients can ask before running them.

Related MCP server: MikroTik MCP

Install

Requires Node.js 20+.

git clone https://github.com/RexGuard/MikroTik-MCP.git
cd mikrotik-mcp
npm install        # also builds into dist/

Prepare the router

Create a dedicated user rather than using admin. For a read-only assistant use the built-in read group; for changes use full (or a custom group).

/user group add name=mcp policy=read,write,api,rest-api,test,ping,reboot,policy,sensitive
/user add name=mcp group=mcp password=CHANGE-ME

# RouterOS v7 REST API (HTTPS needs a certificate on www-ssl)
/certificate add name=self common-name=router
/certificate sign self
/ip service set www-ssl certificate=self disabled=no

# or the binary API (v6/v7)
/ip service set api disabled=no address=192.168.88.0/24

Restrict the service address= to the network the MCP server runs on.

Configure

One router (environment variables)

Variable

Default

Meaning

MIKROTIK_HOST

—

Router IP or hostname

MIKROTIK_USERNAME

admin

User name

MIKROTIK_PASSWORD

empty

Password

MIKROTIK_TRANSPORT

rest

rest or api

MIKROTIK_PORT

443 / 80 / 8728 / 8729

Override the port

MIKROTIK_TLS

true for rest, false for api

Use HTTPS / API-SSL

MIKROTIK_INSECURE

false

Accept self-signed certificates

MIKROTIK_READ_ONLY

false

Block every write tool

MIKROTIK_TIMEOUT_MS

30000

Request timeout

Several routers

Point MIKROTIK_CONFIG at a JSON file (see examples/devices.example.json) or put the same array in MIKROTIK_DEVICES. Every tool then takes an optional device argument; the first device is the default. Each device can set "readOnly": true.

Use with Claude

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "mikrotik": {
      "command": "node",
      "args": ["/path/to/mikrotik-mcp/dist/src/index.js"],
      "env": {
        "MIKROTIK_HOST": "192.168.88.1",
        "MIKROTIK_USERNAME": "mcp",
        "MIKROTIK_PASSWORD": "CHANGE-ME",
        "MIKROTIK_INSECURE": "true"
      }
    }
  }
}

Claude Code

claude mcp add mikrotik \
  -e MIKROTIK_HOST=192.168.88.1 -e MIKROTIK_USERNAME=mcp -e MIKROTIK_PASSWORD=CHANGE-ME -e MIKROTIK_INSECURE=true \
  -- node /path/to/mikrotik-mcp/dist/src/index.js

Then ask things like:

  • "What's the CPU load and uptime on my router?"

  • "Which devices are on Wi-Fi right now?"

  • "Block 203.0.113.5 for one day."

  • "Show me the NAT rules and explain what each one does."

  • "Make a backup before we change anything."

Safety

  • Start with MIKROTIK_READ_ONLY=true until you trust the setup.

  • Use a dedicated RouterOS user with only the policies you need.

  • Firewall, bridge and address changes can lock you out. Consider Safe Mode or run mikrotik_backup first.

  • The plain binary API (8728) sends the password unencrypted; prefer REST over HTTPS or API-SSL (8729) outside a trusted LAN.

Development

npm test     # builds and runs the test suite against an in-memory mock RouterOS (REST and binary API)

Why not reverse engineer WinBox?

WinBox, the mobile app and the web UI all drive the same RouterOS configuration tree that the REST API and the binary API expose, and those APIs are documented and stable across versions. Using them gives the same feature coverage without depending on undocumented, encrypted WinBox protocol details that can change between releases.

FAQ

How do I connect Claude to a MikroTik router?

Install this server, enable the REST API (www-ssl) or the API service on the router, and add the server to Claude Desktop or Claude Code with the router's address and a RouterOS user (see Use with Claude). Claude can then query and configure the router in plain language.

Does it work with RouterOS 6?

Yes. Set MIKROTIK_TRANSPORT=api to use the binary API, which works on RouterOS v6 and v7. The REST API transport needs RouterOS v7.1 or newer.

Does it work with ChatGPT, Cursor or other AI tools?

It works with any client that supports the Model Context Protocol, including Claude Desktop, Claude Code, Cursor, VS Code (GitHub Copilot agent mode) and Windsurf. Use the same command, args and env settings shown for Claude Desktop.

Can it run on the MikroTik router itself?

Not from the RouterOS console. It runs on your computer (or any machine that can reach the router) and connects to the router over the network. Running it inside a RouterOS 7 container is possible on ARM, ARM64 and x86 models but is not packaged yet.

Is it safe to let an AI change my router configuration?

Use a dedicated RouterOS user with limited policies, start with MIKROTIK_READ_ONLY=true, and make a backup with mikrotik_backup before changes. Write and destructive tools are marked so MCP clients can ask for confirmation, and mikrotik_reboot requires an explicit confirm: true.

Can it manage more than one router?

Yes. List several devices in MIKROTIK_CONFIG or MIKROTIK_DEVICES and pass device to any tool. Each device can be read-only or read-write.

What can I ask it?

Examples: "Why is my internet slow?", "Which devices are using the most bandwidth?", "Show the firewall rules and find anything risky", "Block this IP for a day", "Add a port forward for 8080 to 192.168.88.10", "Which Wi-Fi clients have a weak signal?", "Back up the config".

License

MIT. MikroTik and RouterOS are trademarks of MikroTik SIA. This project is not affiliated with or endorsed by MikroTik.

Available Tools

22 tools
mikrotik_addAdd a RouterOS itemB

Add an item to any RouterOS menu (/<path> add ...). Returns the new item's .id.

NameRequiredDescriptionDefault
pathYesRouterOS menu path, e.g. "/ip/address", "/interface/bridge/port" or "ip firewall filter".
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
propertiesYesItem properties as in the CLI, e.g. {"address": "10.0.0.1/24", "interface": "ether2"}.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value by disclosing the return value (the new item's .id), which matters because no output schema exists. It says nothing about duplicate creation on repeat calls, whether the item is enabled by default, or how invalid paths/properties fail.

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 sentences, front-loaded with the action and the CLI equivalent, with zero filler. Nothing could be removed without losing information.

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

Completeness3/5

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

For a generic write tool against a live router with no output schema, the definition is minimally adequate: the schema covers inputs fully and the return value is stated. It is missing guidance on failure modes, on the generic-vs-specialized tool choice, and on the live-impact of the write, which an agent would want before invoking.

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 explains `path` formats, `device` defaulting, and the free-form `properties` object with an example. The description adds no parameter meaning beyond this, so the baseline 3 applies. The nested `properties` pass-through, the most error-prone parameter, is not elaborated further.

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 gives a specific verb+resource ('Add an item to any RouterOS menu') and even shows the equivalent CLI form `/<path> add ...`, which makes the scope concrete. It is distinguishable from mikrotik_set/mikrotik_remove by the verb, but never names those siblings explicitly, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no statement of when to use this generic add versus overlapping siblings such as mikrotik_firewall_add_rule (purpose-built) or mikrotik_run_command (which can also issue `add` commands). The only implicit guidance is 'any menu', which leaves the agent guessing at the boundary cases.

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

mikrotik_address_listManage firewall address listsC

Add or remove an address in a firewall address list (commonly used to block or allow hosts).

NameRequiredDescriptionDefault
ipv6No
listYes
actionYes
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
addressYesIP, range, subnet or DNS name
commentNo
timeoutNoAuto-expire, e.g. "1h" or "1d"

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing behavioral: it does not say whether adding an existing entry duplicates or errors (notably with idempotentHint=false), how removal behaves when the entry is absent, or that timeout creates auto-expiring entries.

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?

A single front-loaded sentence with zero filler. It is efficient, though its brevity comes at the cost of the missing detail flagged in other dimensions.

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 7-parameter mutating tool with no output schema and under half of parameters documented, one sentence is not enough. An agent gets no information on list creation, duplicate handling, removal semantics, or what the response contains.

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?

Schema description coverage is only 43% across 7 parameters. The description mentions no parameters at all, leaving 'list', 'action' (the enum), 'comment', and 'ipv6' undocumented in both places, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

States a specific verb pair (add/remove) and resource (firewall address list), plus the typical intent (block/allow hosts). It is clearly narrower than the generic siblings mikrotik_add/mikrotik_remove, but the description never names those siblings to make the distinction 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 parenthetical 'commonly used to block or allow hosts' explains intent, not tool selection. There is no guidance on when to use this versus mikrotik_add, mikrotik_remove, or mikrotik_firewall_add_rule, and no stated prerequisites (e.g. whether the list must already exist).

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

mikrotik_arp_tableARP table and neighborsA
Read-onlyIdempotent

List ARP entries and discovered neighbors (MNDP/CDP/LLDP) to see which hosts are on the network.

NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 200).
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
interfaceNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered elsewhere. The description adds real value by disclosing that results merge ARP entries with MNDP/CDP/LLDP neighbor discovery, which explains why the output may contain hosts outside the ARP table. It does not mention truncation behavior or that rows are capped, so it stops short of a 4.

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 front-loaded sentence with zero filler; the resource comes first and the rationale trails it. Nothing is redundant with the title or schema.

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 read-only listing tool with no output schema and no required parameters, the description is adequate but leaves the undocumented 'interface' filter and the shape of returned rows (address, MAC, interface, neighbor protocol) unexplained. An agent can call it correctly but cannot predict the response fields.

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 67%: limit and device are well documented in the schema, but the 'interface' parameter has no description anywhere and the description never compensates for it. The description adds no parameter meaning beyond the schema, so the 3 baseline for high-ish coverage 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?

States a specific verb ('List') and precise resource ('ARP entries and discovered neighbors'), plus names the discovery protocols (MNDP/CDP/LLDP). This lets an agent distinguish it from mikrotik_dhcp_leases or mikrotik_ip_addresses, though it doesn't explicitly name those siblings as the alternatives.

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 trailing clause 'to see which hosts are on the network' implies the use case, but there is no explicit when-to-use-vs-alternatives guidance despite several overlapping siblings (dhcp_leases, wireless_clients, ip_addresses) that also answer 'which hosts exist'.

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

mikrotik_backupCreate a backupA

Save a binary backup (.backup) and/or a text export (.rsc) of the configuration to the router's file system.

NameRequiredDescriptionDefault
nameNoBase file name (default: mcp-backup-<timestamp>)
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
passwordNoEncrypt the binary backup with this password
exportScriptNoAlso write a text export (<name>.rsc)

TDQS

A3.5/5.0
Behavior3/5

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

The description adds real value beyond annotations by disclosing the side effect's location: files are written to the router's own file system (not downloaded to the caller). However, with idempotentHint=false it never warns that an existing file of the same name may be overwritten, nor does it mention possible size/time cost of a full config backup, which are the traits an agent most needs.

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 front-loaded sentence with no filler; the action, both artifact types, and the destination are all in the first clause.

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?

With no output schema, the description should say what the agent gets back (created file names/paths, or confirmation) and whether a backup can overwrite an existing file; neither is covered. For a write tool that creates persistent files, this leaves a meaningful gap, though the schema carries the parameter detail well.

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 100%, so all four parameters (name, device, password, exportScript) are already documented in the schema, making 3 the baseline. The description's only added meaning is the pairing of 'binary backup' with password encryption and 'text export' with exportScript, which is useful but already inferable from the schema.

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?

States a specific verb (Save) and resource (binary .backup and/or text .rsc configuration export) plus the destination (the router's file system). No sibling tool does backups, so no differentiation is needed, but the description never says how this relates to the read-oriented siblings (e.g., that it writes rather than reads config).

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?

Usage is only implied: the 'and/or' phrasing hints that either artifact can be produced, and the schema's exportScript default covers the choice, but there is no explicit when-to-use context (e.g., before upgrades), no prerequisite that a device must be configured, and no guidance on when a password-protected binary backup is preferable.

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

mikrotik_dhcp_leasesList DHCP leasesA
Read-onlyIdempotent

List DHCP server leases (IP, MAC, hostname, status), optionally for one DHCP server.

NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 200).
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
serverNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered structurally. The description usefully enumerates the returned fields but says nothing about pagination limits, whether dynamic/static leases are both included, or behavior when a device/server is unreachable. With annotations carrying the behavioral load, a 3 is appropriate.

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 front-loaded sentence that gives the resource, the returned fields, and the optional scoping filter with zero 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 simple read-only list tool with no output schema, the description appropriately names the returned fields, which the structured data does not provide. Minor gaps remain around pagination defaults and error behavior, but nothing essential to calling it correctly is missing.

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 67%; device and limit are well documented in the schema. The undocumented `server` parameter is partially compensated by "optionally for one DHCP server," but neither source explains the expected identifier format or what happens if the server name is unknown.

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?

States a specific verb and resource (list DHCP leases) and names the returned fields (IP, MAC, hostname, status), which distinguishes it from mikrotik_arp_table and mikrotik_ip_addresses by implication. It stops short of explicitly naming a sibling alternative, so it isn't a full 5.

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 phrase "optionally for one DHCP server" hints at when to pass the server filter, but there is no explicit guidance on when to use this tool versus mikrotik_arp_table, mikrotik_ip_addresses, or generic mikrotik_print. Usage is implied rather than stated.

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

mikrotik_firewall_add_ruleAdd a firewall ruleB

Add a firewall rule. properties takes any rule property (src-address, dst-port, protocol, in-interface, connection-state, to-addresses, ...). Use placeBefore with a rule .id to insert it above an existing rule; otherwise it is appended to the end of the table.

NameRequiredDescriptionDefault
ipv6No
chainYes
tableNofilter
actionYese.g. "accept", "drop", "reject", "masquerade", "dst-nat", "add-src-to-address-list"
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
commentNo
propertiesNo
placeBeforeNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare this as a non-readonly, non-idempotent, open-world write. The description adds a useful behavioral fact the annotations don't: default append position and the ordering effect of placeBefore. It omits other traits such as the default device selection, and what happens on invalid properties (RouterOS may reject or silently ignore).

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?

Two tight sentences, front-loaded with the purpose, each carrying distinct information about properties and placement. Slight name-restating in the opening clause, but nothing wasteful.

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 an 8-parameter mutation tool with no output schema and a nested free-form object, the description covers the two most subtle parameters but leaves half the surface (chain vs table vs ipv6 interplay, device default, action semantics) to the schema, which itself is thinly described.

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 only 25%, so the description needs to compensate. It does add genuine meaning for `properties` (accepts any RouterOS rule property, with examples) and `placeBefore` (takes a rule .id), but leaves chain, action, table, device, ipv6, and comment undocumented in prose.

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?

States a specific verb and resource ('Add a firewall rule'), which distinguishes it from the sibling mikrotik_firewall_rules (listing) and from mikrotik_set (modification). It doesn't explicitly name the siblings it differs from, but the operation is 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 gives clear guidance for the placement decision — use placeBefore to insert above an existing rule, otherwise it is appended — which is real when-to-use advice. It offers no guidance on how this relates to generic siblings like mikrotik_add or mikrotik_set, or when to prefer this over editing an existing chain.

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

mikrotik_firewall_rulesList firewall rulesB
Read-onlyIdempotent

List firewall rules in order (filter, nat, mangle or raw), including packet/byte counters.

NameRequiredDescriptionDefault
ipv6No
chainNoe.g. "input", "forward", "srcnat", "dstnat"
limitNoMaximum rows to return (default 200).
tableNofilter
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered structurally. The description adds that rules come back in evaluation order and include packet/byte counters, which is genuine value. It says nothing about device scoping, ordering guarantees across tables, or truncation behavior.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the table list and the counters note are the two facts an agent most needs.

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?

With no output schema, the description's mention of counters partially covers return content, and annotations cover safety. But for a five-parameter tool spanning multiple devices, tables, chains and an ipv6 switch, the description leaves truncation, default-device scoping and ipv6 behavior unexplained.

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?

At 60% schema coverage the baseline is 3, and the description roughly holds there: it echoes the table enum values and the notion of order, but a rule's ordering relative to chain/ipv6 selection is unaddressed. The undocumented ipv6 parameter and the semantics of chain filtering are not compensated for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

Specific verb+resource ("List firewall rules") with the enumerated tables and a note that counters are included, which tells an agent exactly what it gets back. It is implicitly the read counterpart to mikrotik_firewall_add_rule, but it never names or contrasts that sibling.

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 statement of when to use this versus mikrotik_print, mikrotik_firewall_add_rule, or other table-listing siblings, and no prerequisites. The read-only intent is only inferable from the verb "List".

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

mikrotik_interfacesList interfacesB
Read-onlyIdempotent

List interfaces with type, running/disabled state, MAC, MTU and traffic counters.

NameRequiredDescriptionDefault
typeNoFilter by type, e.g. "ether", "bridge", "vlan", "wlan", "wifi", "wg", "pppoe-out".
limitNoMaximum rows to return (default 200).
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
runningNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so safety is covered. The description adds value by disclosing what data comes back (state, MAC, MTU, traffic counters), which matters since there is no output schema, but says nothing about pagination, truncation, or the cost of collecting counters.

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?

One sentence, front-loaded with the verb and resource, zero filler. It is efficient but thin enough that the space saved is not spent on routing or filter clarification.

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?

Four optional params and no output schema, so the description should carry return-value and filter meaning. It covers return fields adequately but leaves usage routing, the 'running' filter, and the default-device behavior to the schema or nothing at all.

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 75%, so baseline is 3. The description does not clarify the parameters; worse, 'type' and 'running' read as returned fields rather than as filters, leaving the 'running' filter (the one undocumented schema param) undefined anywhere.

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?

Specific verb ('List') plus resource ('interfaces'), and it enumerates the fields returned (type, running/disabled, MAC, MTU, counters). That distinguishes it from siblings like mikrotik_ip_addresses or mikrotik_routes by resource, though no sibling is named explicitly.

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 statement of when to use this versus alternatives such as mikrotik_print or mikrotik_list_devices. The only routing hint in the whole definition is inside the schema's 'device' parameter, not the description.

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

mikrotik_ip_addressesList IP addressesB
Read-onlyIdempotent

List IPv4 (or IPv6) addresses assigned to interfaces.

NameRequiredDescriptionDefault
ipv6No
limitNoMaximum rows to return (default 200).
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
interfaceNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered structurally. The description adds nothing beyond that baseline — no pagination behavior, no note that results are capped, no indication of per-device scoping — so it neither informs nor contradicts.

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 front-loaded sentence with no filler. Nothing is wasted, though the brevity contributes to the gaps in the other dimensions.

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 four-parameter, no-output-schema read tool, the description covers the core purpose but leaves the interface filter and IPv6 toggle unexplained and says nothing about result limits or device defaulting. It is minimally adequate rather than complete.

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?

Schema coverage is 50%: 'limit' and 'device' are documented in the schema, while 'ipv6' and 'interface' are not. The parenthetical '(or IPv6)' hints at the ipv6 toggle but never explains its boolean semantics, and the 'interface' filter is not described at all, so the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description gives a specific verb ('List') and resource ('IPv4/IPv6 addresses assigned to interfaces'), which is clearer than the bare title. It does not differentiate itself from nearby siblings such as mikrotik_interfaces or mikrotik_address_list, so an agent must infer which listing tool to pick.

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 statement of when to use this tool versus mikrotik_interfaces, mikrotik_address_list, or mikrotik_print, and no mention of prerequisites or filtering scenarios. The only implicit guidance is that it is a read/listing operation.

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

mikrotik_list_devicesList MikroTik devicesA
Read-only

List the MikroTik routers this server is configured to manage (no credentials are returned).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely new context — that the result is limited to devices the server is configured to manage and that no credentials are returned — which is meaningful for an agent deciding whether it needs a separate auth step. No pagination or result-size behavior is disclosed.

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

Conciseness5/5

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

A single sentence with zero padding, front-loaded with the verb and resource. The parenthetical security note is short and earns its place.

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 trivial zero-parameter read tool with annotations covering safety, the description gives enough to call it correctly. The only minor gap is that no output schema exists and the description does not indicate what fields a device entry contains (name, host, id), which an agent may need to interpret the response.

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, so there is nothing to document; the schema is empty and fully described. Baseline for a no-parameter tool is 4.

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?

States a specific verb (list) and resource (MikroTik routers this server is configured to manage), which is concrete and distinct from the operational siblings like mikrotik_print or mikrotik_system_overview. It does not explicitly contrast itself with those siblings, which keeps it at 4 rather than 5.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is the discovery entry point before calling per-device tools. There is no explicit 'use this when...' or note about what to do with the returned device identifiers, and no exclusion of alternatives.

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

mikrotik_logsRead system logA
Read-onlyIdempotent

Read the most recent system log entries, optionally filtered by topic or text.

NameRequiredDescriptionDefault
limitNoNumber of newest entries (default 100).
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
topicsNoOnly entries whose topics contain this, e.g. "firewall", "dhcp", "error".
containsNoCase-insensitive text search in the message.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds useful behavior by specifying that results are the *most recent* entries (an implicit newest-first ordering), but it says nothing about truncation, how many entries exist, or what a log entry contains.

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 front-loaded sentence with no wasted clauses; the ordering constraint comes first and the optional filters follow it.

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 low-complexity read-only tool with full parameter documentation and complete annotation coverage, this is nearly sufficient. The only remaining gap is the return shape (fields per log entry), which matters somewhat since there is no output schema.

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

Parameters3/5

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

Schema coverage is 100% and all four parameters carry descriptions, so the schema does the heavy lifting. The description confirms that topics and text filtering are optional, but adds no syntax or semantics beyond what the schema already provides for limit, device, topics and contains.

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 and resource ("Read the most recent system log entries") and adds the filtering scope, so it is clearly the log-reading tool rather than the generic mikrotik_print or the system_overview sibling. It does not name a sibling explicitly, but the resource is distinctive enough to be told apart.

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 phrase "optionally filtered by topic or text" implies when the filters are appropriate, but there is no explicit guidance on when to choose this over mikrotik_print or the other read-only inspection tools, nor any stated prerequisites (device reachability, permissions).

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

mikrotik_pingPing from the routerA
Read-onlyIdempotent

Ping a host from the router itself (useful to test connectivity from a specific interface or source address).

NameRequiredDescriptionDefault
vrfNoVRF to ping from (RouterOS v7)
countNo
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
addressYes
interfaceNo
srcAddressNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds that execution originates on the router rather than the MCP host, which is genuinely useful context, but it says nothing about timeouts, likely latency or packet-loss results, or how the default count of 4 is applied.

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 tight sentence with the core action front-loaded and the parenthetical earning its place by adding usage context. Nothing is repeated from the title or restated without value.

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 6-parameter diagnostic tool with no output schema and no return-value documentation, the description should say what comes back (latency, loss, per-packet results) and how the device default is resolved. It covers the core action adequately but leaves an agent guessing about results and several parameters.

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 only 33% — address, interface, srcAddress, and count are undocumented in the schema. The description partially compensates by surfacing the interface and source-address concepts, hinting at what those two parameters do, but leaves count and address semantics unaddressed, so it is a partial rather than complete compensation.

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?

States a specific verb and resource ('ping a host') and disambiguates direction by saying 'from the router itself', which separates it from pinging the router. It does not name the nearest sibling (mikrotik_traceroute), so it falls short of full sibling differentiation.

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

Usage Guidelines3/5

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

The parenthetical gives a positive use case ('test connectivity from a specific interface or source address'), which is real guidance. However, it offers no exclusions and no mention of the obvious alternative, mikrotik_traceroute, for path diagnosis rather than reachability.

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

mikrotik_printRead any RouterOS menuA
Read-onlyIdempotent

Print items from any RouterOS menu path (the equivalent of /<path> print in the terminal or opening a window in WinBox). Use this for anything without a dedicated tool, e.g. /ip/dns, /interface/bridge/port, /ip/ipsec/peer, /routing/ospf/neighbor, /queue/simple, /user.

NameRequiredDescriptionDefault
pathYesRouterOS menu path, e.g. "/ip/address", "/interface/bridge/port" or "ip firewall filter".
limitNoMaximum rows to return (default 200).
queryNoRaw RouterOS API query words for advanced filters, e.g. ["dynamic=false", "#!"] or [">rx-byte=1000"].
whereNoEquality filters, e.g. {"type": "ether", "disabled": false}.
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
propertiesNoOnly return these properties, e.g. [".id", "name", "running"].

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds the useful equivalence to `/<path> print`, but says nothing about output volume, the 200-row default cap, or what happens on an invalid path — gaps for a tool that can return up to 5000 rows.

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 sentences, both front-loaded: first sentence establishes the operation and the terminal analogy, second gives the selection rule and examples. Nothing repeats the name or the schema.

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 catch-all read tool with no output schema, an agent would benefit from knowing the return shape (rows of properties, .id presence) and that results are capped/filterable. The description stops at what the command is equivalent to, leaving output and error behavior to be inferred.

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 100% and each of the six parameters is documented inline, including path examples, limit default, query syntax and where semantics. The description adds only the convenience that path is expressed like a terminal menu path, so 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?

Names a specific verb ('Print items') and a fully general resource ('any RouterOS menu path'), and anchors it with the terminal/WinBox equivalents. It also explicitly separates itself from the dedicated sibling tools by scoping itself to 'anything without a dedicated tool'.

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

Usage Guidelines5/5

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

Gives an explicit selection rule ('use this for anything without a dedicated tool') plus concrete example paths (/ip/dns, /interface/bridge/port, /user) that show the intended fallback role. An agent can decide when to reach for this versus mikrotik_interfaces or mikrotik_firewall_rules without opening any schema.

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

mikrotik_rebootReboot the routerA
Destructive

Reboot the router. The connection will drop for about a minute. Always confirm with the user first.

NameRequiredDescriptionDefault
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
confirmYesMust be true to confirm the reboot

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real information the agent cannot get elsewhere: the connection drops for roughly a minute, and user confirmation is mandatory. It stops short of saying whether the device comes back automatically or whether in-flight config is lost.

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, zero filler, with the action and its impact front-loaded and the safety instruction last. Every sentence carries distinct information.

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 two-parameter destructive action with no output schema, the description covers the action, its observable effect, the downtime window, and the human-in-the-loop requirement. Only a note on post-reboot state or failure behavior is missing.

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 100%, so both the 'device' default behavior and the const-true 'confirm' guard are already documented in the schema. The description adds no parameter detail beyond that, which is acceptable at full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

States a specific verb and resource ('Reboot the router') in the first sentence. No sibling tool performs reboots, so the action is unambiguous against the long list of mikrotik_* diagnostic and config tools.

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?

Gives an explicit precondition ('Always confirm with the user first') that governs whether the agent may invoke at all. It doesn't name alternatives, but no sibling offers a comparable action, so there is little to disambiguate.

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

mikrotik_removeRemove a RouterOS itemA
Destructive

Remove an item (/<path> remove <id>), identified by id or a where filter matching exactly one item.

NameRequiredDescriptionDefault
idNo
pathYesRouterOS menu path, e.g. "/ip/address", "/interface/bridge/port" or "ip firewall filter".
whereNoEquality filters, e.g. {"type": "ether", "disabled": false}.
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare `destructiveHint: true`, `idempotentHint: false`, and `openWorldHint: true`. The description adds a meaningful behavioral safety rule: the item is removed by `id` or by a `where` filter that matches exactly one item, which helps prevent accidental mass deletion. It omits details about permissions, irreversibility, and response behavior, but the annotations carry much of that burden.

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. The action and command syntax come first, followed by the key targeting constraint.

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 mutation tool with rich annotations and no output schema, the description supplies enough to call it correctly: `path` is required, and the target is selected by `id` or an exactly-one-match `where` filter. It could say more about confirmation/irreversibility, but the annotations already signal destructiveness.

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?

Schema coverage is 75%, so the schema already documents `path`, `where`, and `device`. The description adds useful semantics beyond the schema by clarifying that the target is identified either by `id` or by a `where` filter matching exactly one item.

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?

States a specific verb ('Remove'), resource ('item'), and even the RouterOS command form, with identification by `id` or a `where` filter. It does not explicitly contrast with siblings like `mikrotik_run_command` or `mikrotik_set`, so it stops short of the sibling-differentiation bar for a 5.

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

Usage Guidelines3/5

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

The description gives an important selection constraint: a `where` filter must match exactly one item. However, it provides no explicit when-to-use/when-not guidance and does not name alternatives such as `mikrotik_run_command` or `mikrotik_set`.

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

mikrotik_routesList routesA
Read-onlyIdempotent

List the IPv4 (or IPv6) routing table, optionally only active routes or a single destination.

NameRequiredDescriptionDefault
ipv6No
limitNoMaximum rows to return (default 200).
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
activeOnlyNo
dstAddressNoe.g. "0.0.0.0/0" for default routes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so safety is covered. The description adds the meaningful scope fact that it returns the routing table and can be narrowed, but says nothing about result volume, pagination, or the default device fallback that affects what data comes back.

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 well-formed sentence with the resource front-loaded and the optional modes trailing. No filler or restatement of the title.

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 read-only list tool with no output schema, the description covers what is returned and the optional filters. The only gap is the default-200/pagination and default-device behavior, which the schema partially covers.

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 60% and already documents limit, device and the dstAddress example. The description only adds loose meaning for the undocumented ipv6 and activeOnly flags ('IPv4 (or IPv6)', 'only active routes') without formats or edge cases.

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?

States a specific verb (list) and resource (IPv4/IPv6 routing table) with the optional narrowing filters named inline. It is clearly the routes tool among the siblings, though it never explicitly contrasts itself with generic readers like mikrotik_print.

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 optional 'activeOnly' and 'single destination' modes imply when the filters are used, but there is no explicit when-to-use vs when-to-use-an-alternative guidance or prerequisite note (e.g. that device defaults to the first configured device).

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

mikrotik_run_commandRun any RouterOS commandB
Read-onlyIdempotent

Run an arbitrary RouterOS command, e.g. /system/script/run, /interface/ethernet/monitor (with once=yes), /ip/dhcp-server/lease/make-static, /tool/fetch. Commands that never finish (monitor, torch, ping without count) must be given once or count/duration arguments. On read-only devices only print/get/monitor/ping/traceroute style commands are allowed.

NameRequiredDescriptionDefault
argsNoCommand arguments, e.g. {"interface": "ether1", "once": true}.
limitNoMaximum rows to return (default 200).
queryNoRaw API query words (for print-like commands).
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
commandYesFull command path, e.g. "/system/script/run" or "/interface/monitor-traffic".

TDQS

B3.2/5.0
Behavior2/5

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

The description supplies real behavioral context beyond the annotations, notably the hang risk on monitor/torch/ping without `once`/`count` and the read-only-device command whitelist. However, it also advertises mutating commands (/ip/dhcp-server/lease/make-static, /system/script/run, /tool/fetch) and frames the read-only restriction as a per-device property, which contradicts the readOnlyHint=true, destructiveHint=false and idempotentHint=true annotations.

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?

Three sentences, front-loaded with the capability and its examples, then the two operational caveats. The example list is slightly long but each example illustrates a distinct command shape (script, monitoring, mutation, fetch), so no sentence is wasted.

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?

With no output schema and a nested `args` object, the description covers invocation pitfalls well but leaves open what a failed command returns, how output is formatted/truncated at the 200-default/5000-max row limit, and why a specialized sibling tool would be safer. Given the tool can mutate device state despite read-only annotations, that omission matters.

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 `command`, `args`, `query`, `limit` and `device` are already documented with examples and a default. The description reinforces `args` by demonstrating `once=yes`, but adds no semantics for `query`, `limit` bounds, or `device` resolution beyond what the schema states.

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 and resource ('Run an arbitrary RouterOS command') and anchors it with four concrete command examples spanning script, monitor, DHCP and fetch operations. It is clear what the tool does, but with 20 sibling tools that already encapsulate discrete operations (mikrotik_print, mikrotik_add, mikrotik_set, mikrotik_ping), it never says when this generic escape hatch should be preferred over them.

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?

Usage is implied through imperative constraints: non-terminating commands must receive `once` or `count`/`duration`, and read-only devices restrict the command set. This is genuinely actionable guidance, but there is no routing rule telling the agent to use the specialized siblings first and fall back here only when no dedicated tool exists.

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

mikrotik_setChange a RouterOS item or settingA

Change properties of an item (/<path> set <id> ...). Identify the item by id (e.g. "*1F") or a where filter matching exactly one item. For singleton menus such as /system/identity, /ip/dns or /ip/cloud omit both.

NameRequiredDescriptionDefault
idNoItem .id, e.g. "*1F". For most menus the item name also works.
pathYesRouterOS menu path, e.g. "/ip/address", "/interface/bridge/port" or "ip firewall filter".
whereNoEquality filters, e.g. {"type": "ether", "disabled": false}.
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
propertiesYesItem properties as in the CLI, e.g. {"address": "10.0.0.1/24", "interface": "ether2"}.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare the mutation profile (readOnly=false, idempotent=false, destructive=false, openWorld=true), and the description adds the constraint that a `where` filter must match exactly one item and that singleton menus need no identifier. It stops short of saying what happens on multi-match (error vs silent partial apply), whether unrelated properties are preserved, or what the call 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?

Three tight sentences: the operation, the identification strategy, then the singleton exception. The CLI form is front-loaded and every clause carries operational information with no 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 5-parameter mutation tool with no output schema, the description covers identification and the singleton edge case well. It is slightly thin on result behavior (what the response contains, whether the item is re-read after the change) and on error conditions when a filter matches zero or many items.

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?

Schema coverage is 100%, so baseline is 3, but the description adds semantics the schema does not encode: the mutual-exclusivity/omission rule for `id` and `where` in singleton menus, and the requirement that a filter resolve to exactly one item. That is real decision-making value beyond the per-parameter text.

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?

States a specific verb+resource ("Change properties of an item") and grounds it in the underlying RouterOS CLI form (`/<path> set <id> ...`), which unambiguously separates it from mikrotik_add and mikrotik_remove. It does not explicitly name the closest siblings (mikrotik_set_enabled for a single boolean, mikrotik_run_command for arbitrary CLI), so it falls short of full sibling differentiation.

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

Usage Guidelines3/5

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

The description explains how to target the item (id, or a where filter matching exactly one item, or neither for singleton menus), which is genuinely actionable guidance. However it gives no guidance on when to prefer this over mikrotik_set_enabled or mikrotik_run_command, and no exclusions such as bulk edits across many matches.

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

mikrotik_set_enabledEnable or disable a RouterOS itemA

Enable or disable an interface, firewall rule, route, user, etc. Identify it by id or a where filter.

NameRequiredDescriptionDefault
idNo
pathYesRouterOS menu path, e.g. "/ip/address", "/interface/bridge/port" or "ip firewall filter".
whereNoEquality filters, e.g. {"type": "ether", "disabled": false}.
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
enabledYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare the write/idempotency/open-world profile, and the description usefully adds the range of item types affected. However, for a mutation tool it omits the key behavioral question: what happens when a `where` filter matches zero or multiple items (bulk toggle vs error), and whether the change is immediate and persistent.

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 short sentences with the action front-loaded and the targeting mechanism second; no filler or redundancy.

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?

With five parameters including a nested free-form `where` object, no output schema, and destructive-adjacent consequences (disabling a firewall rule or interface), the definition should say more about match cardinality and failure modes. As written it is callable but leaves real ambiguity for a mutation tool.

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 60%, with `path`, `where`, and `device` documented inline; the description only adds the framing that `id` and `where` are alternative identification mechanisms. It does not clarify whether they are mutually exclusive, what happens if both are supplied, or why `path` is required alongside `id`.

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?

States a specific verb pair (enable/disable) and the resource family it acts on (interface, firewall rule, route, user), so the action is unambiguous. It is implicitly distinct from the generic sibling mikrotik_set, but the description never names that sibling or states the contrast explicitly.

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 gives targeting guidance (identify by `id` or a `where` filter), which is useful, but it never says when to prefer this tool over mikrotik_set or mikrotik_run_command, nor when a `where` filter is appropriate versus a single `id`. Usage is implied rather than stated.

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

mikrotik_system_overviewSystem overviewB
Read-onlyIdempotent

Identity, RouterOS version, board, CPU/memory/disk usage, uptime, clock and health sensors in one call.

NameRequiredDescriptionDefault
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds one genuinely useful behavioral trait — that all these data points are fetched in a single round trip — but says nothing about what happens on unreachable devices or how absent health sensors are handled.

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, front-loaded with the returned data categories, with zero filler. Nothing could be removed without losing information.

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?

Although there is no output schema, the description effectively enumerates the return contents, and the read-only annotations make the risk profile clear. The only gap is that it does not note platform-dependent variability in the returned set (e.g. health sensors on boards that lack them or fields unsupported by older RouterOS).

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 100% and the single 'device' parameter is fully documented in the schema, including its default and a pointer to mikrotik_list_devices. The description adds nothing about the parameter, which is acceptable given the schema does the work — baseline 3.

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 enumerates exactly what the tool returns (identity, RouterOS version, board, CPU/memory/disk usage, uptime, clock, health sensors), which makes the resource unambiguous and clearly distinct from the sibling list-style tools (interfaces, routes, logs). The verb is only implied by 'in one call' rather than stated, so it falls just short of a perfect verb+resource statement.

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 explicit guidance on when to choose this over alternatives such as mikrotik_print, mikrotik_list_devices, or the per-resource tools. The phrase 'in one call' hints that it is an aggregate convenience read, but no exclusions or preconditions are stated.

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

mikrotik_tracerouteTraceroute from the routerC
Read-onlyIdempotent

Trace the path from the router to a host.

NameRequiredDescriptionDefault
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).
addressYes
maxHopsNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds one useful behavioral fact — execution happens on the router itself — but says nothing about how long a trace blocks, whether the target must be resolvable from the device, or what hops output 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.

Conciseness4/5

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

A single front-loaded sentence with no waste and the scope constraint ('from the router') placed early. It is arguably under-specified rather than over-long, so conciseness itself is fine but earns no bonus.

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 network diagnostic with no output schema and two undocumented parameters, the description leaves too much open: nothing about hop output, timeout/failure behavior, or what maxHops controls. Annotations cover safety but not operation, so the definition is thin for the task.

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?

Schema coverage is only 33%: only 'device' is documented. The required 'address' is bare, and 'maxHops' has no description in either the schema or the description, so the agent gets no guidance on its default, units, or the 1-64 bound's meaning. 'to a host' barely implies that address is a target host/IP.

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?

States a specific verb ('Trace') and resource ('the path from the router to a host'), and the phrase 'from the router' pins down that the probe originates on the device rather than the caller. It is clearly distinct from siblings like mikrotik_ping or mikrotik_run_command, though it never names 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?

There is no statement of when to prefer this over mikrotik_ping (reachability) or mikrotik_run_command (arbitrary command), nor any exclusion or prerequisite. The agent must infer the use case entirely from the tool name.

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

mikrotik_wireless_clientsList wireless clientsB
Read-onlyIdempotent

List connected Wi-Fi clients from the registration table (supports the wifi, wifiwave2, legacy wireless and CAPsMAN packages).

NameRequiredDescriptionDefault
limitNoMaximum rows to return (default 200).
deviceNoName of the configured device. Defaults to the first device (see mikrotik_list_devices).

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds genuine domain context by naming the four supported packages (wifi, wifiwave2, legacy wireless, CAPsMAN), which tells the agent the tool works across firmware families. It says nothing about result ordering or the default row cap beyond what the schema already states.

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 front-loaded sentence with zero filler; the parenthetical package-support note is the only elaboration and it earns its place.

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 two-parameter, zero-required, read-only listing tool with full schema coverage and no output schema, the definition is essentially sufficient. The only unmet need is telling the agent which client attributes come back or how this differs from other table-listing 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 both parameters (limit with its default of 200, and device defaulting to the first device) are fully documented in the schema. The description contributes no additional parameter meaning, so the baseline of 3 applies.

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?

States a specific verb and resource (list connected Wi-Fi clients) plus the data source (the registration table), which is far more precise than the sibling-sounding mikrotik_print. It does not explicitly contrast itself with neighboring table tools like mikrotik_dhcp_leases or mikrotik_arp_table, so an agent must infer the distinction.

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

Usage Guidelines2/5

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

The description says what the tool returns but gives no when-to-use guidance, no exclusions, and no pointers to alternatives. An agent choosing between this, mikrotik_dhcp_leases, and mikrotik_arp_table for 'who is on my network' gets no routing signal.

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. 22 tool updatesv0.1.0
    • First observedmikrotik_add
    • First observedmikrotik_address_list
    • First observedmikrotik_arp_table
    • First observedmikrotik_backup
    • First observedmikrotik_dhcp_leases
    • First observedmikrotik_firewall_add_rule
    • First observedmikrotik_firewall_rules
    • First observedmikrotik_interfaces
    • First observedmikrotik_ip_addresses
    • First observedmikrotik_list_devices
    • First observedmikrotik_logs
    • First observedmikrotik_ping
    • First observedmikrotik_print
    • First observedmikrotik_reboot
    • First observedmikrotik_remove
    • First observedmikrotik_routes
    • First observedmikrotik_run_command
    • First observedmikrotik_set
    • First observedmikrotik_set_enabled
    • First observedmikrotik_system_overview
    • First observedmikrotik_traceroute
    • First observedmikrotik_wireless_clients

TDQS

B3.4/5.0

Scored across 22 tools

Disambiguation3/5

The generic mikrotik_print/add/set/remove/run_command tools overlap substantially with dedicated tools such as mikrotik_ip_addresses, mikrotik_interfaces, mikrotik_firewall_add_rule, mikrotik_address_list, and mikrotik_set_enabled. Descriptions help by steering agents toward dedicated tools for common tasks, but an agent can still reasonably choose either path for several operations.

Naming Consistency4/5

All tools use a consistent mikrotik_ snake_case prefix, and the split between noun-style read tools and verb-style action tools is mostly predictable. Minor inconsistency remains because some read tools include list_ while others are bare resource nouns.

Tool Count4/5

Twenty-two tools is on the high side but reasonable for the broad MikroTik management domain, covering system info, interfaces, routing, firewall, DHCP, wireless, ARP, logs, diagnostics, and generic RouterOS operations. The generic CRUD tools also prevent the surface from needing dozens of menu-specific tools.

Completeness5/5

The set covers core read views, generic add/set/remove operations for any RouterOS menu, arbitrary command execution, diagnostics, firewall/address-list helpers, backup, and reboot. Remaining lifecycle operations such as restore or package updates can be reached through mikrotik_run_command, so there are no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with MikroTik RouterOS devices through API and SSH connections, supporting network monitoring, configuration management, and diagnostics across multiple routers with automatic connection fallback.
    3
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Provides a bridge between AI assistants and MikroTik RouterOS devices, enabling natural language management of VLANs, firewall rules, DNS settings, and more.
    212
    1,754 PyPI
    309
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to audit, inspect, and safely configure MikroTik RouterOS v7 routers through tools for connection testing, system status, security audits, firewall mangle management, routing, DHCP leases, sanitized exports, containers, and adlist queries.
    176 npm
    GPL 3.0