Network device configuration and troubleshooting for home lab using Ansible
Server has 27 tools with basic schemas and descriptions, but significant quality gaps. All tools have descriptions (good), but many are generic or lack actionable detail. Parameter descriptions are minimal, most lack format constraints, ranges, or examples. No output schemas documented. Error handling is present but generic ('ERROR: ...'). No tool annotations (readOnlyHint, destructiveHint). Naming is mostly verb_noun (good), but some tools conflate multiple concerns (e.g., ansible_run_playbook handles playbooks, extra_vars, limits, tags, skip_tags, verbose in one call). Security: input sanitization present but incomplete (dangerous_chars list is not exhaustive; path traversal checks exist but could be stronger). No permission gates on destructive tools. Composition: tools are reasonably atomic, but some could be split (e.g., ansible_write_file + ansible_write_inventory + ansible_write_group_vars are near-duplicates with different paths). Output is unstructured text, not JSON, LLMs must parse free-form strings, wasting tokens and inviting errors.
Create a new role with standard directory structure.
Run a playbook with maximum verbosity for debugging purposes.
Run a playbook in check mode (dry-run) to see what would change without making changes.
Get detailed information about an installed collection.
Get current Ansible configuration values.
Gather facts about a specific host using the setup module.
Install an Ansible collection from Galaxy or a git repository.
List all installed Ansible collections.
No output schemas documented. All tools return unstructured text strings. LLMs must parse free-form output, wasting tokens and inviting parsing errors. Pattern: response-shaper requires structured JSON responses with typed fields.
Parameter descriptions lack format constraints, ranges, and valid values. E.g., 'verbose' accepts 'v, vv, vvv, vvvv' but no enum constraint; 'extra_vars' accepts 'JSON string or key=value pairs' but no format spec. LLMs cannot validate inputs without explicit constraints.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe read-only tools from destructive ones. Pattern: tool-annotations requires explicit hints for all tools.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | <=2025-11-25 | v2 |
List all hosts in the inventory with their variables and groups.
List all available playbooks in the playbooks directory and root ansible directory.
List all available roles in the roles directory.
Read the ansible.cfg configuration file.
Read any file in the Ansible directory. Use relative path from /root/ansible/ like inventory/hosts.ini or group_vars/all.yml
Read group variables for a specific group.
Read host variables for a specific host.
Read and display the current inventory file (hosts.ini).
Read the structure and files of a specific role.
Run an ad-hoc Ansible command on specified hosts or groups.
Run an Ansible playbook by name or path. Playbooks can be in playbooks/ directory or root ansible directory.
Show the current Ansible directory structure and all files.
Validate the inventory file syntax and structure.
Validate a playbook syntax without running it.
Write/update the ansible.cfg configuration file.
Write content to any file in the Ansible directory. Creates parent directories if needed. Use relative path from /root/ansible/
Write/update group variables for a specific group.
Write/update host variables for a specific host.
Write/update the inventory file (hosts.ini). Provide the complete INI-format inventory content.
Error handling is generic ('ERROR: ...') with no recovery guidance. Pattern: recovery-guide requires errors to tell LLMs what to do next. E.g., 'File not found: inventory/hosts.ini. Try ansible_show_structure() to see available files.'
Input sanitization incomplete. sanitize_input() removes dangerous_chars but misses shell metacharacters like newlines, tabs, and Unicode escapes. Path traversal check uses normpath but does not validate against symlink attacks. Pattern: tool-gateway requires comprehensive input validation.