UTMStack MCP Server
OfficialThis MCP server lets an AI assistant drive a UTMStack SIEM/XDR platform: triage alerts, search logs, run SQL, manage incidents, inspect agents, create/delete correlation rules and data filters, and run remote commands on endpoints.
Server & connection management: list/switch/configure/remove UTMStack server connections, ping, whoami, get version.
Alert triage: count open alerts, search alerts with filters, get alert details, get compact alert list for response, change status, mark false positive, add notes/tags.
Log analysis: list index patterns/indices, inspect field properties, search raw logs, count events, get distinct field values (with counts), run SQL queries.
Incident management: list/get incidents, create incidents from alerts, change incident status.
Agent & data source visibility: list agents, look up by hostname, list data input statuses, list supported data types.
Correlation rules: list/search/get/create/activate/deactivate/delete detection rules (with confirmation for deletes).
Data filters: list filters, get by pipeline, create filters on module pipelines, delete filters (with confirmation).
Remote agent commands: check if commands are allowed, run shell commands on endpoints (requires JWT auth and per-server enablement), list command history and agents supporting commands.
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., "@UTMStack MCP Servershow me the latest critical alerts"
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.
UTMStack MCP Server
A Model Context Protocol server that lets an AI assistant — Claude Code, OpenCode, Claude Desktop, or any MCP client — drive your UTMStack SIEM/XDR platform: triage alerts, search logs, run SQL, manage incidents, inspect agents, create and delete correlation rules, manage data filters, and run commands on endpoints.
Ships as a single self-contained binary. No Python installation required.
Install
Find your platform below and copy the matching command. Each installer detects your CPU architecture automatically — one command per operating system, not per architecture.
macOS — Apple Silicon (M1–M4) and Intel
curl -fsSL https://raw.githubusercontent.com/utmstack/MCP/main/install.sh | shLinux — x86_64 and ARM64
curl -fsSL https://raw.githubusercontent.com/utmstack/MCP/main/install.sh | shWindows — x64 and ARM64 (PowerShell)
irm https://raw.githubusercontent.com/utmstack/MCP/main/install.ps1 | iexRun this in PowerShell, not cmd.exe, and not Git Bash — Git Bash cannot install the
Windows build, and the macOS/Linux installer detects it and sends you back here. Inside
WSL, use the macOS/Linux command instead: WSL needs the Linux build, which is what that
command installs.
Supported platforms
Operating system | Architecture | Asset |
macOS 12+ | Apple Silicon ( |
|
macOS 12+ | Intel ( |
|
Linux (glibc 2.35+) |
|
|
Linux (glibc 2.39+) |
|
|
Windows 10/11 |
|
|
Windows 11 |
|
|
Linux x86_64 targets glibc 2.35 (Ubuntu 22.04+, Debian 12+, RHEL 9+). Linux arm64 is built on a newer runner and targets glibc 2.39 (Ubuntu 24.04+, Debian 13+, Kali rolling). Alpine/musl is not covered — run from source there. 32-bit systems are not supported.
Every installer verifies the download's SHA256 against the checksums.txt published with
the release, and refuses to install if it cannot.
Where it lands
Location | |
macOS / Linux |
|
Windows |
|
Set UTMSTACK_MCP_VERSION=1.2.3 to install a specific version.
Unsigned binaries
These binaries are not code-signed. They run normally — signing is not required to execute anything on macOS or Windows — but it affects two situations:
macOS. Binaries fetched by curl are not quarantined, so the installer path works
as-is. If you download an asset from the Releases page in a browser, Gatekeeper will
block it — use the installer, or clear the flag:
xattr -dr com.apple.quarantine /usr/local/lib/utmstack-mcpWindows. SmartScreen triggers on Mark-of-the-Web, which browsers apply to downloads;
Invoke-WebRequest (what install.ps1 uses) does not, so the installer path is normally
silent. Separately, Microsoft Defender is known to heuristically flag PyInstaller-built
executables. If it quarantines utmstack-mcp.exe, the file is a false positive — verify
its SHA256 against checksums.txt on the release, then add an exclusion for
%LOCALAPPDATA%\Programs\utmstack-mcp.
Every release publishes checksums.txt, and the installers verify against it and refuse to
proceed if they cannot.
Related MCP server: AlertLogic MCP Server
Set up
utmstack-mcp initThe wizard asks for your UTMStack URL, how to authenticate, and your TLS preference, then
validates the credentials against the live API before saving anything. It writes them
to a 0600 file (~/.config/utmstack-mcp/config.json, or %APPDATA%\utmstack-mcp on
Windows), so no credentials end up in shell history or in an MCP client's config.
Check it any time:
utmstack-mcp check # verify configuration and connectivity
utmstack-mcp config-path # print the config file locationConnect an MCP client
Because credentials live in the config file, registration carries no secrets and is the same everywhere.
Claude Code
claude mcp add --scope user utmstack -- utmstack-mcpOpenCode — add to ~/.config/opencode/opencode.json:
{ "mcp": { "utmstack": { "type": "local", "command": ["utmstack-mcp"], "enabled": true } } }Claude Desktop — add to claude_desktop_config.json:
{ "mcpServers": { "utmstack": { "command": "utmstack-mcp" } } }The UTMStack CLI bundles this server preconfigured — nothing to register there.
Configuration
utmstack-mcp init writes this file for you. Configuration is resolved in this order,
first match wins:
UTMSTACK_SERVERS(a JSON array) in the environmentUTMSTACK_SERVERS_FILEpointing at a JSON file~/.config/utmstack-mcp/config.json— whatinitwrites.envin the current directory (development convenience)
[
{
"name": "prod",
"url": "https://utm.example.com",
"user": "admin",
"pass": "...",
"default": true
},
{
"name": "lab",
"url": "https://10.0.0.2",
"apiKey": "...",
"caBundle": "/etc/ssl/certs/lab-ca.pem",
"allowAgentCommands": true
}
]Key | Meaning |
| identifier used by the |
| base URL of the deployment |
| console login — recommended, and required for |
| sent as the |
| a ready id_token (static; cannot be refreshed) |
| defaults to true; see below |
| path to a CA certificate — the right way to trust a self-signed cert |
| defaults to false; see below |
| marks the default server |
Auth precedence per server: user+pass > jwt > apiKey.
Multiple deployments are supported: every tool takes an optional server= argument,
use_server switches the default, and list_servers shows what is configured.
Two defaults chosen for safety
TLS verification is on. UTMStack instances often use a self-signed certificate. The
right fix is caBundle, pointing at that certificate. You can set "verifySSL": false
instead, but the server warns on every start — that same connection carries your
administrator password to /api/authenticate, so anyone on the network path can read it.
Remote command execution is off. run_agent_command gives the assistant a root/SYSTEM
shell on an endpoint. SIEM log content is partly written by attackers and reaches the model
through search_logs and search_alerts, which puts a remote shell downstream of data you
do not control. Enable it per server with "allowAgentCommands": true, only where you want
that capability.
Configuring from the assistant
Beyond utmstack-mcp init, the assistant can set up or change a connection when you
ask it to in conversation — "connect to my UTMStack at https://utm.example.com with API
key …", or "change the UTMStack URL to …". It uses the configure_server tool, which
validates against the live API, writes the same owner-only config file, and applies the
change immediately. remove_server deletes a connection.
For safety, configure_server cannot enable remote agent command execution — turning on
allowAgentCommands stays a deliberate edit to the config file or a run of
utmstack-mcp init, never something reachable from a conversation that may contain
attacker-influenced log data.
Tools
Servers and health — list_servers, use_server, configure_server, remove_server, ping, whoami, get_version
Alerts — count_open_alerts, search_alerts, get_alert, get_alerts_for_response,
change_alert_status, mark_alert_false_positive, add_alert_notes, add_alert_tags
Logs — list_index_patterns, list_indices, get_index_properties, search_logs,
count_events, get_field_values, get_field_values_with_count, run_sql
Incidents — list_incidents, get_incident, create_incident, change_incident_status
Agents and data sources — list_agents, get_agent_by_hostname,
list_data_input_statuses, list_supported_data_types
Correlation rules — list_correlation_rules, get_correlation_rule,
create_correlation_rule, set_correlation_rule_active, delete_correlation_rule
Data filters — list_filters, get_filters_by_pipeline, create_filter, delete_filter
Agent commands — can_run_command, run_agent_command, list_agent_commands,
list_agents_with_commands
Guardrails
Destructive operations are bounded, because an assistant acting on a security product can suppress detections as easily as it can read them:
delete_correlation_ruleanddelete_filterrequireconfirm=TrueBulk alert writes are capped at 100 ids per call
Page sizes are clamped, and oversized responses return a structured marker rather than truncated JSON
run_agent_commandvalidates the hostname, clamps its timeout, and refuses to run unless the permission check returns an explicit allow
Run from source
git clone https://github.com/utmstack/MCP.git
cd MCP
python3 -m venv .venv && . .venv/bin/activate
pip install -e .
utmstack-mcp initBuild a binary for your platform:
pip install pyinstaller
pyinstaller --clean --noconfirm utmstack-mcp.spec
# -> dist/utmstack-mcp/Requires Python 3.10+.
Notes
Correlation rules take about five minutes to load into the engine before they fire.
The correlation engine matches normalized fields (log.eventCode, target.user,
log.eventDataScriptBlockText, …), not raw log.data.* fields.
User-created filters attach to module/integration pipelines. The built-in Windows and Linux system filters are edited in the web UI; the API returns 500 for those.
Known limitation: the console token travels in the URL
UTMStack's /ws console endpoint authenticates with ?access_token=<JWT> in the
query string, and accepts no header alternative we could find — so
run_agent_command has to send it that way. Query strings are commonly recorded
in reverse-proxy and gateway access logs. If your deployment ingests its own web
logs, that token can end up in the log store.
This only affects run_agent_command, which is disabled by default. Every other
tool authenticates with an Authorization header. If you enable agent commands,
consider excluding /ws request URIs from your access-log ingestion.
run_agent_command uses the interactive console, which speaks STOMP over SockJS at
/ws and requires a JWT — the Utm-Api-Key header is rejected there. Configure user and
pass for that tool; every other tool works with an API key.
Some deployments return HTTP 500 on the API-key path for certain endpoints, which is why JWT login is preferred throughout.
Available Tools
44 toolsadd_alert_notesA
Add (overwrite) the analyst notes on an alert. Pass an empty string to clear notes. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | ||
| server | No | ||
| alert_id | Yes |
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 cover behavioral traits. It discloses that notes are overwritten and that an empty string clears them, and mentions server targeting. However, it does not state idempotency, error behavior, or permission requirements.
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 plus one line for server, no wasted words. It front-loads the main action. The server explanation could be integrated more smoothly, but overall it is 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 presence of an output schema (not shown), return values need not be explained. The description covers the core action and the key parameter (notes clearing). For a simple tool with three parameters, it is reasonably complete, though side effects like overwriting existing notes are not explicitly stated.
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 0%, so the description must compensate. It explains the 'server' parameter and the clearing behavior of 'notes', but 'alert_id' is not elaborated. It adds some meaning beyond the schema (e.g., empty string clears notes) but not full 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 clearly states the action ('Add (overwrite)') and the resource ('analyst notes on an alert'). It distinguishes from sibling tools like 'add_alert_tags' by specifying notes rather than tags. The clarification about clearing notes via empty string adds precision.
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 setting or clearing notes but does not explicitly state when to use this tool versus alternatives like 'get_alert' (which retrieves notes). No guidance on exclusions or context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_alert_tagsA
Add tags to one or more alerts. If create_rule=true, future matching alerts are auto-tagged. Pass tags=[] to remove all tags. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| tags | Yes | ||
| server | No | ||
| alert_ids | Yes | ||
| create_rule | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses key behaviors (auto-tagging rule, removal via empty array) but omits side effects (e.g., permission requirements, impact on existing alerts) that would inform safe 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 extremely concise: one sentence states the core purpose, a second adds the key special behaviors, and a third explains the server parameter. 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 existence of an output schema and the tool's moderate complexity, the description covers the main operations. It lacks output details but the output schema presumably handles that. Slightly more detail on the rule creation process would improve 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 description coverage is 0%, so the description adds meaning beyond schema titles. It explains tags (empty array removes all), server (target default), and create_rule (auto-tagging), but leaves alert_ids unexplained.
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 'Add tags' and the resource 'alerts', with specific behaviors (create_rule, remove all tags) that distinguish it from sibling tools like add_alert_notes or change_alert_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 context for when to use this tool (adding/removing tags, auto-tagging via create_rule) but does not explicitly state when not to use it or mention any alternative tools for tag management.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
can_run_commandA
Check whether remote commands can currently be run on an agent (by hostname). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| hostname | Yes |
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 the transparency burden. It states the tool is a check (likely read-only) and requires a hostname. However, it does not disclose error behavior or conditions like 'can be run' meaning, which would require additional detail.
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 with two sentences, front-loading the main purpose. No redundant information is present.
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 essential behavior. It could include more detail on what 'can be run' entails, but overall it is 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 0%, so the description must explain parameters. It adds minimal meaning: 'server' gets a default clarification, but 'hostname' is only implied. The default value in schema ('') conflicts with description ('active/default'), causing ambiguity.
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 'Check' and the resource 'whether remote commands can currently be run on an agent (by hostname)'. This distinguishes it from sibling tools like 'run_agent_command' which executes commands, and aligns with the tool's name.
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 as a precondition check before running commands, but it does not explicitly mention when to use or alternatives. Siblings like 'run_agent_command' are listed, but the description lacks guidance on choosing between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_alert_statusA
Change the status of one or more alerts. status codes: 2=Open, 3=In Review, 5=Completed. (To mark a false positive use mark_alert_false_positive.) server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| status | Yes | ||
| alert_ids | Yes | ||
| observation | No |
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 behavior. It mentions status change and valid codes, but omits side effects (e.g., triggers, reversibility) and required permissions.
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?
Concise, front-loaded main action. However, information is somewhat fragmented (status codes, sibling reference, server in separate phrases). Could be more structured.
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?
Output schema exists so return value details are not needed, but the description lacks clarity on the 'observation' parameter and potential side effects of status changes.
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 0%; description explains status codes and server but not alert_ids (IDs?) or observation (purpose unclear). Only half of the parameters are meaningfully described.
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 'Change the status of one or more alerts' – a specific verb and resource. It distinguishes from sibling 'mark_alert_false_positive' by directing users to that tool for false positives.
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 tells when NOT to use (for false positives) and provides status codes and server usage, but does not explicitly state prerequisites or compare with other siblings like add_alert_notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_incident_statusC
Change an incident's status. status: OPEN, REVIEW, COMPLETED. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| status | Yes | ||
| incident_id | Yes |
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 the full burden. It mentions allowed status values but does not disclose behavioral traits such as validation rules, authorization requirements, idempotency, or effects on related objects. For a mutation tool, more transparency is needed.
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 with two short sentences, covering the core action and key parameter details. There is no unnecessary verbosity.
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 low complexity (3 parameters, one optional), the description is somewhat complete. However, it lacks usage guidelines and behavioral context. An output schema exists but is not shown, so return value information is absent. While adequate for simple use, it could be more informative.
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 0%, so the description must compensate. It explains the status parameter values and the server parameter's purpose, adding meaning beyond the schema. However, it does not describe the incident_id parameter (though its purpose is clear from the name). Overall, it adds some value but could be more explicit.
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 'Change an incident's status', specifying the verb and resource. It also lists acceptable status values, providing additional clarity. While it doesn't explicitly differentiate from sibling tools, the purpose is distinct enough given the context of incident management.
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?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, conditions, or side effects. The description only states what the tool does without providing usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_serverA
Add or update a UTMStack server connection (URL + credentials) and save it.
Use this when the user asks to connect the assistant to their UTMStack, or to
change the URL or credentials of an existing connection. The connection is
written to the owner-only config file and takes effect immediately — the user
does not need to run utmstack-mcp init or restart anything.
Updating an existing server (same name) merges: fields you leave blank keep
their current values, so "change the URL to X" updates only the URL.
Args: url: UTMStack base URL, e.g. https://utm.example.com (required for a brand-new server). api_key: UTMStack API key (Settings -> API keys). Provide this OR username+password. username: console login username. Recommended — it is the same login as the web UI and the only auth that supports run_agent_command. password: console login password. name: identifier for this connection (default "default"). verify_ssl: verify the server's TLS certificate. Defaults to true; set a ca_bundle to trust a self-signed certificate rather than turning this off. ca_bundle: path to a CA certificate (.pem) that signs the server's cert. make_default: make this the default server for later calls. validate: test the connection before saving (recommended). If it fails, nothing is written.
Does not enable remote agent command execution — that stays a deliberate
edit to the config file (or utmstack-mcp init), never something set from a
conversation. Never returns the stored secret.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| name | No | default | |
| api_key | No | ||
| password | No | ||
| username | No | ||
| validate | No | ||
| ca_bundle | No | ||
| verify_ssl | No | ||
| make_default | No |
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 behavioral traits: writes to owner-only config file, takes effect immediately, no restart needed, never returns stored secret, merge on update, validate tests connection before saving and nothing is written on failure. This goes beyond minimal requirements.
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 well-structured with a general overview followed by parameter documentation. It is somewhat long but every sentence provides value. Could be slightly tighter, but overall effective. 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 complexity (9 parameters, multiple authentication methods, validation, and merging logic), the description covers all essential aspects: effect, limitations, authentication options, and security behavior. The presence of an output schema (not shown) means return values need not be explained, but the description still adds value by noting it never returns stored secrets.
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 0%, but the description includes a detailed Args section explaining each parameter's purpose, requiredness (e.g., url required for new server), alternatives (api_key vs username+password), defaults, and constraints (verify_ssl default true). This adds significant meaning beyond the bare 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 tool's purpose: 'Add or update a UTMStack server connection (URL + credentials) and save it.' It distinguishes itself from sibling tools like remove_server and list_servers by specifying it handles connection configuration. The verb 'Add or update' and resource 'server connection' are specific.
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 says when to use: 'when the user asks to connect the assistant to their UTMStack, or to change the URL or credentials of an existing connection.' It also clarifies what it does not do: 'Does not enable remote agent command execution' and suggests alternative methods (config file edit or init). The merge behavior on update is also clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_eventsC
Return true/false whether any events match the given filters and time window. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | now | |
| start | No | now-24h | |
| server | No | ||
| filters | No | ||
| index_pattern | No | v11-log-* |
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 disclose behavior. It states the boolean return type but does not mention side effects, permissions, rate limits, or the fact that it does not return counts despite the tool name.
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 with two sentences, clearly stating the overall function and explaining one parameter. However, embedding parameter docs in the description rather than the schema is a slight structural issue.
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 returns a boolean (output schema exists), the description need not cover return values, but it lacks important context about filter syntax, time window format, and the discrepancy between name and behavior.
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 0%, but the description only adds meaning to the 'server' parameter. The other four parameters (end, start, filters, index_pattern) lack any description, leaving gaps for the agent.
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 states it returns true/false for matching events, which clarifies its boolean nature, but the name 'count_events' suggests a count, creating a mismatch. It is distinct from sibling tools like search_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?
No when-to-use or when-not-to-use guidance is provided. There is no mention of alternatives like search_logs for actual event retrieval, though the server parameter is briefly described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_open_alertsA
Return the integer count of currently open alerts. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No |
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 the description carries the burden. It explains the server parameter targeting behavior but does not disclose other behavioral traits like real-time vs cached counts, authentication needs, or rate limits.
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, each serving a distinct purpose: first defines the tool's action, second documents the parameter. 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?
For a simple counting tool with one optional parameter and an output schema (assumed), the description covers the main behavior and parameter. It could mention what 'currently open' means, but overall is sufficiently complete.
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 0%, so the description compensates by explaining the 'server' parameter's purpose and default behavior. This adds value beyond the schema's empty default and title.
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 ('Return the integer count') and the resource ('currently open alerts'). It distinguishes from siblings like search_alerts and get_alert by specifying a count rather than individual alerts.
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 such as search_alerts or get_alert. There is no mention of prerequisites or conditions, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_correlation_ruleA
Create a new correlation (detection) rule.
definition: the matching expression (the rule's where). Use ONLY normalized
fields, e.g. equals("log.eventCode", 4720),
equals("log.eventCode","4104") && contains("log.eventDataScriptBlockText","mimikatz").
Functions: equals, oneOf, contains, startsWith, endsWith, regexMatch, exists, &&, ||, !.
data_type: 'wineventlog' (id 1) or 'linux' (id 26).
after_events: optional threshold correlation, list of SearchRequest objects with
{indexPattern, with:[{field,operator,value}], within:"now-5m", count:N}.
server: which configured server to target (default active/default).
NOTE: a newly created rule takes ~5 minutes to load into the correlation engine before it will fire. Trigger the matching event after that delay.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| active | No | ||
| server | No | ||
| category | No | Execution | |
| group_by | No | ||
| adversary | No | origin | |
| data_type | No | wineventlog | |
| integrity | No | ||
| technique | No | ||
| definition | Yes | ||
| references | No | ||
| description | No | ||
| after_events | No | ||
| availability | No | ||
| confidentiality | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description covers key behavioral aspects: the rule's delay before firing, allowed functions and normalized fields for definition, and structure of after_events. It does not detail all behaviors (e.g., permissions), but the provided info adds significant value 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?
The description is well-structured: a clear purpose sentence, followed by line-by-line explanations of key parameters, and a separate note. Despite length, each sentence adds value and the content is 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?
With 15 parameters and no annotations, the description explains core aspects but omits meanings for many parameters (integrity, adversary, etc.). The output schema exists but is not detailed in the description. Overall, adequate but with gaps.
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 0%, so the description must explain parameters. It provides detailed context for definition, data_type, after_events, and server, but leaves 11 parameters unexplained (e.g., integrity, adversary). This partially compensates but is not comprehensive.
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: 'Create a new correlation (detection) rule.' This distinctively separates it from sibling tools like list_correlation_rules, get_correlation_rule, etc., which are all focused on different operations.
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 name and description make it obvious when to use the tool (to create a rule), there is no explicit guidance on when to avoid it or alternatives. The note about the 5-minute delay is behavioral, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_filterA
Create a new data filter on a pipeline.
logstash_filter: the YAML pipeline text. Steps include rename, add (with where),
grok, json, kv, delete. Example to standardize a username value:
pipeline:
- dataTypes: [generic]
steps:
- add:
function: "string"
params: {key: target.user, value: "standard.name"}
where: equals("target.user", "legacy_name")NOTE: user filters can only be created on module/integration pipelines; the built-in Windows/Linux agent 'system' filters are edited in the web UI, not via this API. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| active | No | ||
| server | No | ||
| data_type | Yes | ||
| filter_name | Yes | ||
| pipeline_id | Yes | ||
| data_type_id | Yes | ||
| logstash_filter | Yes |
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 does not mention any side effects, permissions, idempotency, or constraints beyond the note on pipeline types. The agent cannot infer safety or mutation semantics from the description alone.
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 structured with a clear opening, a detailed explanation of the complex logstash_filter parameter with an example, and a usage note. It is not overly verbose for the complexity it covers. Slightly longer than minimal due to example, but that 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?
With 7 parameters (5 required) and no output schema explanation needed (since output schema exists), the description provides good context for logstash_filter and usage constraints. However, it fails to explain what the other required parameters mean or how the active flag works, leaving the agent to guess or rely on schema names.
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 has 0% parameter description coverage, so the description must compensate. It does so for logstash_filter by explaining its YAML format, listing steps, and giving an example. It also briefly mentions the server parameter. However, other required parameters like pipeline_id, filter_name, data_type_id, data_type, and active are left unexplained, leaving gaps.
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 'Create a new data filter on a pipeline' with a concrete verb and resource. It details the logstash_filter parameter with an example. However, it does not explicitly differentiate from sibling tools like get_filters_by_pipeline or delete_filter, so it loses a point for missing sibling distinction.
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 notes that user filters can only be created on module/integration pipelines, not on built-in system filters which must be edited via the web UI. This provides clear when-to-use and when-not-to-use guidance, along with a mention of the server parameter's default behavior. This is exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_incidentA
Create an incident from a list of alert ids (or add them to an existing one). incident_id=0 creates a new incident; set an existing id to append alerts to it. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| server | No | ||
| source | No | MCP | |
| alert_ids | Yes | ||
| incident_id | No |
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 that the tool can create or append to incidents, but does not detail side effects (e.g., whether it overwrites or merges), authentication needs, or rate limits. 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?
Three sentences, no fluff. Front-loaded with purpose, then specific parameter behavior. Efficient and easy to parse.
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?
Has output schema (not shown) so return values are covered. Covers purpose and key parameters, but lacks explanation of error scenarios or what happens to existing incident data. Adequate for a moderately complex 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 description coverage is 0%, so description must compensate. It explains 'incident_id' and 'server' parameters well. 'alert_ids' is implied but not detailed. 'name' and 'source' are not described. Adds value beyond schema but could be more complete.
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: 'Create an incident from a list of alert ids (or add them to an existing one).' It distinguishes from sibling tools like get_incident or change_incident_status by specifying creation/append functionality.
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 usage guidance: use 'incident_id=0' for new incident or set an existing id to append. It does not explicitly state when not to use, but the context is clear. Could mention alternatives like change_incident_status but is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_correlation_ruleA
Delete a correlation rule by id. Irreversible — deleting a rule silently removes detection coverage, so this requires confirm=True. confirm: must be True to actually delete. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| confirm | No | ||
| rule_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses critical behavior: irreversible action, silent removal of detection coverage, and the need for confirmation. No annotations were provided, so description fully carries this burden.
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?
Concise description with front-loaded main action and bullet-style parameter clarifications. Every sentence adds value; could be slightly more structured but remains clear.
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?
Covers key aspects: action, irreversibility, required confirmation, server targeting. Output schema exists so return values not needed. Omits error handling but acceptable for a delete 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?
Adds meaning beyond schema titles for confirm (must be True) and server (default active/default). Rule id is implicitly clear from the name and description. Schema coverage is 0% but description compensates 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?
Clearly states 'Delete a correlation rule by id' with a specific verb and resource. Distinguishes from sibling tools like create_correlation_rule or set_correlation_rule_active by focusing on deletion.
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?
Provides explicit guidance on when to use (when permanent deletion is intended) and how to use (requires confirm=True). Does not explicitly exclude alternatives but implies finality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_filterA
Delete a data filter by id. Irreversible — this changes log ingestion. confirm: must be True to actually delete. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| confirm | No | ||
| filter_id | Yes |
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 effectively discloses that the operation is irreversible and changes log ingestion, and explains the confirm and server parameters' roles.
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 concise sentences: purpose first, then behavioral warning, then parameter guidance. 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 simple parameter set (3 params, no enums) and an output schema, the description covers the essential usage and behavioral aspects. Could mention output or side effects, but 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?
Schema description coverage is 0%, so the description adds value by clarifying that confirm must be True for deletion and that server defaults to active/default. The filter_id parameter is self-explanatory.
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 'Delete a data filter by id', identifying the verb (delete) and resource (data filter). It distinguishes the tool from siblings like create_filter and list_filters.
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 highlights irreversibility and that confirm must be True to delete, guiding cautious use. However, it does not explicitly mention when not to use or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_by_hostnameC
Look up a single agent by hostname. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| hostname | Yes |
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 disclose behavioral traits. It does not mention read-only nature, required permissions, or side effects. The phrase 'look up' suggests read-only, but no explicit confirmation.
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, consisting of two short sentences. However, the parameter description is inline rather than separated, which slightly reduces clarity.
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 lookup tool, the description is minimal but functional. It does not explain error handling, uniqueness of hostname, or the significance of the output schema. Given the number of sibling tools, a bit 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 0%, so the description must compensate. It adds meaning for the 'server' parameter ('which configured server to target (default active/default)') but provides no clarification for 'hostname' beyond the parameter name.
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 'Look up' and the resource 'single agent by hostname', indicating a targeted retrieval. It distinguishes from the sibling 'list_agents' which returns all agents, but does not explicitly mention this differentiation.
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 lacks guidance on when to use this tool versus alternatives like 'list_agents' or when not to use it. It only implies usage when you have a specific hostname, but no explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alertB
Retrieve a single alert document by its id (searches v11-alert-* by id). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| alert_id | Yes |
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 the description must carry the full burden. It mentions searching by ID and index pattern, but fails to disclose error behavior, authentication needs, or any side effects. Minimal behavioral 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 concise sentences, front-loaded with the core purpose. No extraneous 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 presence of many sibling alert tools and an output schema, the description is minimally adequate. It covers basic retrieval and index but lacks usage context and edge-case behavior.
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 0%, so the description must compensate. It explains the 'server' parameter with default behavior, but does not describe 'alert_id' beyond the schema's title. Partial value added, but incomplete.
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 verb 'Retrieve' and resource 'single alert document by its id', clearly distinguishing it from sibling tools like search_alerts that return multiple alerts.
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 like search_alerts or get_alerts_for_response. The description implies single-alert retrieval by ID but does not clarify when to prefer it over other alert-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alerts_for_responseA
Poll NEW OPEN alerts at/above a severity threshold, projected to the fields needed for incident-response triage. Designed for the monitoring loop: returns a compact signal instead of full alert documents.
For each alert returns: id, time, name, severity, status, category, technique, adversaryIp, targetUser, host (dataSource), dataType. Plus a total count.
Use the returned host to target run_agent_command and adversaryIp/
targetUser as mitigation parameters. (Only structured fields are surfaced;
never build a command out of free-text alert content.)
Args: since: start of the look-back window (relative 'now-5m' or absolute ISO). min_severity: 'Low' | 'Medium' | 'High' | 'Critical' (inclusive threshold). size: max alerts to return. include_in_review: also include status 'In Review' (3), not just 'Open' (2). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| since | No | now-5m | |
| server | No | ||
| min_severity | No | High | |
| include_in_review | No |
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 fully explains the behavior: it returns a compact subset of alert fields and a total count. It also details the effect of the include_in_review parameter (including status 'In Review' vs just 'Open'). Side effects are absent, and the description is transparent about return format.
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 well-structured: a concise summary sentence, a list of returned fields, usage guidance, and parameter details. Every sentence adds valuable information without repetition or 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 presence of an output schema (not shown), the description appropriately omits return type details but still explains the fields and their usage. It includes a total count but does not cover edge cases like empty results. Overall, it is sufficiently complete for a polling 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 0%, so the description must explain all parameters. It does so thoroughly: 'since' as a look-back window, 'min_severity' with values and inclusive threshold, 'size' as max alerts, 'include_in_review' with status mapping, and 'server' as target. This adds significant 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?
The description clearly states it polls 'NEW OPEN alerts at/above a severity threshold' for 'incident-response triage' and mentions returning a 'compact signal'. This distinguishes it from siblings like search_alerts, get_alert, and count_open_alerts, making the purpose unmistakable.
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 says it is 'Designed for the monitoring loop' and advises on using returned fields for other tools (e.g., run_agent_command) and warns against building commands from free-text. It does not explicitly state when not to use it, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_correlation_ruleB
Get the full definition of a correlation rule by id (where/afterEvents/groupBy/...). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| rule_id | Yes |
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 the burden of disclosing behavior. It explains the tool returns a full definition but does not mention idempotency, server targeting implications, or required permissions. The existence of an output schema helps but the description lacks explicit behavioral traits.
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 brief (two sentences) and front-loaded with the main purpose. However, the second sentence about server is slightly unclear ('default active/default') and could be more precise. 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?
Given the tool's simplicity (2 parameters, output schema provided), the description covers the core function but omits usage context, behavioral details, and full parameter semantics. It is adequate but leaves gaps for an AI agent to infer.
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 0%, so the description must add meaning. It partially explains 'server' as targeting a configured server with a default of 'active/default', but does not detail acceptable values or behavior. 'rule_id' is not elaborated beyond being a required integer. The description adds some value but not full clarity.
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 the full definition of a correlation rule by ID, mentioning specific fields like 'where/afterEvents/groupBy'. This distinguishes it from sibling tools such as list_correlation_rules (which lists summaries) and create/update/delete operations.
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 is provided on when to use this tool versus alternatives, such as list_correlation_rules for a summary or set_correlation_rule_active for status changes. There is no mention of exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_field_valuesA
Return the distinct values for a field (use the .keyword suffix for text fields). Example: field='dataSource.keyword', index_pattern='v11-log-wineventlog-*'. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | ||
| server | No | ||
| index_pattern | Yes |
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 explains the return of distinct values and the server targeting, but does not disclose behavior such as maximum values returned, performance implications, or error handling. The example is helpful but insufficient for complete 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?
The description is concise with three sentences, each adding value. The first sentence clearly states the purpose, followed by an example and parameter clarification. 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?
The tool has 3 parameters with no annotations, and an output schema exists. The description covers field and server sufficiently but lacks detail on index_pattern and return format. While the output schema can explain return values, the description could be more complete about prerequisites (e.g., index must exist) or limitations.
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 0% description coverage for parameters. The description adds meaning for 'field' (suffix usage, example) and 'server' (default active/server), but 'index_pattern' is only implicitly mentioned in the example. Overall, it compensates well for the lack of schema 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 returns distinct values for a field, which is a specific verb+resource. However, it does not explicitly differentiate from the sibling tool 'get_field_values_with_count' which also returns values but with counts.
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 an example and hints at using .keyword suffix for text fields, but does not specify when to use this tool versus alternatives like get_field_values_with_count or search_logs. No when-not or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_field_values_with_countB
Return distinct field values together with their occurrence counts (terms aggregation). Great for 'top event codes', 'events per host', 'users seen', etc. Example: index='v11-log-wineventlog-*', field='log.eventCode'. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | now | |
| top | No | ||
| field | Yes | ||
| index | Yes | ||
| start | No | now-24h | |
| server | No | ||
| filters | No | ||
| order_by_count | No |
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 fully disclose behavior. It mentions terms aggregation and server targeting but omits key behaviors like default time range, top limit, ordering, and filtering 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?
The description is concise with front-loaded purpose and minimal extra lines, though the structure could be improved with explicit parameter sections.
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 8 parameters, 0% schema coverage, and no annotations, the description is too brief to adequately inform correct usage, despite the presence of an 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 description coverage is 0%, yet the description only explains 'index', 'field' (via example) and 'server', leaving 5 parameters (top, start, end, filters, order_by_count) completely undocumented.
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 returns distinct field values with counts (terms aggregation), with example use cases and a concrete example, distinguishing it from sibling 'get_field_values'.
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 example use cases ('top event codes', 'events per host') implying when to use, but lacks explicit when-not-to-use or comparison to alternatives like 'get_field_values'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_filters_by_pipelineC
List the filters attached to a given pipeline id. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| pipeline_id | Yes |
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. Only states it lists filters; does not disclose behavior like what happens if pipeline_id is invalid, return format, or permissions needed. Minimal for a read 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?
Two sentences: first clearly states purpose, second describes one parameter. Concise and front-loaded. Could be slightly improved by structuring or adding the missing parameter info inline.
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?
Has output schema (not provided) and no annotations; description covers basic purpose and one parameter but omits return value, error cases, and full parameter details. Adequate for a simple read tool but not complete.
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 0%; description adds meaning for server parameter ('which configured server to target (default active/default)'). pipeline_id is implied by context but not described in depth. Partially compensates for missing schema 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?
Statement 'List the filters attached to a given pipeline id' uses specific verb 'List' and resource 'filters attached to pipeline', distinguishing from siblings like list_filters (all filters) and create_filter. However, it could be more explicit about the required pipeline_id parameter.
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 (e.g., list_filters for listing all filters, get_correlation_rule for other resources). Agent must infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incidentA
Get a single incident by id. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| incident_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, and the description does not disclose behavioral traits such as authentication requirements, error handling, or whether it modifies state. The read-only nature is implied but 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?
Two concise sentences front-load the primary action and explain the server parameter. No extraneous content.
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, return values need not be explained. But the description lacks context about usage scenarios, error cases, or relationship to other incident tools.
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 0%, but the description explains the 'server' parameter's purpose and default. However, 'incident_id' is not described beyond its name and type from 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?
Clearly states 'Get a single incident by id.' which is a specific verb and resource, and distinguishes from sibling tools like list_incidents (for multiple incidents) and create_incident.
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 or when not, but the purpose implies it is for retrieving one incident by ID. Lacks alternative suggestions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_index_propertiesA
List the field names and types available in an index pattern. Use this to discover which fields you can filter on (text fields have a .keyword twin). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| index_pattern | No | v11-log-wineventlog-* |
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. Discloses no behavioral traits beyond the basic operation. Missing details on side effects, authentication needs, or rate limits.
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 short, focused sentences. First sentence defines purpose, second adds usage hint, third explains server parameter. 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?
Adequate for a simple listing tool with output schema. Covers purpose, usage, and one parameter. Only minor gap: index_pattern parameter not explicitly described.
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 0%, but description explains the 'server' parameter (target server). The 'index_pattern' parameter is not described in text, though its purpose is implied by the tool's main description. Partially compensates for low 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?
Clearly states verb 'list' and resource 'field names and types available in an index pattern'. Distinguishes from sibling tools like list_indices and list_index_patterns by focusing on field metadata within an index pattern.
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?
Provides explicit usage context: 'Use this to discover which fields you can filter on', with a helpful hint about '.keyword twin'. Lacks explicit when-not-to-use or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionA
Get the UTMStack API/server version. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No |
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 for behavioral disclosure. It only states the action without revealing traits like being read-only, error handling, or response format.
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: one for purpose and one for parameter explanation. No extraneous content.
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 simple tool with one optional parameter and an output schema, the description is adequate but lacks mention of prerequisites or defaults behavior beyond the parameter note.
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 0%, but the description adds meaning by explaining the 'server' parameter as 'which configured server to target (default active/default)'. This compensates for the schema lacking 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 'Get the UTMStack API/server version', which is a specific verb and resource. It is distinct from all sibling tools, none of which are version-related.
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. It doesn't state prerequisites, when to use the 'server' parameter, or indicate that this is a simple read operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agent_commandsA
List the history of remote commands sent to agents, with their status and output. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| search | No | ||
| server | No | ||
| sort_by | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions server parameter default, but lacks details on pagination, ordering, read-only nature, or output specifics. Some behavioral info, but insufficient to fully inform an AI agent.
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 purpose. No fluff, but could be slightly more structured. Efficient for its length.
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?
Output schema exists, so return values are covered. However, with 5 parameters and only one explained, the description leaves gaps. Adequate but not comprehensive.
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 0%, meaning no parameter descriptions in schema. Description only adds meaning for 'server' (target server default). No explanation for page, size, search, sort_by. Minimal compensation for low 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 lists the history of remote commands sent to agents, including status and output, distinguishing it from siblings like run_agent_command (send commands) and list_agents_with_commands (list agents with 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?
No explicit when-to-use or alternatives. Usage is implied by the description, but no guidance on when not to use or compared to similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agentsC
List UTMStack agents (endpoints). Shows hostname, ip, os, status, version, id. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| search | No | ||
| server | No |
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 fully disclose behavior. It mentions the server parameter's meaning but does not describe pagination behavior (page/size), the effect of the search parameter, or any potential side effects (none expected, but not stated). The description lacks critical behavior details for a listing 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 very short (two sentences) and front-loads the main purpose. The second sentence awkwardly explains the server parameter without formatting or integration with the schema. While concise, it is not well-structured and misses the opportunity to efficiently describe all parameters in a consistent format.
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 4 parameters (all undocumented in schema) and no output schema shown in the description, the description should provide more context. It does mention the output fields but omits pagination and search behavior. The description is incomplete for an agent to fully understand the tool's capabilities and limitations.
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 0% description coverage, leaving all parameters undocumented. The description only partially explains the 'server' parameter ('which configured server to target (default active/default)'), but provides no semantics for 'page', 'size', or 'search'. This is insufficient for an agent to use parameters correctly without additional knowledge.
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 action (list agents) and the resource (UTMStack endpoints), and lists the fields returned (hostname, ip, os, status, version, id). This makes the purpose specific and distinguishable from sibling tools like list_agent_commands or get_agent_by_hostname. However, it does not mention pagination or the search/filter capability, which slightly reduces clarity.
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?
There is no guidance on when to use this tool versus alternatives (e.g., get_agent_by_hostname for a single agent, or list_agents_with_commands for command history). It also fails to note that the 'search' parameter can be used to filter results. The description provides no context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agents_with_commandsA
List agents that support remote command execution. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavioral traits. It only states the action (list agents that support remote command execution) but omits any details about side effects, permissions required, rate limits, or return value structure. The lack of behavioral context is a significant gap for agent decision-making.
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, consisting of two sentences. The first sentence states the primary purpose, and the second documents the single parameter. Every word is functional, 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 list tool with one parameter and an output schema, the description covers the basic purpose and parameter meaning. However, it lacks usage guidelines and behavioral transparency, which are important for contextual completeness given the number of sibling tools.
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 no descriptions (0% coverage), but the description adds meaning by explaining the 'server' parameter: 'which configured server to target (default active/default).' This clarifies the parameter's role and default behavior, compensating for the schema's lack of documentation.
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: 'List agents that support remote command execution.' It uses a specific verb ('List') and resource ('agents that support remote command execution'), effectively distinguishing it from sibling tools like 'list_agents' (which presumably lists all agents) and 'list_agent_commands' (which lists commands for an agent).
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 usage guidance is provided. The description does not indicate when to use this tool over alternatives like 'list_agents' or 'run_agent_command'. There are no mentions of prerequisites, context, or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_correlation_rulesA
List/search correlation (detection) rules. search: free text on rule name. data_types: e.g. 'wineventlog' or 'linux'. active: 'true' or 'false' to filter by activation state. Returns id, name, definition (the matching expression), ruleActive, category. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| active | No | ||
| search | No | ||
| server | No | ||
| data_types | No |
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 carry the transparency burden. It discloses return fields and server targeting, but does not mention pagination behavior (page/size) or any rate limits. It lacks detail on what happens with default parameters.
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 compact and well-structured, using a single line for the main action followed by parameter explanations. Every sentence adds value, and the format is easy to parse.
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 covers core functionality and return fields, but missing details on pagination (page/size) and sorting. Given an output schema exists, the return field list is sufficient, but the omission of pagination guidance is a gap.
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 0%, but the description adds meaning for 4 of 6 parameters (search, data_types, active, server). It omits page and size, which are left to their default values. This partial explanation meets the baseline for a 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's purpose as 'List/search correlation (detection) rules,' specifying the verb and resource. It distinguishes from siblings like 'get_correlation_rule' and other entity-specific 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?
The description explains how to use each parameter (search, data_types, active, server) with examples and defaults. It provides clear context for filtering and targeting servers, though it does not explicitly contrast with alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_data_input_statusesA
List data-input connection statuses (which sources are sending data). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| server | No |
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, and the description only indicates a read-like operation ('list'). It does not disclose potential side effects, authorization needs, or rate limits. For a tool with no annotations, more transparency is needed.
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 purpose is front-loaded, and the parameter explanation is inline and brief.
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 3 parameters and an output schema, the description is adequate but lacks depth. It doesn't explain output contents (though schema exists) or provide usage examples, making it minimally 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 description explains the 'server' parameter beyond the schema, but provides no details for 'page' or 'size'. With 0% schema description coverage, the description partially compensates but leaves gaps for half the parameters.
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 data-input connection statuses, with a parenthetical clarifying meaning. It is a specific verb+resource combination that distinguishes from sibling list tools like list_indices or list_servers.
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 when checking data input statuses, but does not provide explicit guidance on when to use versus alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filtersC
List data filters (Logstash pipeline filters that normalize/transform incoming logs). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| server | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It does not disclose that results are paginated (despite 'page' and 'size' parameters), whether authentication is required, what happens if an invalid server is specified, or what the default server behavior is. The description only hints at server targeting without explaining the default behavior.
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 short (two sentences) and avoids verbosity, which is good. However, it is under-structured: it combines purpose and parameter description in a run-on manner. A more structured format (e.g., listing parameters) would improve readability without adding length.
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 existence of an output schema, the description is not required to detail return values, but it still fails to provide context about pagination, the meaning of 'page' and 'size', and how server selection works. With three parameters and related sibling tools, the description is incomplete for effective agent use.
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 0%, so the description must compensate. It only partially describes the 'server' parameter ('which configured server to target (default active/default)'), but provides no explanation for 'page' or 'size' parameters. The default values from the schema are not reiterated or explained, leaving ambiguity about pagination behavior.
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 'List' and resource 'data filters' with a helpful parenthetical explanation of what these filters are (Logstash pipeline filters that normalize/transform incoming logs). However, it does not distinguish itself from the sibling tool 'get_filters_by_pipeline', which likely lists filters for a specific pipeline, missing an opportunity for differentiation.
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 is provided on when to use this tool versus alternatives like 'get_filters_by_pipeline'. The description lacks context on prerequisites, such as needing to select a server first via 'use_server', or whether this tool returns filters for the active server or all servers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incidentsC
List incidents. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| sort | No | id,desc | |
| server | No |
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 only states 'List incidents' and mentions the server parameter, but does not disclose pagination, sorting behavior, rate limits, or permissions.
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 very short and front-loaded, with two sentences. It is concise, but the lack of detail for most parameters prevents a higher score.
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 parameters and no annotations, the description is incomplete. It omits pagination, sorting, output format (though an output schema exists), and any behavioral context beyond the server parameter.
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 0%, yet the description only explains the 'server' parameter. Parameters 'page', 'size', and 'sort' are left entirely unexplained, despite having defaults and clear semantics that should be documented.
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 'List incidents,' which is a specific verb and resource. However, it does not differentiate from sibling tools like 'get_incident' (singular) or other list tools, but the resource target is distinct.
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. No exclusions, context, or alternative tool mentions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_index_patternsB
List available index patterns (e.g. v11-log-wineventlog-, v11-log-linux-). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No |
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 the description must disclose behavior. It only mentions the server parameter default, but does not indicate side effects, safety, or permissions. The read-only nature is implied but not explicit.
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 explains the purpose with examples, second explains the parameter. No wasted words, 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?
For a simple list tool with an output schema, the description is adequate but minimal. It covers the parameter well but does not describe the return value, relying on the output schema. It meets the minimum for a straightforward 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?
The schema has 0% description coverage, so the description adds value by explaining that 'server' specifies which configured server to target and its default (active/default). This compensates for the bare 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 it lists available index patterns with examples (e.g., v11-log-wineventlog-*). It distinguishes from siblings like 'list_indices' by focusing on patterns, but does not explicitly differentiate.
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 like 'list_indices' or 'get_index_properties'. The description does not mention context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_indicesC
List all OpenSearch indices with health, doc counts and sizes. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| server | No |
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 the description lacks behavioral details like read-only nature, permissions, or pagination behavior. It only mentions listing indices with health and sizes.
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 very concise (two sentences), but the parameter info is embedded awkwardly. It could be better structured with separate parameter descriptions.
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?
Despite having an output schema, the description is incomplete: it omits usage context, parameter semantics for page/size, and behavioral notes. The tool is simple but the description could still be more comprehensive.
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 description covers only the 'server' parameter with a brief explanation. The critical pagination parameters 'page' and 'size' are left unexplained, and schema coverage is 0%.
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 OpenSearch indices and specifies the returned info: health, doc counts, and sizes. This distinguishes it from siblings like list_index_patterns.
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 alternatives such as search_logs or list_index_patterns. The description only states what it does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_serversA
List all configured UTMStack servers (name, base URL, auth mode) and show
which is the active and default one. Use the server argument on any tool, or
use_server(), to target a specific one. Does not reveal secrets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description partially covers behavior by stating it does not reveal secrets, which implies safe read-only operation. However, it does not explicitly confirm no side effects, leaving some ambiguity. The statement about active/default is helpful but not a full behavioral disclosure.
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 with no wasted words. The action verb 'List' front-loads the purpose, and each sentence adds distinct value (what is listed, how to use the results, and a safety note).
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 zero parameters and an existing output schema, the description fully covers the tool's purpose and usage context. It explains the output contents and how to leverage them, which is complete for a list tool of this nature.
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?
No parameters exist, so schema coverage is 100%. Baseline for 0 parameters is 4. The description adds no parameter info, which is acceptable as there are none.
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 configured UTMStack servers, specifying attributes (name, base URL, auth mode) and indicating active/default. It differentiates from sibling list tools like list_indices or list_agents by its focus on server configuration.
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?
Provides concrete guidance on how to use the output: by referencing a server via the `server` argument on any tool or using use_server(). This implies using list_servers before targeting a server, though not explicitly stating 'when to use'. It does not mention alternatives but the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_supported_data_typesA
List the data types UTMStack supports (wineventlog, linux, suricata, ...). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the burden. It explains the parameter but does not disclose if the operation is read-only, requires authentication, or has any side effects. However, the tool is a simple listing, so minimal disclosure is acceptable.
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 purpose and a concise parameter explanation. 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?
Given the low complexity and presence of an output schema, the description is sufficient. It could mention that the output lists data type identifiers, but that is handled by the 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 0%, but the description adds meaning to the 'server' parameter by explaining its purpose and default value. This compensates for the lack of schema 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's function: listing supported data types, with examples. It distinguishes from siblings like list_indices and list_servers by focusing on data types.
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. The description only explains what it does, not when to invoke it or when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_alert_false_positiveB
Mark one or more alerts as a false positive (sets status=Completed and adds a 'False positive' tag). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| alert_ids | Yes | ||
| observation | No | Confirmed false positive |
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 but only states the immediate effect. It does not disclose permissions, reversibility, or side effects. Adequate but not thorough.
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 with no repetition. Includes parameter info inline, though parameter details could be better structured. One sentence plus a line is 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 0% schema coverage and no annotations, the description is incomplete. Lacks explanation of output, optionality of observation, or the 'False positive' tag behavior. Brief but insufficient for full agent understanding.
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 0%. Description adds meaning only for 'server' (target configured server), but provides no explanation for required 'alert_ids' or optional 'observation' parameter 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 (mark as false positive) and the specific effects (sets status=Completed, adds 'False positive' tag), distinguishing it from related sibling tools like change_alert_status or add_alert_tags.
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 (e.g., change_alert_status, add_alert_tags). The description only explains what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingA
Health-check the UTMStack server and confirm auth is valid. Returns the server's /api/ping response (should be "OK"). server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| server | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return value and purpose, but with no annotations, lacks disclosure on safety, rate limits, or failure behavior. 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?
Extremely concise: two sentences plus parameter note. All information front-loaded, no filler.
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 tool simplicity and presence of output schema, description covers purpose, return, and parameter. Minor gap: no error case explanation.
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 has 0% description coverage; description adds meaning for 'server' parameter (target selection and default). Effectively compensates for missing schema 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?
Clearly states verb 'Health-check' and resource 'UTMStack server', specifying auth validation. Distinct from all sibling tools which perform other operations.
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?
Implicitly for connectivity/auth checks but no explicit when-to-use or when-not-to-use guidance. No alternatives mentioned, though tool is unique.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_serverA
Remove a configured UTMStack server connection by name and save.
Deletes the connection (including its stored credentials) from the config file and applies the change to this session immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the connection and stored credentials are deleted, and changes apply immediately. Without annotations, this provides essential behavioral insight. No mention of reversibility or 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 sentences, zero filler. Front-loaded with action and resource, then details delete and persistence effects.
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 deletion tool with one parameter and an output schema, the description fully covers purpose, effect, and scope. No missing context given complexity.
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?
Only one parameter 'name' with no schema description. The description mentions 'by name' but does not add format or validation details. Schema coverage is 0%, so description compensates partially but minimally.
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 the tool removes a configured server connection by name. The verb 'remove' is specific and the resource 'server connection' is unambiguous. Distinguished from siblings like configure_server and use_server.
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 like list_servers to find the name or configure_server to modify. Does not mention prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_agent_commandA
Run a shell command on an agent via the interactive console and return its output.
DANGER: this executes the command for real on the live endpoint identified by
hostname (same capability as the UTMStack web "interactive console"). Treat
it like a remote shell — only run commands you are authorized to run there.
Mechanism: opens a STOMP-over-SockJS session at /ws (xhr-polling transport), SUBSCRIBEs to /user/topic/{hostname}, SENDs the command to /app/command/{hostname}, and returns the MESSAGE output. Requires a JWT (the target server's user+pass or static jwt) — the Utm-Api-Key alone is rejected by the console endpoint.
Args: hostname: target agent hostname (must support remote commands). command: the shell command line to execute. shell: "cmd" (Windows) or "bash" (Linux). Auto-detected from the agent OS when left blank. timeout_seconds: max time to wait for command output. server: which configured server to target (default active/default).
Returns a JSON blob with the command output (or an error/diagnostic).
| Name | Required | Description | Default |
|---|---|---|---|
| shell | No | ||
| server | No | ||
| command | Yes | ||
| hostname | Yes | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses behavior: it executes commands on a live endpoint, requires JWT (not just API key), uses STOMP/WebSocket mechanism, and returns JSON output. The danger warning and mechanism details provide high transparency beyond simple execution.
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 well-structured: purpose, danger, mechanism, args, return. The mechanism paragraph is somewhat technical (STOMP, SockJS) but useful for an agent. Could be slightly more concise, but the structure aids comprehension.
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 and danger, the description covers purpose, authorization requirements, execution mechanism, parameter details, and return format. The presence of an output schema (mentioned) reduces need to detail return value structure. Includes error/diagnostic mention. Very complete for a high-risk 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 0%, so description must add meaning. It explains each parameter: hostname (target agent), command (shell line), shell (auto-detected when blank), timeout_seconds (max wait), server (which configured server). This clarifies defaults and behavior beyond the schema's bare names.
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 runs a shell command on an agent via the interactive console and returns output, distinguishing it from siblings like `can_run_command` (capability check) and `list_agent_commands` (listing history). The verb 'Run' and resource 'shell command on an agent' are specific.
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 strong context: 'DANGER: this executes the command for real' and 'Treat it like a remote shell — only run commands you are authorized to run there.' However, it does not explicitly mention alternatives or when not to use it, e.g., using `can_run_command` first. Nonetheless, the warning and authorization guidance are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_sqlC
Run a SQL query against the log/alert data (UTMStack SQL editor). Index names are used UNQUOTED as table names. Example: SELECT dataType, COUNT() FROM v11-log- WHERE @timestamp BETWEEN DATE_SUB(NOW(), INTERVAL 1 DAY) AND NOW() GROUP BY dataType; server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| query | Yes | ||
| server | No |
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 the description must bear full burden. It does not disclose whether SQL queries can be write operations (e.g., INSERT/UPDATE/DELETE) or only reads. The example shows a SELECT, but this is insufficient to infer safety.
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 relatively short but includes a lengthy example. It is front-loaded with the purpose but contains some waste (e.g., repeating server info). Could be more concise while adding missing details.
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 4 parameters, no annotations, and an output schema, the description leaves significant gaps: no detail on return format, no pagination handling, and no behavioral constraints. It is only partially complete.
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 0%, so description must explain all parameters. It covers 'query' and 'server' but omits 'page' and 'size', which are left to defaults with no explanation of their purpose (likely pagination).
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 runs a SQL query against log/alert data and provides an example. It identifies the resource (UTMStack SQL editor) and action, but does not explicitly differentiate from sibling tools like search_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 includes an example and notes on index naming and server targeting. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., search_logs) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_alertsB
Search alerts in the v11-alert-* index.
filters: optional list of filter objects, each {"field","operator","value"}. Operators: IS, IS_NOT, IS_ONE_OF, CONTAIN, START_WITH, ENDS_WITH, EXIST, IS_BETWEEN, IS_GREATER_THAN, IS_LESS_THAN. Useful fields: name.keyword, severityLabel, statusLabel, status, dataSource.keyword, target.user, adversary.ip, category.keyword, technique.keyword, tags. start/end: relative (now-7d) or absolute ISO timestamps for the @timestamp window. server: which configured server to target (default active/default). Example filters: [{"field":"severityLabel","operator":"IS","value":"High"}]
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | now | |
| page | No | ||
| size | No | ||
| sort | No | @timestamp,desc | |
| start | No | now-24h | |
| server | No | ||
| filters | No |
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 the full burden. It explains filter syntax, date formats, and server selection. However, it does not disclose pagination behavior, sorting details, output format, or whether the operation is read-only. This leaves gaps in behavioral understanding.
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 fairly concise and structured with clear sections for filters and timestamps. It uses bullet-like formatting but includes an example, which is helpful. Minor redundancy (e.g., repeating 'optional list of filter objects') but overall 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 7 parameters, no schema descriptions, and an output schema (not shown), the description covers only filters, timestamps, and server. It misses pagination (page, size) and sorting (sort), and does not describe the return structure. This leaves significant gaps for an agent to use the tool correctly.
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 0%, so the description must add meaning. It explains filters (operators, useful fields), start/end (relative/absolute), and server. However, it omits explanation for page, size, and sort parameters, which are present in the schema but undocumented.
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 alerts in the v11-alert-* index,' which specifies a verb and resource. However, it does not differentiate this tool from siblings like search_logs or get_alert, preventing a score of 5.
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 details on how to use filters and timestamps, implying when the tool is appropriate (searching alerts). But it lacks explicit guidance on when not to use it or alternatives, such as using get_alert for a single alert or search_logs for logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_logsA
Search raw logs in any index pattern.
index_pattern: e.g. v11-log-wineventlog-, v11-log-linux-, v11-log-*. filters: list of {"field","operator","value"}. Common windows fields: log.eventCode, dataSource.keyword, target.user, origin.ip, log.eventDataScriptBlockText, log.message. Linux: log.message, action. start/end: relative or absolute @timestamp window. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | now | |
| page | No | ||
| size | No | ||
| sort | No | @timestamp,desc | |
| start | No | now-24h | |
| server | No | ||
| filters | No | ||
| index_pattern | No | v11-log-* |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries burden. Discloses search and filter capabilities, but omits details on pagination, rate limits, authorization, or handling large datasets.
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?
Concise single sentence followed by parameter explanations. No redundant text, front-loaded with core purpose.
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?
Covers key parameters and examples. Output schema handles return values, so no need to describe. Missing some guidance on pagination and when to use alternatives.
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?
Covers index_pattern, filters, start/end, and server with examples, but omits page, size, sort. With 0% schema coverage, description partially compensates but is incomplete.
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 'Search raw logs in any index pattern', specifying the verb, resource, and scope. Distinguishes from sibling tools like search_alerts and list_indices.
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?
Provides examples for index patterns, filters, and time ranges. Implicitly guides usage for raw log search, but lacks explicit when-not-to-use or alternatives like run_sql.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_correlation_rule_activeB
Activate or deactivate a correlation rule by id. server: which configured server to target (default active/default).
| Name | Required | Description | Default |
|---|---|---|---|
| active | Yes | ||
| server | No | ||
| rule_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the mutation action (activate/deactivate), so the agent knows it's a state-changing operation. However, it lacks details on side effects, required permissions, or error behavior when rule_id is invalid.
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 with two sentences. The second sentence provides a parameter note but could be integrated more elegantly. No superfluous content.
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 mutation tool with 3 parameters and an output schema (not shown), the description covers the basic purpose and one parameter. It lacks usage guidelines and behavioral details, making it just 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 coverage is 0%, and the description only explains the 'server' parameter. It does not add meaning for 'rule_id' or 'active' beyond their names and types. For a tool with 0% schema coverage, this is insufficient but baseline is 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 action ('activate or deactivate') and the resource ('correlation rule by id'). It distinguishes from sibling tools like get_correlation_rule, create_correlation_rule, and delete_correlation_rule by focusing on changing activation 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?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., rule must exist) or when to use this tool instead of creating or deleting rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_serverA
Set the active UTMStack server for subsequent tool calls (until changed).
A per-call server= argument still overrides this. See list_servers() for names.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
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 bears full burden. It discloses state change and override behavior but lacks details on permissions, scope persistence, and 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 with key action front-loaded, 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?
Adequate for a simple setter tool; references sibling for valid names and mentions override. Lacks scope duration and error handling but 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?
Schema coverage is 0%, but description adds critical context by linking the name parameter to list_servers, though more format/constraints would help.
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 'Set' and the resource 'active UTMStack server', and references a sibling tool for valid names, distinguishing it from similar 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?
Explicitly states when to use (for subsequent tool calls), when not to use (per-call override exists), and directs to list_servers for valid names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiA
Show how a configured server is set up (base URL and auth mode) — the
active/default server, or the one named in server. Does not reveal secrets.
Use list_servers() to see every configured server.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description notes the tool does not reveal secrets and specifies it shows config for active/default or named server. This is transparent for a read-only informational 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?
Two sentences, information-dense and front-loaded. No wasted words, every part 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?
The description explains what the tool shows (base URL and auth mode), what it does not show (secrets), and scope (active/default or named server). Output schema exists, so return values are covered. Complete for a simple info 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?
The only parameter 'server' is described as 'the one named in `server`', adding meaning beyond the schema's default value. Schema coverage is 0%, but the description compensates.
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 shows server configuration (base URL and auth mode) for the active/default server or a named server, distinguishing it from list_servers.
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 advises to use list_servers() to see all configured servers, indicating when not to use whoami, and implies using it to check current server setup.
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.
44 tool updates
v1.0.1- First observed
add_alert_notes - First observed
add_alert_tags - First observed
can_run_command - First observed
change_alert_status - First observed
change_incident_status - First observed
configure_server - First observed
count_events - First observed
count_open_alerts - First observed
create_correlation_rule - First observed
create_filter - First observed
create_incident - First observed
delete_correlation_rule - First observed
delete_filter - First observed
get_agent_by_hostname - First observed
get_alert - First observed
get_alerts_for_response - First observed
get_correlation_rule - First observed
get_field_values - First observed
get_field_values_with_count - First observed
get_filters_by_pipeline - First observed
get_incident - First observed
get_index_properties - First observed
get_version - First observed
list_agent_commands - First observed
list_agents - First observed
list_agents_with_commands - First observed
list_correlation_rules - First observed
list_data_input_statuses - First observed
list_filters - First observed
list_incidents - First observed
list_index_patterns - First observed
list_indices - First observed
list_servers - First observed
list_supported_data_types - First observed
mark_alert_false_positive - First observed
ping - First observed
remove_server - First observed
run_agent_command - First observed
run_sql - First observed
search_alerts - First observed
search_logs - First observed
set_correlation_rule_active - First observed
use_server - First observed
whoami
TDQS
Scored across 44 tools
Most tools have clear, distinct purposes. Some overlap exists between alert search/get and agent lookups, but they serve different query needs. Overall, an agent should be able to differentiate them.
Predominantly verb_noun snake_case, with some deviations like 'ping', 'whoami', and 'can_run_command'. The pattern is consistent enough for predictable navigation.
44 tools is on the heavy side for a single server, covering multiple domains (alerts, incidents, agents, rules, filters). While each tool serves a purpose, the count borders on excessive.
The tool surface is comprehensive for SIEM operations, covering CRUD for alerts, incidents, rules, and filters. Minor gaps exist (e.g., no update incident details or agent modification) but core workflows are well-supported.
Maintenance
Related MCP Connectors
SOAR security playbooks for AI agents: fetch, full-text search, and count. Metered via Stripe.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Connect AI assistants to Xitoring monitoring: servers, uptime, incidents, metrics, SSL, and alerts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceBridges AI assistants with Wazuh SIEM infrastructure, providing natural language access to security alerts, vulnerability analysis, CVE databases, and network documentation for security operations.MIT
- AlicenseNot gradedqualityAmaintenanceBrings the full AlertLogic MDR platform into AI assistants, exposing 473+ tools for incident response, log search, SOAR automation, and multi-account security operations at MSSP scale.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to query Wazuh security alerts, investigate hosts, detect brute-force attempts, and generate security summaries by connecting to a Wazuh manager.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to operate a Splunk SOAR instance headlessly via its REST API, supporting container triage, playbook authoring and execution, and asset management.2MIT