wazuh-mcp-server
The wazuh-mcp-server is an AI-powered security operations interface for Wazuh SIEM/XDR, providing 28 tools across 9 domains to query, analyze, and respond to security events through natural language.
Alert & Triage
Query, list, summarize, and retrieve detailed alerts with filters for severity, agent, rule ID, MITRE technique, or free-text search
Get alert summaries showing severity distribution, top attacking IPs, most triggered rules, and MITRE coverage
Threat Hunting
Search raw security events for IOCs (IPs, file hashes, process names)
Query File Integrity Monitoring (FIM) records for file additions, modifications, or deletions
Search MITRE ATT&CK techniques, tactics, and mitigations
Vulnerability Management
Query the vulnerability inventory per agent, filter by CVE ID or severity
Generate fleet-wide vulnerability heatmaps for patch prioritization
Compliance Auditing
Check SCA status and per-check details (pass/fail, rationale, remediation) per agent against CIS, PCI DSS, NIST, GDPR, and HIPAA
Generate fleet-wide compliance reports for audit preparation
Agents & Groups
List, inspect, and monitor agent health, OS, version, and group membership
Get fleet health overviews including status counts and stale agent detection
List and inspect agent groups and their members
CDB Lists (Threat Intelligence)
List and read the contents of CDB-based threat intelligence lists (IP blocklists, IOC databases)
Manager & Cluster
Retrieve manager daemon stats, logs, cluster health, and per-node statistics
Search and list detection rules filtered by level, compliance framework, or MITRE technique
Security Analysis
Generate rules coverage maps across MITRE ATT&CK, NIST, PCI DSS, GDPR, and HIPAA
Reconstruct incident timelines by tracing related events from a starting alert ID
Incident Response (Safety-Gated)
Trigger active response commands (e.g., firewall-drop, host-deny, restart-wazuh) with a two-step confirmation and expiring token
Execute remote agent commands via Wazuh's active-response infrastructure with explicit confirmation and append-only audit logging
Observability
Access Prometheus metrics (latency, errors, rate limits) and an OpenAPI 3.0 / Swagger UI for direct API interaction
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wazuh-mcp-serverShow me all critical alerts from today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π SB SIEM MCP
Note: Independent, third-party project β not affiliated with or endorsed by Wazuh Inc. Actively developed and tested against live Wazuh instances; review and test before production deployment.
28 MCP tools. 9 domains. Tested on Wazuh 4.14.5 against live instances. AI-powered security operations for Wazuh SIEM/XDR.
"Show me all critical alerts in the last 6 hours, cross-reference with MITRE ATT&CK, and check if any affected hosts have unpatched CVEs."
One prompt. Your AI assistant queries 7,514 alerts, checks 5,038 FIM records, scans 12 CVEs, cross-references 750 MITRE techniques, audits CIS compliance, and triggers incident response β all through your Wazuh infrastructure.
How It Works (30 seconds)
You already have Wazuh running somewhere. The MCP server is a local process that your AI client spawns as a child β just like a language server or linter.
Your Machine Your Wazuh Server
ββββββββββββββββββββββ ββββββββββββββββββββ
β Zed / Claude β β β
β β β β Wazuh API β
β βΌ β β :55000 β
β python -m ββββββββHTTPSβββββββΆβ β
β wazuh_mcp.server β β Wazuh Indexer β
β (child process) ββββββββHTTPSβββββββΆβ :9200 β
ββββββββββββββββββββββ ββββββββββββββββββββNo Docker required. No containers. No agents to install. Just point it at your existing Wazuh and start asking questions in natural language.
Related MCP server: Wazuh MCP Server
π‘οΈ Security Features (Defense in Depth)
Input validation β Shell metacharacter blocking, regex for agent IDs, IPs, CVEs, MITRE IDs
Rate limiting β Token-bucket: 30/60s for read tools, 5/120s for destructive
Output sanitization β Redacts AWS keys, JWT tokens, SSH keys, API keys, passwords from LLM-bound data
Audit logging β Append-only JSONL trail for all destructive actions
Confirmation gate β Two-step
confirm=True+ expiring token for active response toolsRBAC β 4 built-in roles:
viewer,analyst,admin,socwith hierarchical accessDependabot + pip-audit + CodeQL β Automated dependency scanning on every push + weekly schedule
Non-root Docker β Production container runs as unprivileged
wazuhmcpuserTLS support β Verify server certificates, or disable for local dev via
WAZUH_INSECUREPrometheus metrics β 7 metrics exposed on
:9090/metricsfor SOC monitoring (latency, errors, rate limits)OpenAPI 3.0 / Swagger UI β Interactive API docs at
/docs, raw spec at/openapi.json
π Architecture
ββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ
β Your AI Client β β Wazuh Infrastructure β
β (Zed / Claude / Cursor) β β β
β β β β Wazuh API :55000 β
β βΌ β β ββ Agents, Groups β
β ββββββββββββββββββββ β β ββ SCA, FIM, MITRE β
β β MCP Server βββββHTTPSβββββΆβ ββ Manager, Cluster β
β β 28 tools β β β ββ Active Response β
β β β β β β
β β WazuhClient βββββΌββββHTTPSβββββΆβ Wazuh Indexer :9200 β
β β IndexerClient ββββ€ β β ββ Alerts (7,514+) β
β β RateLimiter β β β ββ Vulnerabilities β
β β Sanitizer β β β ββ Events, Rules β
β β RBACEnforcer β β β β
β ββββββββββββββββββββ β ββββββββββββββββββββββββββββ
β β β
β :9090/metrics β
β :8000/docs β
ββββββββββββββββββββββββββββThe MCP server talks to both the Wazuh REST API (port 55000, for management) and the Wazuh Indexer (port 9200, for alerts/vulnerabilities). In Wazuh 4.x/5.x, alerts and vulnerabilities are indexer-only β not available via the REST API. The server's IndexerClient handles this transparently.
π What This Does
Workflow | Example Prompt | Tools Used |
Alert Triage | "Summarize today's alerts by severity and MITRE technique" |
|
Threat Hunting | "Search for IOC 10.0.0.50 across all events and FIM records" |
|
Compliance Audit | "Show me all agents failing CIS benchmark checks" |
|
Rules Coverage | "What's my NIST 800-53 detection coverage?" |
|
Vulnerability Mgmt | "Which systems have critical unpatched CVEs?" |
|
Incident Timeline | "Reconstruct what happened around alert #45821" |
|
Fleet Management | "List disconnected agents and their groups" |
|
Threat Intel | "Show me the CDB blocklists and MITRE techniques for T1059" |
|
Incident Response β οΈ | "Block IP 203.0.113.55 on all web servers" |
|
π¦ Installation
pip (from PyPI β coming soon)
pip install sb-siem-mcpFrom source
git clone https://github.com/Sbharadwaj05/sb-siem-mcp.git
cd sb-siem-mcp
pip install -e ".[dev]"Docker (oneβcommand demo β spins up Wazuh + MCP for testing)
β οΈ This bundles a full Wazuh stack for quick demos. In production, you already have Wazuh running β just use the pip install above and point to your existing Wazuh.
π The MCP endpoint has no built-in client authentication. The demo server binds to
localhost:8000β keep it local. For remote access, place it behind a reverse proxy with auth. See Production Hardening below.
git clone https://github.com/Sbharadwaj05/sb-siem-mcp.git
cd sb-siem-mcp
docker compose up -d
# Wazuh Dashboard: https://localhost:443
# Swagger UI: http://localhost:8000/docs
# Prometheus Metrics: http://localhost:9090/metricsConfiguration
Create a .env file:
# Required
WAZUH_API_URL=https://your-wazuh-manager:55000
WAZUH_USERNAME=wazuh-wui
WAZUH_PASSWORD=your-api-password
# Required for alerts, vulnerabilities, rules (Wazuh 4.x/5.x)
WAZUH_INDEXER_URL=https://your-wazuh-manager:9200
WAZUH_INDEXER_USER=admin
WAZUH_INDEXER_PASS=your-indexer-password
# Optional
WAZUH_INSECURE=true # Skip TLS verification (dev only)
WAZUH_RBAC_ROLE=analyst # Restrict tools by role
WAZUH_RATE_LIMIT_TOKENS=30 # Rate limit burst
WAZUH_RATE_LIMIT_PERIOD=60 # Rate limit windowImportant: The Wazuh Indexer (port 9200) must be accessible from the MCP server. By default it only listens on
localhost. See Troubleshooting for the one-line fix.
Claude Desktop / Zed / Cursor
{
"mcpServers": {
"wazuh": {
"command": "python",
"args": ["-m", "wazuh_mcp.server"],
"cwd": "/path/to/sb-siem-mcp/src",
"env": {
"WAZUH_API_URL": "https://192.168.56.102:55000",
"WAZUH_USERNAME": "wazuh-wui",
"WAZUH_PASSWORD": "your-api-password",
"WAZUH_INSECURE": "true",
"WAZUH_INDEXER_PASS": "your-indexer-password"
}
}
}
}π§ Complete Tool Reference (28 tools, 9 domains)
π Alerts & Triage (3)
Tool | Description | Data Source |
| Query alerts by severity, agent, rule ID, MITRE, search | Wazuh Indexer |
| Fetch single alert by ID with full context | Wazuh Indexer |
| Aggregated: severity distribution, top rules/IPs, MITRE coverage | Wazuh Indexer |
π Threat Hunting (4)
Tool | Description | Data Source |
| Submit raw events for Wazuh parsing/analysis | Wazuh API |
| File Integrity Monitoring β file changes, additions, deletions | Wazuh API |
| CVE inventory per agent, filterable by severity | Wazuh Indexer |
| MITRE ATT&CK techniques, tactics, mitigations, groups | Wazuh API |
π Compliance (3)
Tool | Description | Data Source |
| SCA policy scores per agent (CIS, PCI DSS, NIST, GDPR) | Wazuh API |
| Per-check pass/fail detail with rationales and remediation | Wazuh API |
| Fleet-wide compliance aggregation across all agents | Wazuh API |
π₯οΈ Agents & Groups (6)
Tool | Description | Data Source |
| List agents with status, OS, version, search, pagination | Wazuh API |
| Deep-dive on single agent: config, modules, groups | Wazuh API |
| Fleet health: status counts, OS breakdown, stale agents | Wazuh API |
| List agent groups with counts and checksums | Wazuh API |
| Group details, configuration, member counts | Wazuh API |
| All agents in a specific group | Wazuh API |
π CDB Lists (2)
Tool | Description | Data Source |
| List CDB threat-intel files (IP blocklists, IOC databases) | Wazuh API |
| Read contents of a CDB list file | Wazuh API |
βοΈ Manager & Cluster (5)
Tool | Description | Data Source |
| Daemon statistics (EPS, queues, processed events) | Wazuh API |
| Manager log retrieval with category and search filters | Wazuh API |
| Cluster health: enabled/running state | Wazuh API |
| Per-node daemon stats (falls back to manager stats for single-node) | Wazuh API |
| Search rules by framework/MITRE (falls back to indexer on 4.14.x bug) | Wazuh API / Indexer |
π Security Analysis (3)
Tool | Description | Data Source |
| MITRE/NIST/PCI/GDPR/HIPAA coverage matrix vs your rules | Wazuh Indexer |
| Risk-scored CVE heatmap across all agents | Wazuh Indexer |
| Auto-generated chronological attack timeline from an alert | Wazuh Indexer |
β οΈ Incident Response (2)
Tool | Description | Data Source |
| Trigger firewall-drop, host-deny, restart-wazuh (with confirmation gate) | Wazuh API |
| Execute command on remote agent (with confirmation gate) | Wazuh API |
π SAFETY: Destructive tools require two-step
confirm=True+ one-time expiring token. A misconfigured LLM cannot silently block IPs or quarantine hosts. All destructive actions are recorded in an append-only audit log.
π₯οΈ Observability
Prometheus Metrics (:9090/metrics)
Metric | Type | Description |
| Counter | Tool invocations by name + status (success/error) |
| Histogram | P50/P95/P99 latency per tool |
| Counter | Rate-limit rejections per tool |
| Gauge | Wazuh API connectivity (1=up, 0=down) |
| Counter | Destructive actions logged |
| Gauge | In-flight tool calls |
| Counter | Errors by tool + error type |
OpenAPI / Swagger (:8000/docs)
Interactive API docs for all 28 tools. Raw OpenAPI 3.0 spec at /openapi.json.
Audit Log (~/.wazuh-mcp/audit.jsonl)
Append-only JSON Lines. One entry per destructive action. Never truncated. Thread-safe.
π RBAC
Four built-in roles with hierarchical, cumulative access:
Role | Access | Tools |
| Read-only | Alerts, agents, compliance, rules |
| + Investigation | All viewer + hunting, MITRE, CDB lists, analysis |
| + Administration | All analyst + manager stats, logs, cluster |
| + Response β οΈ | All admin + active response, agent commands |
export WAZUH_RBAC_ROLE=analyst
# Or custom policy: WAZUH_RBAC_POLICY=/path/to/rbac.jsonπ Project Structure
sb-siem-mcp/
βββ src/wazuh_mcp/
β βββ server.py # FastMCP entry point (stdio + SSE transport)
β βββ client.py # Wazuh REST API client (JWT, Basic Auth, fallback)
β βββ indexer.py # Wazuh Indexer / OpenSearch client (alerts, vulns)
β βββ rbac.py # Role-Based Access Control (4 roles, custom policies)
β βββ audit.py # Immutable audit logging (JSONL, append-only)
β βββ sanitizer.py # Output sanitization (credential redaction)
β βββ rate_limiter.py # Token-bucket per-tool rate limiting
β βββ validators.py # Input validation (regex, shell metacharacter blocking)
β βββ metrics.py # Prometheus metrics exporter (7 metrics)
β βββ openapi.py # OpenAPI 3.0 spec + Swagger UI generator
β βββ output.py # Token-efficient field selection (5 modes)
β βββ utils.py # JSON formatters, pagination helpers
β βββ tools/ # 9 tool modules, 28 MCP tools
β βββ alerts.py # 3 tools: list, get, summary
β βββ hunting.py # 4 tools: events, fim, vulns, mitre
β βββ compliance.py # 3 tools: sca status, checks, report
β βββ agents.py # 3 tools: list, get, health
β βββ groups.py # 3 tools: list, get, group agents
β βββ lists.py # 2 tools: list cdb, get cdb
β βββ manager.py # 5 tools: stats, logs, cluster, node, rules
β βββ analysis.py # 3 tools: coverage, heatmap, timeline
β βββ response.py # 2 tools: active response, agent command (safety-gated)
βββ tests/ # pytest-asyncio test suite (12 tests, all passing)
βββ docs/ # SECURITY, DEVELOPMENT, ADVANCED_FEATURES, TROUBLESHOOTING
βββ scripts/setup.sh # One-command Wazuh + MCP dev environment
βββ docker-compose.yml # Wazuh 4.9 + MCP server + Prometheus
βββ Dockerfile # Multi-stage production build (non-root)
βββ openapi.json # Generated OpenAPI 3.0 specification (24 paths)
βββ .github/workflows/ # CI (test matrix), Release, Security Scan
βββ CHANGELOG.md
βββ README.mdπ Quick Start
# 1. Clone
git clone https://github.com/Sbharadwaj05/sb-siem-mcp.git
cd sb-siem-mcp
# 2. Configure
cp .env.example .env
# Edit .env with your Wazuh API + Indexer credentials
# 3. Install
pip install -e ".[dev]"
# 4. Verify connectivity
python -c "
from wazuh_mcp.client import WazuhClient
import asyncio
async def t():
c = WazuhClient(insecure=True)
print('Agents:', (await c.list_agents(limit=1)).get('total_affected_items','?'))
print('Alerts:', (await c.list_alerts(limit=1)).get('total_affected_items','?'))
await c.close()
asyncio.run(t())
"
# 5. Connect to AI client
# Copy claude_desktop_config.json.example into your MCP configπ Production Hardening
This project ships with safe defaults, but the docker-compose demo stack disables several security features for ease of local testing. Do not use the demo config in production without these changes:
1. Enable TLS Everywhere
Set
WAZUH_INSECURE=falseβ the docker-compose now defaults tofalse.Re-enable the Wazuh Indexer security plugin β remove
DISABLE_SECURITY_PLUGIN=trueandplugins.security.disabled=truefrom thewazuh.indexerservice. Generate proper certificates instead.Set
FILEBEAT_SSL_VERIFICATION_MODE=fullon the Wazuh Manager.
2. Restrict the MCP Endpoint
The MCP server exposes an HTTP endpoint on port 8000. This endpoint has no built-in client authentication. In production:
Bind to
127.0.0.1if the AI client runs on the same host, ORPlace the MCP server behind a reverse proxy with mutual TLS / API key auth, OR
Use network-level controls (firewall rules, security groups) to restrict access.
3. Secure the Wazuh Indexer
The Indexer (port 9200) must be network-accessible from the MCP server.
Use TLS with certificate verification (
WAZUH_INSECURE=false).Store Indexer credentials in a secrets manager (Docker secrets, Kubernetes secrets, HashiCorp Vault) β never in plaintext
.envfiles in production.Consider IP whitelisting at the network/firewall layer.
4. Harden the Audit Log
The default audit log location is
~/.wazuh-mcp/audit.jsonl. In production, setWAZUH_AUDIT_LOG=/var/log/wazuh-mcp/audit.jsonl(or another persistent volume outside the home directory).For true immutability, ship audit logs to an external SIEM or use a write-once-read-many (WORM) filesystem.
5. RBAC: Enable It
RBAC is disabled by default (WAZUH_RBAC_ROLE is unset β all tools available).
In production, set WAZUH_RBAC_ROLE=analyst (or stricter) and configure tool
permissions in your AI client to match.
6. Version Compatibility
This server targets Wazuh 4.x (tested on 4.14.5). Wazuh 5.x replaces the Indexer with a new storage back-end β this server will require updates to work with 5.x. Check your Wazuh version before deploying.
π Security Policy
See docs/SECURITY.md for full defense-in-depth documentation (6 layers), production deployment checklist, and vulnerability reporting process.
π οΈ Troubleshooting
See docs/TROUBLESHOOTING.md for solutions to:
Wazuh dashboard version mismatch
/alertsreturning 404 (indexer setup)/rulesreturning 500 (Wazuh 4.14.x bug + indexer fallback)Indexer 401 authentication
Filebeat connection issues
MCP server connectivity
Rate limiting and confirmation gate behavior
Complete network architecture diagram
π License
MIT Β© Sbharadwaj05
Need custom detection rules, SIEM tuning, or an MCP server built? Topmate: https://topmate.io/subhash_bharadwaj or DM for Fiverr gig links.
Available Tools
28 toolswazuh_agent_commandA
β οΈ DESTRUCTIVE: Execute an arbitrary command on a remote Wazuh agent via the active-response infrastructure.
π SAFETY: Same confirmation flow as wazuh_run_active_response. You MUST confirm explicitly before the command runs.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Target agent ID | |
| command | Yes | Full command string to execute on the agent (use with extreme caution) | |
| confirm | No | π SAFETY: Set to True only after reviewing the confirmation prompt. | |
| confirmation_token | No | π SAFETY: The token from the confirmation prompt. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description uses a 'DESTRUCTIVE' warning and mentions the confirmation flow, which adds transparency. However, it does not detail specific behavioral traits such as potential impact on the agent, permissions required, or whether the command runs synchronously. With no annotations, the description carries full burden but is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two lines with clear front-loading of the destructive warning. Every sentence adds value, including the safety reminder. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the output schema exists and the description covers key safety aspects, it omits details like return value format, required agent state (e.g., online), or that the command runs via active-response. For a destructive tool with 4 parameters, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already well-described (e.g., 'Full command string to execute on the agent (use with extreme caution)'). The tool description adds little beyond what the schema provides, repeating safety cues. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes an arbitrary command on a remote Wazuh agent via active-response infrastructure. The verb 'execute' and resource 'remote Wazuh agent' are specific. It distinguishes from siblings like wazuh_run_active_response by mentioning the same confirmation flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some guidance on the confirmation flow and safety requirement, but does not explicitly state when to use this tool versus alternatives like wazuh_run_active_response. It lacks explicit when-not-to-use conditions or comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_agent_healthA
Get a fleet-wide health overview: counts by connection status, agents by OS/platform, version distribution, and stale agents. Use this for daily ops check or before an investigation.
| Name | Required | Description | Default |
|---|---|---|---|
| stale_threshold_hours | No | Hours after which an agent is considered stale (default: 24) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It indicates a read-only, aggregate operation (counts, distributions), but does not explicitly state that it is non-destructive, mention potential performance impact, or specify if it requires special permissions. More explicit safety or scope details would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single, efficient sentence that delivers the core functionality first and then lists details. It is well-structured and contains no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema present), the description covers the key results: connection counts, OS/platform, version distribution, and stale agents. It does not elaborate on the output format or edge cases, but with an output schema available, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, stale_threshold_hours, is already fully documented in the input schema with a clear description and default value. The tool description adds no additional meaning beyond that, so a baseline score of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool fetches a fleet-wide health overview with specific breakdowns: counts by connection status, OS/platform, version distribution, and stale agents. The verb 'Get' and resource 'health overview' are precise, and it distinguishes from sibling tools like wazuh_list_agents which show raw agent lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this for daily ops check or before an investigation,' providing clear context for when to use. However, it does not mention when not to use it or suggest alternatives, such as using wazuh_list_agents for detailed agent data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_alert_summaryA
Get a high-level summary of recent alerts: severity distribution, top attacking IPs, most triggered rules, and MITRE technique coverage. Use this as the first step in security posture assessment or shift handoff.
| Name | Required | Description | Default |
|---|---|---|---|
| hours_back | No | Number of hours to look back for the summary (default: 24) | |
| min_level | No | Minimum alert level to include (default: 7, moderate and above) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It implies read-only behavior but does not explicitly state idempotency, auth requirements, or rate limits. It lists what the summary contains, which adds some transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with key information, no redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and simple parameters (2 optional), the description is complete for its complexity. Could mention return format briefly, but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description does not add significant meaning beyond the schema, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a high-level summary of recent alerts, listing specific components like severity distribution, top IPs, rules, and MITRE coverage. This distinguishes it from sibling tools like wazuh_list_alerts (lists all alerts) and wazuh_get_alert (single alert).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this as the first step in security posture assessment or shift handoff,' giving clear when-to-use context. Could mention when not to use or alternatives, but current guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_cluster_node_statsA
Get detailed statistics for a specific Wazuh cluster node. Shows per-node EPS, queue sizes, daemon status, and resource utilization. Essential for diagnosing cluster imbalances.
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | Yes | Cluster node ID to inspect (e.g., 'master-node', 'worker-1') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It clearly states the tool retrieves statistics and enumerates the data categories (EPS, queues, daemon, utilization). This is sufficient to convey that the operation is read-only and diagnostic. Additional details about error handling or limits are not needed given the simplicity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence states the action and resource, the second adds value by listing examples and use case. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the description is complete. It explains the tool's purpose, the kind of data returned, and its utility. No gaps remain given the sibling context and available structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with a clear description of 'node_id' including examples. The description does not add new information beyond stating it is 'for a specific Wazuh cluster node', which is already implicit in the parameter name and schema. Per guidance, baseline 3 is appropriate when schema already documents parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get detailed statistics' and identifies the resource as 'a specific Wazuh cluster node'. It lists the types of data shown (EPS, queue sizes, daemon status, resource utilization), clearly distinguishing it from sibling tools like wazuh_cluster_status which likely covers cluster-wide stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Essential for diagnosing cluster imbalances' provides a clear use case. While it does not explicitly state when not to use or list alternatives, the purpose is specific enough that an agent can infer it is for deep-dive node analysis versus higher-level cluster overview tools. This is adequate but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_cluster_statusA
Get the Wazuh cluster health status: node list, sync status, and connectivity between manager nodes. Use this when checking if the cluster is healthy or diagnosing replication failures.
| Name | Required | Description | Default |
|---|---|---|---|
| include_nodes | No | Include detailed per-node information in the response |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It implies read-only operation but does not disclose potential costs, permissions needed, or other behavioral traits beyond what is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first sentence states purpose, second gives usage context. No redundant words; efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (one optional param, output schema present), the description adequately covers purpose and usage. However, could benefit from clarifying scope (e.g., all nodes vs current node) even though implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single boolean parameter 'include_nodes' is self-explanatory from the schema description. The tool's description adds no additional meaning beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the verb 'Get' and resource 'Wazuh cluster health status', listing specific return contents (node list, sync status, connectivity) which clearly distinguishes it from sibling like wazuh_cluster_node_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('when checking if the cluster is healthy or diagnosing replication failures') but does not mention when not to use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_compliance_reportA
Generate a compliance summary report across agents. Shows which agents have SCA enabled, their compliance scores, and failed-check counts grouped by policy. Ideal for audit prep.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_ids | No | Comma-separated agent IDs or agent groups (default: fetch all from agent list) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral info. It accurately describes output as a report without side effects. Could mention it does not modify state, but implied by 'report'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: action, output details, use case. Every sentence adds distinct value with no redundancy. Front-loaded with key info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, description does not need to detail return format. It names key fields (agent, scores, failed-check counts, policy). Missing mention of data freshness or limits, but sufficient for decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a parameter description clarifying comma-separated agent IDs/groups. The tool description adds minimal extra meaning beyond that; baseline score holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly specifies the tool generates a compliance summary report and details what it shows (SCA enabled, scores, failed-check counts grouped by policy). Distinct from siblings like wazuh_sca_checks which focus on individual checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States 'Ideal for audit prep' giving a clear use case, but does not explicitly mention when to use alternatives like wazuh_sca_status or wazuh_sca_checks for finer detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_get_agentA
Get detailed information about a specific agent: configuration, enabled modules, OS details, group membership, and connection history.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID to inspect (e.g., '001') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it gets detailed information but does not disclose behavioral traits such as whether it mutates state, required permissions, error handling for invalid agent IDs, or rate limits. Limited transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, efficient, front-loaded with the verb 'Get'. Every word adds meaning, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-info tool with an output schema, the description is sufficiently complete. It covers the key aspects of what is retrieved. Could briefly mention that response details are in the output schema, but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one required parameter with description). The description adds value by listing the types of information returned (configuration, OS details, etc.), which goes beyond the schema's description of agent_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get detailed information about a specific agent' and lists specific data categories (configuration, enabled modules, OS details, group membership, connection history). This distinguishes it from siblings like wazuh_list_agents (which lists agents) and wazuh_agent_health (likely health-focused).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving detailed agent info but does not explicitly state when to use this tool versus alternatives like wazuh_agent_health or wazuh_list_agents. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_get_alertA
Fetch a single Wazuh alert by its ID with full contextual detail. Use this when investigating a specific alert from wazuh_list_alerts results.
| Name | Required | Description | Default |
|---|---|---|---|
| alert_id | Yes | The alert ID to retrieve (from wazuh_list_alerts output) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of disclosing behavioral traits. It claims 'full contextual detail' but does not describe whether the operation is read-only, requires authentication, or has any side effects. The tool is likely read-only, but this is not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise, front-loaded sentences. The first sentence defines the tool's action and result, the second provides usage guidance. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one simple parameter and an output schema (as indicated by context signals), the description is fairly complete. It explains the purpose and when to use it. It could elaborate on what 'full contextual detail' entails, but the output schema likely covers the return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the single parameter 'alert_id', including its description. The tool description adds 'full contextual detail' about the response, but does not elaborate on the parameter beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch', the resource 'single Wazuh alert', and the key attribute 'by its ID'. It explicitly distinguishes from sibling 'wazuh_list_alerts' by specifying that this tool is for investigating a specific alert from that tool's results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'when investigating a specific alert from wazuh_list_alerts results.' This provides clear context and differentiation from sibling listing tools. It does not mention when not to use, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_get_cdb_listB
Read the contents of a specific CDB list. CDB lists are used for IP reputation, user whitelists, IOC matching, and more. Returns the key-value entries in the list.
| Name | Required | Description | Default |
|---|---|---|---|
| list_name | Yes | CDB list name to read (e.g., 'audit-keys', 'security-eventchannel') | |
| search | No | Search within list entries | |
| limit | No | Maximum entries to return | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden for behavioral traits. It indicates the operation is read-only ('Read the contents') and returns key-value entries. However, it does not disclose potential errors, authentication requirements, or rate limits. The description is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the action, second provides context and return format. No redundant information. Slight room for improvement with bullet points or examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with an output schema, the description adequately covers purpose, use case, and return type. It does not mention pagination or filtering beyond what's in the schema, but the schema itself provides that. Given the tool's simplicity, it is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented. The description adds common-use examples for CDB lists but does not improve parameter understanding beyond the schema. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a specific CDB list and explains the purpose of CDB lists (IP reputation, whitelists, IOC matching). It distinguishes from general list retrieval (wazuh_list_cdb_lists) by specifying 'contents of a specific CDB list', but could explicitly contrast with the sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., wazuh_list_cdb_lists to first obtain list names). The description does not mention prerequisites or typical usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_get_groupA
Get detailed information about a specific agent group, including its configuration and member agents.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | Group ID to inspect (e.g., 'default', 'web-servers') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description uses 'get' which implies read-only, but it does not explicitly state that this is a read-only operation with no side effects. Since no annotations are provided, the description should more clearly disclose the read-only nature to aid safe agent usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence of 15 words, directly stating the tool's purpose and what it returns. No unnecessary words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions the returned details (configuration and member agents) and, combined with the output schema, provides sufficient context. It does not mention prerequisites like group existence, but the simple parameter and output schema mitigate the need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage for the only parameter (group_id) with a clear description and examples. The tool description does not add any additional parameter information beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets detailed information about a specific agent group, including configuration and member agents. This distinguishes it from siblings like wazuh_list_groups (list all groups) and wazuh_group_agents (list agents in a group), as it provides a single group's full details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies this tool is for detailed group info, it does not explicitly state when to use it versus siblings like wazuh_list_groups for overviews or wazuh_group_agents for agent lists. No usage prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_group_agentsB
List all agents belonging to a specific agent group.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | Group ID to list agents for (e.g., 'web-servers') | |
| limit | No | Maximum agents to return | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read-only listing operation, which implies no side effects. However, no annotations are provided, and the description does not disclose any additional behavioral traits such as authentication requirements or rate limits. It is minimal but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: a single sentence that communicates the core purpose without any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the input schema covers all parameters, the description is complete enough for a simple listing tool. It could mention that it returns agent details, but that is covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add any extra semantics beyond what the schema already provides for group_id, limit, and offset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists agents by group, distinguishing it from sibling tools that list all agents (wazuh_list_agents) or single agent details (wazuh_get_agent). However, it does not explicitly differentiate from similar list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. For example, no mention that this filters agents by group, while wazuh_list_agents returns all agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_incident_timelineA
After identifying a security incident, reconstruct a timeline of all related events leading to it. Takes an alert ID, traces back through related events on the same agent, and builds a chronological timeline of what happened.
| Name | Required | Description | Default |
|---|---|---|---|
| alert_id | Yes | The starting alert ID to build a timeline from | |
| lookback_hours | No | Hours to look back for related events (default: 24) | |
| max_events | No | Maximum timeline events to include |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It discloses that the tool traces back through related events on the 'same agent' and builds a chronological timeline. While it does not mention whether it is read-only or potential failure modes, the key behavioral aspects are sufficiently covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely conciseβtwo sentences that immediately convey the tool's purpose and key behavior. No superfluous information, and the critical details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and moderate complexity, the description adequately covers the core functionality (tracing events on the same agent, chronological timeline). It does not explain edge cases or what constitutes 'related events,' but the output schema likely handles return structure, making this sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 100%, with all three parameters having descriptions (alert_id, lookback_hours, max_events). The description reinforces the purpose of the tool but does not add significant new meaning beyond the schema. Thus, baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: after identifying a security incident, reconstruct a timeline of related events from a given alert ID. It uses specific verbs ('reconstruct', 'traces back', 'builds') and distinguishes itself from siblings like wazuh_get_alert (single alert) and wazuh_search_events (general search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool ('after identifying a security incident'), providing clear context. However, it does not explicitly state when not to use it or mention alternative tools for different scenarios, which would be helpful for an AI agent deciding between similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_list_agentsA
List all Wazuh agents with their status, OS, version, and last connection. Filter by status ('active', 'disconnected', 'never_connected'), search by name or IP, and control pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by connection status: 'active', 'disconnected', 'never_connected', 'pending' | |
| older_than | No | Show agents not seen in this duration (e.g., '1d', '4h', '30m') | |
| search | No | Search by agent name, IP, or ID | |
| sort | No | Sort field, prefix with '-' for descending (e.g., '-last_keepalive') | |
| limit | No | Maximum agents to return (1-500) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states what the tool returns and its filtering capabilities, which is expected. However, it does not disclose any side effects, authorization needs, or rate limits, which would be required for a higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action and output, then lists key features. Every part is informative and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 optional parameters, an output schema, and is a simple listing operation, the description covers the main points: what it does, what it returns, and how to filter/paginate. It omits details about sorting and the 'older_than' parameter, but the output schema exists to provide additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each parameter. The description adds value by summarizing key parameters (status, search, pagination) but does not introduce new meaning or usage details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), resource ('all Wazuh agents'), and the key attributes returned ('status, OS, version, and last connection'). It effectively distinguishes from sibling tools like wazuh_get_agent (single agent) and wazuh_agent_health (health status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides specific usage guidance: filtering by status, searching by name/IP, and controlling pagination. It implicitly tells the agent when to use this tool (for listing agents with filters), but lacks explicit comparison to alternatives like wazuh_get_agent for single-agent queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_list_alertsA
Query Wazuh security alerts with powerful filters. Use this to triage incidents, hunt for specific threat patterns, or get an overview of recent security events.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | Filter alerts to a specific agent ID (e.g., '001') | |
| agents_list | No | Comma-separated agent IDs to filter (e.g., '001,002,003') | |
| min_level | No | Minimum rule level (3-15). Higher = more severe. Use 12+ for critical only. | |
| rule_id | No | Filter by a specific Wazuh rule ID (e.g., '5710' for SSH brute force) | |
| rule_ids | No | Comma-separated rule IDs (e.g., '5710,5712,5760') | |
| mitre_id | No | Filter by MITRE ATT&CK technique ID (e.g., 'T1110' for brute force) | |
| search | No | Free-text search across alert fields (IP, hostname, command, etc.) | |
| sort | No | Sort field, prefix with '-' for descending (e.g., '-timestamp') | |
| limit | No | Maximum number of alerts to return (1-500) | |
| offset | No | Pagination offset for scrolling through results |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the tool is read-only, what the response format looks like, or any side effects. The name implies a read operation, but explicit statements about behavior are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The first sentence states the core purpose, and the second lists use cases. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 optional parameters and an output schema exists, the description is brief but adequate. It could mention pagination defaults or output structure, but the parameter schema covers details, and the output schema likely clarifies return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains each parameter. The description adds value by framing the tool's purpose but does not provide additional semantic meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb 'Query' and resource 'Wazuh security alerts', and provides specific use cases (triage, hunt, overview). While it doesn't explicitly differentiate from siblings like wazuh_get_alert or wazuh_alert_summary, the use cases imply a general listing/filtering role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete scenarios for using this tool: triaging incidents, hunting for threat patterns, or getting an overview. However, it does not mention when to avoid using it or suggest alternative tools for single-alert retrieval or summaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_list_cdb_listsA
List all CDB (Constant Database) lists configured in Wazuh. CDB lists store key-value data used by rules β IP blocklists, user whitelists, IOC databases, etc. Essential for understanding what threat intelligence feeds are active.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search lists by name | |
| limit | No | Maximum lists to return | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states 'List all CDB lists' accurately, but does not disclose behavioral nuances such as performance, pagination details, or authentication requirements. Adequate for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is three sentences: primary action, explanation of CDB lists, and value statement. No extraneous information; front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple list tool with output schema and well-documented parameters, the description is mostly complete. It could add a brief note about pagination or search functionality, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description does not add additional meaning beyond schema descriptions for search, limit, and offset. No extra context provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List all CDB lists' with a specific verb and resource, and explains what CDB lists are. Distinguishes from sibling wazuh_get_cdb_list implicitly, but could explicitly mention when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions it's 'Essential for understanding what threat intelligence feeds are active,' which implies a use case. It does not provide when-not-to-use guidance or explicitly refer to alternatives like wazuh_get_cdb_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_list_groupsA
List all Wazuh agent groups. Groups are used to organize agents by function (e.g., 'web-servers', 'database', 'production'). Useful for scoping queries and active responses to specific agent sets.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search groups by name | |
| limit | No | Maximum groups to return | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides basic behavioral context (listing groups, utility) but lacks details on authentication, rate limits, or pagination behavior beyond what the schema implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the main action and provide context, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description covers the purpose and use case well, though it could mention the return format explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all Wazuh agent groups, explains their purpose, and distinguishes itself from siblings like 'wazuh_get_group' by focusing on listing all groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for scoping queries and active responses but does not explicitly mention when not to use it or compare to alternative tools like 'wazuh_get_group' or 'wazuh_group_agents'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_manager_logsA
Retrieve Wazuh manager logs for troubleshooting. Filter by category ('ossec', 'api', 'all'), search for specific errors or warnings, and paginate through results.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Log category: 'all', 'ossec', or 'api' | |
| search | No | Search logs for specific text (error messages, etc.) | |
| limit | No | Maximum log entries to return (1-200) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses filtering, searching, and pagination, but lacks details on potential errors, rate limits, or response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded and informative, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers purpose, parameters, and usage context. Output schema exists, so no need to explain return values. Could mention potential limitations or common use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description restates parameter purposes (category filter, search, pagination) but does not add significant new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves Wazuh manager logs for troubleshooting, distinguishing it from sibling tools that focus on agents, alerts, or other aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for troubleshooting and mentions filtering by category, search, and pagination, but does not explicitly state when to use this tool over others or specify exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_manager_statsA
Retrieve Wazuh manager daemon statistics: events per second (EPS), queue sizes, processed events, and daemon health. Essential for capacity planning and troubleshooting performance issues.
| Name | Required | Description | Default |
|---|---|---|---|
| daemon | No | Specific daemon to query: 'analysisd', 'remoted', 'syscheckd', 'wmodules', 'authd', 'monitord', 'logcollector'. Leave empty for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as a retrieval operation with no side effects mentioned, but it does not explicitly state it is read-only or discuss any impact. A 3 is appropriate as it is truthful but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the main action. Every word adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an output schema, the description covers purpose and use cases. It could mention that omitting daemon returns all stats, but the schemaβs default behavior is clear. The output schema handles return value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter 'daemon', listing valid values. The description adds high-level context about the stats returned but doesn't detail how the parameter affects output. Baseline 3 for good schema coverage with minor added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves Wazuh manager daemon statistics, listing specific metrics (EPS, queue sizes, etc.). It distinguishes from sibling tools like wazuh_cluster_node_stats and wazuh_manager_logs by focusing on manager daemon internals vs. cluster or logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly identifies use cases: 'capacity planning and troubleshooting performance issues.' While it doesn't mention when not to use or alternatives, the context is sufficient for typical selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_query_fimA
Query File Integrity Monitoring (FIM) records. See what files were added, modified, or deleted on an agent. Essential for breach impact analysis and configuration drift detection.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID to query FIM records for (e.g., '001') | |
| file_path | No | Filter by file path (e.g., '/etc/passwd' or '/var/www/*') | |
| event_type | No | Event type filter: 'added', 'modified', or 'deleted' | |
| search | No | Free-text search across FIM fields | |
| limit | No | Maximum records to return (1-500) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states the tool shows file changes (added, modified, deleted) but does not cover pagination limits, performance implications, or error handling for missing agents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with no wasted words. Front-loaded with purpose and use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (1 required) and an output schema, the description covers purpose, use cases, and basic behavior. It is mostly complete but lacks details on limits and error scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so all parameters are described there. Description adds context about use cases but does not significantly enhance meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Query' and resource 'File Integrity Monitoring (FIM) records', and specifies what it does: show added, modified, or deleted files. The name and description make it distinct from sibling tools like wazuh_query_vulnerabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions 'Essential for breach impact analysis and configuration drift detection', implying when to use it, but lacks explicit guidance on when not to use it or how it differs from alternatives like wazuh_search_events which may also query FIM data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_query_vulnerabilitiesC
Query the Wazuh vulnerability-detector inventory. Find CVEs affecting your fleet, filtered by severity, agent, or specific CVE ID.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID to query vulnerabilities for (e.g., '001') | |
| cve | No | Filter by specific CVE ID (e.g., 'CVE-2024-3094') | |
| severity | No | Filter by severity: 'Critical', 'High', 'Medium', or 'Low' | |
| search | No | Free-text search (package name, etc.) | |
| limit | No | Maximum vulnerabilities to return (1-500) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description lacks behavioral details like read-only nature, pagination (though params hint), error handling, or required permissions. Does not disclose any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. Front-loaded with primary action. No unnecessary words. Could be structured with more detail on usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, output schema present, and no annotations, description covers basic purpose but lacks behavioral and usage context. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline 3. Description only reiterates filter options already in schema; no additional semantic context or parameter usage examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it queries vulnerability-detector inventory for CVEs with filters. Includes specific filter examples (severity, agent, CVE ID). However, it does not differentiate from sibling tool wazuh_vulnerability_heatmap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over siblings, prerequisites (e.g., agent existence), or scenarios. Only implicit context that it's for querying vulnerabilities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_rules_coverage_mapA
Generate a coverage map showing which Wazuh rules map to which MITRE ATT&CK techniques, NIST 800-53 controls, PCI DSS requirements, GDPR articles, and HIPAA controls. Essential for compliance gap analysis and detection engineering.
| Name | Required | Description | Default |
|---|---|---|---|
| framework | No | Filter by framework: 'mitre', 'nist_800_53', 'pci_dss', 'gdpr', 'hipaa'. Leave empty for all frameworks. | |
| min_level | No | Minimum rule level to include (default: 5) | |
| limit | No | Maximum rules to analyze (1-1000) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It states the tool 'generate[s] a coverage map' and mentions analysis, but does not describe side effects (likely read-only), computational cost, or limits in detail. The limit parameter (1-1000) is implied but not emphasized as a behavioral constraint. The output schema exists and covers return values, partially mitigating the lack of description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the primary action and resource, then adds context. It is concise and efficient, with no redundant information. A slightly more structured format (e.g., separate sentences for purpose and usage) could improve readability, but the current form is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has moderate complexity (3 parameters, output schema present). The description covers the main use case and the output is detailed by the output schema. It does not explain the return format or provide examples, but given the schema richness, this is acceptable. Sibling tools exist but are not referenced, which would have improved completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: each parameter has a description (framework with list of frameworks, min_level default 5, limit default 500). The description adds context by listing the frameworks and tying to compliance analysis, but does not provide significant additional meaning beyond the schema. The baseline of 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('generate a coverage map') and clearly identifies the resource ('Wazuh rules' mapping to multiple frameworks). It names the specific compliance frameworks (MITRE ATT&CK, NIST 800-53, etc.) and explicitly states the purpose ('compliance gap analysis and detection engineering'). This clearly distinguishes it from sibling tools like 'wazuh_compliance_report' or 'wazuh_search_mitre' which have different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the tool is 'essential for compliance gap analysis and detection engineering', providing a clear use case. However, it does not explicitly state when to use this tool versus alternatives (e.g., 'wazuh_compliance_report' for general reporting or 'wazuh_search_mitre' for MITRE-specific queries). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_rules_infoA
Search and list Wazuh detection rules. Filter by rule level, compliance framework (PCI DSS, GDPR, HIPAA, NIST 800-53), or MITRE ATT&CK technique. Essential for understanding your detection coverage and tuning rules.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search rules by name, description, or ID | |
| level | No | Filter by rule level (0-15). Higher = more severe. | |
| pci | No | Filter by PCI DSS requirement (e.g., '10.2.5') | |
| gdpr | No | Filter by GDPR article (e.g., 'Art._32') | |
| hipaa | No | Filter by HIPAA control (e.g., '164.312.b') | |
| nist_800_53 | No | Filter by NIST 800-53 control (e.g., 'AU-12') | |
| mitre_technique | No | Filter by MITRE ATT&CK technique ID (e.g., 'T1059') | |
| limit | No | Maximum rules to return (1-500) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as a search/list operation with no side effects, but does not explicitly state read-only behavior, authentication requirements, or rate limits. The description is clear enough for a read-only query tool, but lacks explicit behavioral disclosures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is conciseβthree sentences that front-load the primary purpose, followed by filtering capabilities and utility. No extraneous words, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (context states 'Has output schema: true'), the tool description does not need to explain return values. It covers purpose, key parameters, and use case adequately for a search/list tool with 9 parameters. Slight deduction for missing usage guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 9 parameters. The description mentions filter options but adds no semantic value beyond the schema's parameter descriptions (e.g., level range, compliance IDs). Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Search and list Wazuh detection rules.' It includes specific filtering capabilities (rule level, compliance frameworks, MITRE ATT&CK) and frames it as essential for understanding detection coverage and tuning rules, clearly differentiating from sibling tools like wazuh_rules_coverage_map.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., wazuh_rules_coverage_map), nor does it specify prerequisites or when not to use it. It only lists features without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_run_active_responseA
β οΈ DESTRUCTIVE: Trigger an active-response command on a Wazuh agent. Can block IPs via firewall, quarantine hosts, run custom scripts, etc.
π SAFETY: By default, this tool DOES NOT execute anything. It returns a confirmation prompt showing exactly what will happen. You MUST call it again with confirm=True and the correct confirmation_token to execute.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Target agent ID (e.g., '001') | |
| command | Yes | Active response command. Common values: - 'firewall-drop': Block an IP via iptables/ firewall - 'host-deny': Add IP to /etc/hosts.deny - 'restart-wazuh': Restart the Wazuh agent - Custom scripts defined in ossec.conf | |
| arguments | No | Command arguments as a JSON array string, e.g., '["srcip", "10.0.0.50", "-"]' for firewall-drop | |
| confirm | No | π SAFETY: Set to True ONLY after reviewing the confirmation prompt. You must also provide the confirmation_token. | |
| confirmation_token | No | π SAFETY: The token from the confirmation prompt. Required when confirm=True. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the destructive nature, the safety layer (confirmation prompt, token requirement), and that it does not execute by default. This is highly transparent and covers all critical behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear paragraphs: first warns of destructiveness and lists examples, second explains safety process. Every sentence adds value, no redundancy. Front-loaded with critical warning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with a complex safety flow, the description covers default behavior, confirmation process, token requirements, and common commands. Output schema exists, so no need to describe return values. Complete for the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context about the safety mechanism but does not elaborate on parameter details beyond what the schema already provides. The command and arguments examples are helpful but not extensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Trigger an active-response command on a Wazuh agent' and lists examples like blocking IPs, quarantine, custom scripts. It clearly identifies the verb (trigger/run) and resource (active response on agent), distinguishing it from siblings like wazuh_agent_command which likely sends generic commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the default no-execution behavior and the two-step confirmation process with token. It provides common command values and argument format. While it doesn't explicitly compare with siblings, the safety mechanism strongly guides usage, earning a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_sca_checksA
Get detailed SCA check results β see exactly which compliance checks passed or failed on an agent. Filter by policy, search, or result status.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID to query (e.g., '001') | |
| policy_id | No | Filter by SCA policy ID (from wazuh_sca_status output) | |
| result | No | Filter by result: 'passed' or 'failed' | |
| search | No | Search within check titles, rationales, or descriptions | |
| limit | No | Maximum checks to return (1-500) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states that the tool returns check results with filtering, but does not mention whether it is read-only, authentication requirements, rate limits, or data freshness. The read-only nature is implied but not explicitly confirmed, which is a gap for a query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that is front-loaded with the primary action. It contains no redundant words or information, earning its place by succinctly conveying functionality and key filtering options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has an output schema (not shown but indicated), return values are already documented. With 6 parameters all described in the schema, and the tool description covering the main filtering options, the description is complete enough for a query tool. A score of 5 would require explicit usage timing or integration hints, which are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The tool description adds a summary of filtering capabilities ('Filter by policy, search, or result status'), which aligns with the schema descriptions but does not add new meaning beyond them. The schema already adequately documents all parameters, including default values and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves SCA check results for an agent, with filtering by policy, search, or result status. The verb 'Get' and resource 'SCA check results' are specific, and it distinguishes from sibling tools like 'wazuh_sca_status' which deals with policy-level status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for detailed compliance checks, but it does not explicitly state when to use this tool versus alternatives like 'wazuh_sca_status' or 'wazuh_compliance_report'. No 'when not to use' guidance is provided, leaving the agent to infer context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_sca_statusA
Get the Security Configuration Assessment (SCA) compliance status for an agent. Shows which policies are applied, pass/fail counts, and overall compliance scores.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | Agent ID (default: '000' for the manager itself) | 000 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the returned data (policies, counts, scores) but does not explicitly state whether the operation is read-only, non-destructive, or has any side effects. The read-only nature is implied but not confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the verb 'Get' and resource 'SCA compliance status'. No redundant words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a single parameter and output schema, the description adequately covers the tool's purpose and what it returns. No gaps given the complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter with a default and description. The description adds context about using the default for the manager itself, which complements but does not significantly extend the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves SCA compliance status for an agent, listing specific outputs (policies, pass/fail counts, overall scores). It distinguishes itself from sibling tools like wazuh_sca_checks by focusing on status rather than individual checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for checking compliance status on a specific agent and mentions the default agent_id. However, it does not explicitly guide when to use this tool versus alternatives like wazuh_sca_checks (detailed checks) or provide usage exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_search_eventsA
Search raw security events across all Wazuh agents. Use this for deep threat hunting β search for IOCs like IPs, file hashes, commands, or process names in the raw event stream.
| Name | Required | Description | Default |
|---|---|---|---|
| search | Yes | Search term β IP address, file hash, command, process name, etc. | |
| select | No | Comma-separated fields to return (e.g., 'timestamp,agent.name,data.srcip') | |
| sort | No | Sort field, prefix with '-' for descending | |
| limit | No | Maximum events to return (1-500) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It describes the tool as searching raw events and mentions IOCs, implying a read-only operation. However, it does not explicitly confirm it is non-destructive, nor does it disclose any pagination, rate limits, or scope limitations beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence specifies the action and scope; the second provides usage examples and purpose. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, output schema exists), the description adequately covers the core purpose and usage. The schema details parameters and the output schema explains return structure, so the description does not need to reiterate those.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal value by giving examples of search terms (IPs, file hashes, commands) but these are already implied by the parameter description 'Search term β IP address, file hash, command, process name, etc.' in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search raw security events across all Wazuh agents' β a specific verb and resource. It distinguishes from sibling tools like wazuh_search_mitre (MITRE techniques) and wazuh_list_alerts (alerts) by specifying 'raw security events' and mentioning IOCs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies 'Use this for deep threat hunting' and provides IOC examples, giving clear context. However, it lacks explicit guidance on when not to use this tool or alternatives, such as wazuh_list_alerts for filtered alerts or wazuh_search_mitre for MITRE technique search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_search_mitreA
Search the MITRE ATT&CK framework as integrated with Wazuh. Look up techniques, find which Wazuh rules map to a technique, or discover what techniques are covered by your detection ruleset.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search MITRE techniques by name, ID, or keyword (e.g., 'persistence', 'T1547') | |
| technique_id | No | Exact MITRE technique ID (e.g., 'T1547.001') | |
| limit | No | Maximum results (1-200) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It describes search/lookup functionality but does not explicitly state that the tool is read-only (no side effects) or outline pagination behavior (despite limit/offset parameters). The output schema may cover return format, so the description is adequate but lacks explicit safety or pagination context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core function, followed by practical use cases. Every sentence provides value with no redundancy or filler. The structure is efficient and directly addresses what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 optional parameters and an existing output schema, the description covers the main functionality (search, lookup, mapping) effectively. However, it omits details on how search and technique_id parameters work together, and does not mention pagination behavior (limit/offset) that users might need to know. Still, it is largely complete for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add meaning beyond the schema: it repeats the search keyword description and does not elaborate on how parameters interact (e.g., combining search and technique_id) or provide examples. No additional semantic value is offered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it searches the MITRE ATT&CK framework integrated with Wazuh, and lists specific use cases: looking up techniques, finding Wazuh rule mappings, and discovering technique coverage. This clearly distinguishes it from sibling tools like wazuh_rules_info or wazuh_rules_coverage_map, which focus on rule details rather than MITRE framework search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for MITRE-related inquiries but provides no explicit guidance on when to use it versus alternatives like wazuh_rules_info for rule details, or when not to use it. No alternatives or exclusions are mentioned, leaving usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wazuh_vulnerability_heatmapA
Generate a vulnerability heatmap showing CVE severity distribution across agents. Identifies which systems have the most critical unpatched vulnerabilities. Essential for patch prioritization.
| Name | Required | Description | Default |
|---|---|---|---|
| severity | No | Filter by minimum severity: 'Critical', 'High', 'Medium', 'Low' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only operation generating a heatmap, but does not disclose behavioral details such as data aggregation scope, time range considerations, or output format. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It efficiently conveys purpose, output, and use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 optional parameter, has output schema), the description adequately covers purpose and use. It could mention that the output is a heatmap visualization, but overall it is sufficient for an agent to understand when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the input schema already describes the 'severity' parameter and its possible values. The description does not add additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Generate', 'Identifies') and resources ('vulnerability heatmap', 'CVE severity distribution across agents'). It clearly distinguishes from siblings like wazuh_query_vulnerabilities by focusing on visualization and patch prioritization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it is 'Essential for patch prioritization' and identifies systems with critical vulnerabilities, providing clear usage context. However, it does not explicitly mention when not to use or direct to alternatives among siblings.
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.
28 tool updates
v0.1.0- First observed
wazuh_agent_command - First observed
wazuh_agent_health - First observed
wazuh_alert_summary - First observed
wazuh_cluster_node_stats - First observed
wazuh_cluster_status - First observed
wazuh_compliance_report - First observed
wazuh_get_agent - First observed
wazuh_get_alert - First observed
wazuh_get_cdb_list - First observed
wazuh_get_group - First observed
wazuh_group_agents - First observed
wazuh_incident_timeline - First observed
wazuh_list_agents - First observed
wazuh_list_alerts - First observed
wazuh_list_cdb_lists - First observed
wazuh_list_groups - First observed
wazuh_manager_logs - First observed
wazuh_manager_stats - First observed
wazuh_query_fim - First observed
wazuh_query_vulnerabilities - First observed
wazuh_rules_coverage_map - First observed
wazuh_rules_info - First observed
wazuh_run_active_response - First observed
wazuh_sca_checks - First observed
wazuh_sca_status - First observed
wazuh_search_events - First observed
wazuh_search_mitre - First observed
wazuh_vulnerability_heatmap
TDQS
Scored across 28 tools
Every tool has a clearly distinct purpose, from agent management to alert querying to compliance checks. Overlapping functions like listing vs. searching alerts are differentiated by scope and detail.
All tools follow a consistent 'wazuh_verb_noun' pattern (e.g., wazuh_list_agents, wazuh_get_alert), making it predictable and easy for an agent to infer action and resource.
With 28 tools, the set is comprehensive but still well-scoped for the Wazuh security management domain. While slightly above the typical 3-15 range, each tool addresses a specific function without redundancy.
The tool surface covers agent lifecycle, health, alerts, rules, compliance, vulnerability, FIM, cluster, logs, and active response. No obvious dead ends; destructive tools are paired with safety confirmation flows.
Maintenance
Related MCP Connectors
Official Microsoft MCP Server to query Microsoft Entra data using natural language
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
- mttrlyOAuthcom.mttrly
AI-powered incident management and server monitoring via MCP.
Related MCP Servers
- AlicenseBqualityAmaintenanceAn MCP server for the Wazuh SIEM/XDR platform that enables users to query agents, security alerts, detection rules, and decoders through Claude or other MCP clients. It provides specialized tools and prompts for investigating security alerts, performing agent health checks, and generating environmental security overviews.2810 npm4MIT
- AlicenseNot gradedqualityDmaintenanceA production-ready Model Context Protocol (MCP) server for seamless integration between Wazuh SIEM and Large Language Models (LLMs).92AGPL 3.0
- AlicenseAqualityDmaintenanceMCP server that exposes OSSEC HIDS security monitoring capabilities as tools, resources, and prompts for AI assistants.262MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables conversational interaction with Wazuh SIEM, allowing users to investigate alerts, hunt threats, tune false positives, edit rules, and run security actions via natural language.MIT