A documentation tool that fetches whatever URL a model produces is a prompt-injection surface; restricting it to 50+ official Red Hat domains removes that class of problem, and the PDF-first strategy is what makes Red Hat's JavaScript-rendered pages readable at all. The four-server split is the other decision worth using: give an assistant only the lint and documentation servers and it can review automation without being able to run any of it.
A four-server suite covering Ansible Automation Platform, Event-Driven Ansible, ansible-lint and Red Hat's official documentation. Splitting them lets you run only what you need: the AAP server handles inventories, jobs, templates and projects plus Galaxy content discovery; the EDA server manages activations and rulebooks; the lint server validates playbooks, files and whole projects against quality profiles; and the documentation server fetches Red Hat content with domain validation, so only official Red Hat sources are reachable.
- AAP inventories and hosts listed, created and populated — `list_inventories`, `get_inventory`, `create_inventory`, `list_hosts`, `add_host_to_inventory`
- Jobs run from templates and followed to completion, with ad-hoc commands as the escape hatch — `run_job`, `job_status`, `job_logs`, `list_job_templates`, `create_job_template`, `run_adhoc_command`
- Projects created, listed and synced from source control, with the update job's status and logs — `create_project`, `list_projects`, `get_project`, `update_project`, `list_project_updates`, `get_project_update`, `get_project_update_logs`
- Event-Driven Ansible activations enabled, disabled, restarted and inspected, with rulebooks and decision environments — `list_activations`, `get_activation`, `create_activation`, `enable_activation`, `disable_activation`, `restart_activation`, `list_rulebooks`, `get_rulebook`, `list_decision_environments`
- Ansible content linted at every granularity — pasted playbook text, a file on disk, a role directory, or a whole project — with syntax-only checks for fast feedback and context-aware best-practice checking for dev, staging or production — `lint_playbook`, `lint_file`, `lint_role`, `validate_syntax`, `check_best_practices`, `analyze_project`, `list_rules`, `list_tags`, `get_ansible_lint_version`
- Galaxy collections and roles searched, with details and use-case-driven suggestions that take your existing AAP inventories into account — `search_galaxy_collections`, `search_galaxy_roles`, `get_collection_details`, `get_role_details`, `suggest_ansible_content`
- Red Hat documentation read and searched across 50+ validated official domains, with a PDF-first strategy that works around Red Hat's JavaScript rendering, and product and guide listings — `read_documentation`, `list_products`, `search_documentation`, `search_documentation_enhanced`, `search_with_web_guidance`, `smart_documentation_finder`, `get_product_guides`, `recommend_content`
An Ansible Automation Platform instance and a valid AAP API token with Write scope — create it under User Settings > Tokens, or through the tokens API endpoint. Python 3.11 or higher and `uv sync` (or `pip install -e .`) from a clone. `AAP_TOKEN` and `AAP_URL` are required for the AAP server, `EDA_TOKEN` and `EDA_URL` for the EDA server; the EDA token can be the same one. `REDHAT_USERNAME` and `REDHAT_PASSWORD` are optional and only needed for Red Hat Customer Portal content behind a subscription. Each of the four servers is registered separately in the client, so you can enable only the ones you need.
