Server defines 13 tools with explicit schemas and descriptions. Naming follows verb_noun convention (get_, set_, add_, remove_, enable_, disable_). However, descriptions are minimal (10-50 chars, well below the 194-char baseline), parameter descriptions lack detail on constraints and formats, and output schemas are entirely undocumented. No error recovery guidance. Security concern: credentials passed via environment variables (good), but no per-tool permission declarations or audit trail patterns. Composition is reasonable, tools are single-purpose, but parameter validation is weak and many descriptions omit prerequisites or expected formats.
Add a new firewall filter rule
Add an IP address to an interface
Add a static IP route
Disable a network interface by name (e.g., ether1) or .id
Enable a network interface by name (e.g., ether1) or .id
List firewall filter rules
List all network interfaces on the MikroTik router
Descriptions are 10 - 50 characters, far below the 194-char baseline. LLMs cannot determine when to select tools or understand prerequisites. E.g., 'Get MikroTik system information (version, board, uptime, etc.)' lacks context on when to call it or what data it returns.
Output schemas are completely undocumented. LLMs cannot plan downstream calls or extract required fields. E.g., mikrotik_get_interfaces returns a list, but the response structure (field names, types, required IDs for chaining) is invisible.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
List all IP addresses configured on the MikroTik router
List all IP routes on the MikroTik router
Get MikroTik router identity (name)
Remove an IP address by its .id (get IDs from mikrotik_get_ip_addresses)
Set MikroTik router identity (name)
Get MikroTik system information (version, board, uptime, etc.)
Parameter descriptions lack format constraints and validation rules. E.g., 'address' in mikrotik_add_ip_address says 'IP address with CIDR (e.g., 192.168.1.1/24)' but does not specify CIDR is required, valid ranges, or error handling for malformed input. LLMs cannot validate before calling.
No error recovery guidance. Code catches errors and returns isError=true with a message, but does not categorize errors (retryable vs. user-fixable vs. fatal) or suggest next steps. LLMs cannot self-correct or plan recovery.
No permission declarations or audit trail. Tools like mikrotik_set_system_identity and mikrotik_add_firewall_rule are destructive but lack scope declarations (e.g., 'write:system', 'write:firewall'). No logging of who called what, when, or with what parameters for compliance.