zeek-mcp
zeek-mcp is an MCP server that enables AI clients to query, analyze, and correlate Zeek and Suricata network security logs for threat detection and incident response through 39 structured tools.
Connection Analysis
Search connection logs with filters for IP (CIDR), port, protocol, duration, bytes, state, and time range
Get statistical summaries of top talkers, services, and byte volumes
Find long-lived connections indicating potential C2 beacons, tunnels, or backdoors
DNS Analysis
Query DNS logs with wildcard matching, query type, and response code filtering
Detect DNS tunneling via Shannon entropy analysis and DGA via NXDOMAIN counts
HTTP Analysis
Search HTTP logs by host, URI, method, user agent, status code, and MIME type
Find suspicious activity: POSTs to raw IPs, unusual agents, base64 in URLs
SSL/TLS Analysis
Search SSL/TLS logs by SNI, version, validation status, subject, and issuer
Find expired or self-signed certificates indicating MITM or malicious infrastructure
File Analysis
Search file extraction logs by MIME type, filename, hash (MD5/SHA256), and size
Find executable downloads (PE, ELF, scripts) indicating malware delivery
SSH & Security Notices
Search SSH logs and detect brute force attempts
Query Zeek security notices (scans, invalid certs, protocol violations)
DHCP & Asset Discovery
Search DHCP logs and build MAC-to-IP/hostname asset maps
Inventory detected software and versions on the network
Cross-Log Investigation
Investigate a host across all Zeek log types simultaneously
Follow a connection UID to reconstruct a complete session lifecycle
Advanced Analytics
Detect C2 beaconing via connection interval regularity and jitter scoring
Run anomaly detection for port scans, data exfiltration, and unusual ports
Extract and hunt known-malicious JA3/JA3S TLS fingerprints (CobaltStrike, Emotet, etc.)
Generate network baselines and detect statistical outliers
Suricata IDS Integration
Query and summarize Suricata alerts by signature, severity, IP, and protocol
Cross-reference Suricata alerts with Zeek logs via community ID or IP/port/time
View Suricata engine statistics
PCAP Analysis
List available PCAP files and replay them through Zeek for forensic investigation
Incident Response (TheHive & MISP)
Create and search TheHive alerts and cases with observables, severity, and TLP/PAP markings
Search MISP for IOCs (IPs, domains, hashes, URLs) — single or bulk
Create MISP events to share threat intelligence from findings
Sensor Management
Check sensor status: available logs, file sizes, record counts, freshness, and Suricata eve.json health
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., "@zeek-mcpshow me connection logs from 10.0.0.0/24 in the last hour"
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.
zeek-mcp is a Model Context Protocol (MCP) server that lets an AI client read, query, and correlate Zeek and Suricata network security monitoring logs. It exists because network telemetry lives in dense per-protocol log files (conn, dns, http, ssl, files, notice, plus Suricata eve.json) that are tedious to grep by hand during an investigation, and an LLM is good at pivoting across them if you give it structured access. It differs from a generic log-reader MCP by speaking Zeek and Suricata natively: it parses both JSON and TSV, understands CIDR and wildcard matching, walks date-rotated and gzipped archives, and ships purpose-built detections (beaconing, DNS tunneling, JA3 hunting, anomaly and baseline analysis) rather than handing the model raw text.
What it does
zeek-mcp turns a Zeek and Suricata sensor into a queryable surface for an AI agent doing network security monitoring (NSM). Point it at your Zeek log directory and Suricata eve.json, register it with any MCP client, and the model can search connection logs, follow a connection UID across every log type, profile DNS for DGA and tunneling, inspect SSL/TLS certificates and JA3 fingerprints, find executable downloads on the wire, cross-reference Suricata alerts against Zeek context, and escalate findings into TheHive or MISP. Detection logic that would otherwise be a pile of ad-hoc queries (C2 beaconing by interval regularity, statistical anomaly detection, network baselining) is exposed as first-class tools, so the agent asks one question instead of reconstructing the analysis from raw logs every time.
It reads logs; it does not run the sensor, mutate capture, or replace your SIEM. Everything is read-only against Zeek and Suricata data, with the single exception of the optional TheHive and MISP tools that create alerts, cases, and events when you provide credentials.
Related MCP server: Zeek-MCP
Installation
git clone https://github.com/lidless-labs/zeek-mcp.git
cd zeek-mcp
npm install
npm run buildPrerequisites
Node.js 20+
Zeek sensor generating logs (JSON or TSV format)
Suricata (optional, for IDS alert correlation)
Quickstart
zeek-mcp is published on npm and runs over stdio, so any MCP client can launch it with npx. Add this to your client's MCP config (the example below is for Claude Desktop / Claude Code, adjust env paths to your sensor):
{
"mcpServers": {
"zeek": {
"command": "npx",
"args": ["-y", "zeek-mcp"],
"env": {
"ZEEK_LOG_DIR": "/opt/zeek/logs/current",
"ZEEK_LOG_FORMAT": "tsv",
"SURICATA_EVE_LOG": "/opt/suricata/logs/eve.json"
}
}
}
}Then ask your agent something like "summarize the top talkers in the last connection log and flag any beaconing" and it will call the relevant tools.
To try it locally against the bundled sample data:
npx -y zeek-mcp # or: git clone, npm install, npm run build, then node dist/index.jsSet ZEEK_LOG_DIR to the included test-data/ directory to explore without a live sensor (see Development).
Usage
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"zeek": {
"command": "npx",
"args": ["-y", "zeek-mcp"],
"env": {
"ZEEK_LOG_DIR": "/opt/zeek/logs/current",
"ZEEK_LOG_FORMAT": "tsv",
"SURICATA_EVE_LOG": "/opt/suricata/logs/eve.json"
}
}
}
}Claude Code
claude mcp add zeek \
--env ZEEK_LOG_DIR=/opt/zeek/logs/current \
--env ZEEK_LOG_FORMAT=tsv \
--env SURICATA_EVE_LOG=/opt/suricata/logs/eve.json \
-- npx -y zeek-mcpAdd --scope user to make it available from any directory instead of only the current project.
OpenClaw
With the published package:
openclaw mcp set zeek '{
"command": "npx",
"args": ["-y", "zeek-mcp"],
"env": {
"ZEEK_LOG_DIR": "/opt/zeek/logs/current",
"ZEEK_LOG_FORMAT": "tsv",
"SURICATA_EVE_LOG": "/opt/suricata/logs/eve.json"
}
}'Or, when running from a source checkout instead of the npm package, point command/args at the built dist/index.js:
openclaw mcp set zeek '{
"command": "node",
"args": ["/absolute/path/to/zeek-mcp/dist/index.js"],
"env": {
"ZEEK_LOG_DIR": "/opt/zeek/logs/current",
"ZEEK_LOG_FORMAT": "tsv",
"SURICATA_EVE_LOG": "/opt/suricata/logs/eve.json"
}
}'Then restart the OpenClaw gateway so the new server is picked up:
systemctl --user restart openclaw-gateway
openclaw mcp list # confirm "zeek" is registeredCodex CLI
Codex CLI registers MCP servers via codex mcp add:
codex mcp add zeek \
--env ZEEK_LOG_DIR=/opt/zeek/logs/current \
--env ZEEK_LOG_FORMAT=tsv \
--env SURICATA_EVE_LOG=/opt/suricata/logs/eve.json \
-- npx -y zeek-mcpCodex writes the entry to ~/.codex/config.toml under [mcp_servers.zeek]. Verify with codex mcp list.
Standalone
ZEEK_LOG_DIR=/opt/zeek/logs/current ZEEK_LOG_FORMAT=tsv node dist/index.jsDevelopment
ZEEK_LOG_DIR=./test-data npm run devTools
zeek-mcp registers 39 tools. Read-only Zeek/Suricata query and analysis tools make up most of the set; the TheHive and MISP tools are the only ones that write, and only when you supply credentials.
Connection Analysis
Tool | Description |
| Search connection logs with flexible filters (CIDR, protocol, duration, bytes) |
| Statistical summary: top talkers, services, bytes, connection counts |
| Find long-lived connections (potential C2 beacons, tunnels) |
DNS Analysis
Tool | Description |
| Search DNS queries with domain wildcards and response code filtering |
| Top domains, NXDOMAIN counts (DGA detection), query type distribution |
| Detect DNS tunneling via entropy analysis and encoding detection |
HTTP Analysis
Tool | Description |
| Search HTTP requests by host, URI, method, user agent, status code |
| Find suspicious HTTP: POSTs to IPs, unusual agents, large bodies, base64 in URLs |
SSL/TLS Analysis
Tool | Description |
| Search SSL/TLS by SNI, version, validation status, certificate fields |
| Find expired, self-signed, or invalid certificates |
File Analysis
Tool | Description |
| Search file extractions by MIME type, hash, filename, size |
| Find executable transfers (PE, ELF, scripts) on the wire |
Security Notices
Tool | Description |
| Search Zeek security notices (port scans, invalid certs, custom alerts) |
SSH Analysis
Tool | Description |
| Search SSH connections by auth status, direction, client/server |
| Detect SSH brute force attempts exceeding a failure threshold |
DHCP & Asset Discovery
Tool | Description |
| Search DHCP logs for lease assignments and device discovery |
| Build MAC-to-IP/hostname asset map for network inventory |
Cross-Log Investigation
Tool | Description |
| Full host investigation across all log types |
| Follow a connection UID across all log types |
Software Discovery
Tool | Description |
| List detected software and versions on the network |
Analytics
Tool | Description |
| Detect C2 beaconing by analyzing connection interval regularity and jitter |
| Statistical anomaly detection: port scans, data exfiltration, unusual ports |
| Extract and analyze JA3/JA3S TLS fingerprints from SSL logs |
| Hunt known-malicious JA3 fingerprints (CobaltStrike, Emotet, TrickBot, etc.) across SSL logs |
| Generate a statistical baseline of normal network activity as a reference point |
| Compare current activity against a baseline and flag statistical outliers |
Suricata IDS
Tool | Description |
| Search Suricata alerts by signature, severity, IP, protocol, time |
| High-level alert summary: top signatures, categories, IPs, severity distribution |
| Cross-reference Suricata alerts with Zeek logs for full context |
| Suricata engine statistics: packets, flows, detection performance |
PCAP Analysis
Tool | Description |
| List available PCAP files in the capture directory with sizes and timestamps |
| Replay a PCAP file through Zeek and return the generated log summary |
Incident Response
Tool | Description |
| Create a TheHive alert from NIDS findings (observables, severity, TLP) |
| Create a TheHive case for in-depth, collaborative investigation |
| Search existing TheHive cases and alerts for related work or duplicates |
| Search MISP for IOCs (IPs, domains, hashes, URLs) and return matching events |
| Check multiple IOCs against MISP in a single call |
| Create a MISP event from NIDS findings to share threat intelligence |
Sensor Management
Tool | Description |
| Live sensor status: log inventory, sizes, freshness, health checks |
Resources
Resource | URI | Description |
Log Types |
| All Zeek log types with field descriptions |
Stats |
| Sensor statistics and available log types |
Prompts
Prompt | Description |
| Triage a Suricata alert by cross-referencing with Zeek logs |
| Guided host investigation workflow across all logs |
| Threat hunting for C2 communication patterns |
| Generate a network activity baseline |
Supported Log Types
conn, dns, http, ssl, files, notice, weird, x509, smtp, ssh, dpd, software, dhcp, ntp, ocsp, websocket
Configuration
Zeek
Variable | Default | Description |
|
| Path to current Zeek logs |
|
| Path to archived/rotated logs |
|
| Log format: |
|
| Maximum results per query |
Suricata
Variable | Default | Description |
|
| Path to Suricata eve.json |
|
| Path to Suricata fast.log |
|
| Path to Suricata rules directory |
PCAP Analysis
Variable | Default | Description |
|
| Directory of PCAP files. |
|
| Path to the Zeek binary. |
|
| Docker container to run Zeek in. Set to empty to run Zeek directly on the host. |
|
| Working directory for generated logs. |
MISP
Variable | Default | Description |
|
| MISP base URL. |
| (none) | MISP API key. Required for MISP tools. |
|
| Set to |
TheHive
Variable | Default | Description |
|
| TheHive base URL. |
| (none) | TheHive API key. Required for TheHive tools. |
|
| Set to |
Features
39 tools for querying and analyzing Zeek + Suricata logs
2 resources for log type metadata and sensor stats
4 prompts for guided investigation workflows
Dual format support - JSON and TSV (Zeek's native tab-separated format)
Suricata integration - Query
eve.jsonalerts, cross-correlate with Zeek, engine stats
CIDR matching - Filter by IP ranges (10.0.0.0/8, 192.168.1.0/24) with full IPv6 support
Wildcard matching - Search domains and URIs with patterns (
*.example.com)Beaconing detection - Statistical C2 beacon analysis with jitter scoring
Anomaly + baseline detection - Port scan, data exfiltration, unusual ports, statistical outliers vs a baseline
DNS tunneling detection - Shannon entropy analysis with encoding detection
JA3/JA3S fingerprinting - Track TLS clients and hunt known-malicious fingerprints across SSL logs
PCAP replay - Run a packet capture through Zeek and analyze the generated logs
Incident response - Escalate findings into TheHive (alerts/cases) and MISP (IOC lookups/events)
DHCP asset mapping - MAC-to-IP/hostname device inventory
Compressed + rotated logs - Reads
.gzarchives and navigates Zeek's date-based log directories
Why not something else?
Grepping the logs by hand. Zeek and Suricata logs are precise but verbose, and a real investigation means pivoting from one connection UID into dns, http, ssl, and files. zeek-mcp gives the agent a
zeek_investigate_uid/zeek_investigate_hostpivot and structured filters instead of you reconstructingawkone-liners under pressure.A generic file/log MCP. A plain log-reader hands the model raw lines and hopes it parses them. zeek-mcp understands Zeek's TSV header format and Suricata's
eve.jsonschema, does CIDR and IPv6 matching, reads gzipped and date-rotated archives, and ships detections (beaconing, DNS tunneling, JA3 hunting) that a generic reader cannot.Your SIEM's query language. A SIEM is the system of record. zeek-mcp is the lightweight, local, stdio path for an AI agent to read the same telemetry directly off the sensor during triage or homelab work, with no indexing tier or query DSL to learn. Use both: investigate quickly here, escalate to TheHive/MISP from the same session.
What zeek-mcp is not
zeek-mcp is not a Zeek/Suricata replacement, a packet-capture engine, a SIEM, or a background agent.
It does not:
run, configure, or manage your Zeek or Suricata sensor
capture packets or modify traffic (it reads logs, and replays existing PCAPs only on request)
index, store, or retain your telemetry between calls
run on a schedule, open network listeners, or send notifications on its own
write to Zeek/Suricata data anywhere
The only writes it performs are the optional TheHive and MISP tools, which create alerts, cases, and events, and only when you provide credentials.
Testing
npm test110 tests covering parsers (JSON + TSV), query engine, CIDR/wildcard filters, analytics (entropy, beaconing, anomaly detection), Suricata eve.json parsing, DHCP log parsing, and sensor status.
Generate Test Data
npm run generate-logs
npx tsx scripts/generate-zeek-logs.ts --output=/tmp/zeek-logs --format=jsonProject Structure
zeek-mcp/
src/
index.ts # MCP server entry point + tool registration
config.ts # Environment config + validation
types.ts # Zeek log type definitions (16 log types)
resources.ts # MCP resources
prompts.ts # MCP prompts (4 workflows)
parser/
index.ts # Format-agnostic parser + log resolution
json.ts # JSON log parser
tsv.ts # TSV log parser with header detection
query/
engine.ts # Query engine with filtering/sorting
filters.ts # CIDR match (v4+v6), wildcard, range operators
aggregation.ts # Statistical aggregation functions
tools/
connections.ts # Connection analysis tools
dns.ts # DNS analysis tools
http.ts # HTTP analysis tools
ssl.ts # SSL/TLS analysis tools
files.ts # File analysis tools
notices.ts # Security notice tools
ssh.ts # SSH analysis tools
investigation.ts # Cross-log investigation tools
software.ts # Software/asset discovery
dhcp.ts # DHCP log tools + asset mapping
beaconing.ts # Beaconing detection tool
anomaly.ts # Anomaly detection tool
ja3.ts # JA3/JA3S fingerprinting + hunt
baseline.ts # Network baseline + outlier detection
suricata.ts # Suricata eve.json tools
pcap.ts # PCAP listing + Zeek replay
thehive.ts # TheHive alert/case tools
misp.ts # MISP IOC lookup + event tools
sensor.ts # Sensor status + health checks
analytics/
entropy.ts # Shannon entropy calculation
beaconing.ts # Beacon detection algorithms
anomaly.ts # Statistical anomaly detection
tests/ # Vitest unit + integration tests
test-data/ # Sample Zeek + Suricata logs
scripts/
generate-zeek-logs.ts # Mock data generatorContributing
Issues and pull requests are welcome. See CONTRIBUTING.md for the contribution path and SECURITY.md for how to report vulnerabilities privately. By participating you agree to the Code of Conduct.
License
Available Tools
39 toolsmisp_add_eventA
Create a MISP event from NIDS findings to share threat intelligence. Includes attributes (IOCs), tags, and threat level classification.
| Name | Required | Description | Default |
|---|---|---|---|
| info | Yes | Event description/title | |
| tags | No | Event tags (e.g. 'tlp:amber', 'type:OSINT') | |
| analysis | No | 0=Initial, 1=Ongoing, 2=Complete | |
| attributes | No | Attributes/IOCs to include | |
| threatLevel | No | 1=High, 2=Medium, 3=Low, 4=Undefined | |
| distribution | No | 0=Org only, 1=Community, 2=Connected, 3=All |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states a write operation ('Create') but omits behavioral details like idempotency, confirmation, return value, or prerequisites (authentication, permission). Minimal disclosure beyond the obvious.
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, no redundancy, front-loaded with purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a creation tool with well-described schema, but lacks output details (e.g., event ID returned) and error handling context. Not fully complete given the absence of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all 6 parameters. Description adds a high-level summary ('attributes, tags, threat level') but no additional semantic meaning or usage nuance beyond 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 verb 'Create' and the resource 'MISP event', with a specific source context 'from NIDS findings' and purpose 'to share threat intelligence'. This distinguishes it from sibling tools like misp_search_iocs or suricata_query_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?
Implies usage when NIDS findings are available, but no explicit when-to-use, when-not-to-use, or alternative tools. Lacks direct guidance for choosing between this and thehive_create_alert or other creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misp_bulk_lookupA
Check multiple IOCs against MISP in a single call. Useful for batch-checking IPs, domains, or hashes found during Zeek/Suricata analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| indicators | Yes | List of indicators to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only implies a read operation without disclosing side effects, authentication requirements, rate limits, or output 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?
Two succinct sentences: first states action, second gives use case. No unnecessary words, highly 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?
Explains purpose and use case but lacks details on output format, no-match behavior, or any limits beyond schema constraints; adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage; description adds contextual examples (IPs, domains, hashes) but does not significantly extend parameter meaning beyond 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 'Check multiple IOCs against MISP in a single call' with specific examples (IPs, domains, hashes) and distinguishes from sibling MISP 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?
Provides explicit context: 'Useful for batch-checking... found during Zeek/Suricata analysis.' Lacks explicit alternatives or when-not-to-use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misp_search_iocsA
Search MISP for indicators of compromise (IOCs). Look up IPs, domains, hashes, URLs, and other observables against MISP's threat intelligence database. Returns matching events, attributes, and context.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Attribute type filter (ip-src, ip-dst, domain, md5, sha256, url, hostname, email-src) | |
| limit | No | Max results | |
| value | Yes | IOC value to search (IP, domain, hash, URL, email) | |
| includeEventInfo | No | Include parent event details |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states 'searches' and 'returns,' omitting crucial information like read-only nature, authentication needs, rate limits, or whether it modifies data. This is insufficient for an agent to assess 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 efficiently convey purpose and scope without redundancy. Every word adds value, and the key action 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?
Given no output schema and no annotations, the description should cover output format and behavioral constraints. It mentions 'returns matching events, attributes, and context' but omits details like max results, pagination, or safety. Additional context like 'read-only' 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 100%, so the schema already documents all parameters. The description adds no new parameter-specific meaning beyond what the schema provides; it only reiterates the purpose. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Search), resource (MISP), and the kind of data (IOCs, IPs, domains, etc.). It differentiates from siblings like misp_add_event and misp_bulk_lookup, which are for adding events or bulk lookups respectively.
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 searching MISP IOCs but lacks explicit guidance on when to use this tool versus alternatives (e.g., misp_bulk_lookup). No exclusions or prerequisites are mentioned, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nids_sensor_statusA
Get the current status of the NIDS sensor: available Zeek log files with sizes, record counts, and freshness. Also checks Suricata eve.json status. Use this to understand what data is available before running queries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the tool's behavior: it is a read-only status check returning file sizes, record counts, and freshness for Zeek and Suricata. No contradictory or hidden behavior is implied.
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: the first clearly states what the tool does, and the second provides actionable guidance. Every word adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and straightforward functionality, the description fully covers the tool's purpose and usage context. It is sufficient for an agent to correctly select and invoke this 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 input schema has no parameters, and the description does not need to add parameter details. According to guidelines, 0 parameters gives a baseline score of 4, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the specific resource 'current status of the NIDS sensor'. It lists the included components (Zeek log files and Suricata eve.json) with details (sizes, record counts, freshness). This distinguishes it from sibling tools that focus on querying or analyzing specific 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?
The description explicitly advises when to use the tool: 'Use this to understand what data is available before running queries.' This provides clear context for usage, though it does not specify when not to use or list alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pcap_analyzeA
Replay a PCAP file through Zeek and return the generated log summary. Creates connection, DNS, HTTP, SSL, and other logs from the packet capture. Useful for forensic analysis of captured traffic.
| Name | Required | Description | Default |
|---|---|---|---|
| scripts | No | Additional Zeek scripts to load (e.g. 'protocols/ssl/log-hostcerts-only') | |
| filename | Yes | PCAP filename (from pcap_list) or full path | |
| timeoutSeconds | No | Analysis timeout in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states that logs are created and a summary is returned, but does not disclose whether state is modified, if there are auth requirements, or if the operation is non-destructive. The behavioral context is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence front-loads the main action, and the second adds context about the types of logs generated. It is efficient and to the point.
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 no output schema or annotations, the description is reasonably complete. It explains the process (replay through Zeek), the output (log summary), and the types of logs. However, it does not detail the output format or potential limitations, which is acceptable for a tool of moderate 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?
Schema coverage is 100%, so the schema already describes all three parameters. The description does not add additional meaning beyond what is in the schema; it merely repeats the tool's purpose. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it replays a PCAP file through Zeek and returns a log summary, specifying the verb (replay), resource (PCAP file), and output. Among siblings, this is the only tool that replays PCAPs, distinguishing it from other Zeek tools that query existing 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 mentions it is useful for forensic analysis, which implies usage context. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pcap_listA
List available PCAP files in the capture directory with file sizes and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the output includes sizes and timestamps but does not mention pagination, filtering, or performance implications. This is minimal but acceptable for a simple list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and no annotations, the description is adequately complete. It explains the action and the returned information. Minor missing details (e.g., whether all files are listed) are acceptable for such a simple 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 tool has zero parameters, and the rule gives a baseline of 4. The description adds context about what is listed (files with sizes and timestamps), which is helpful.
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', the resource 'PCAP files', and the scope 'in the capture directory with file sizes and timestamps'. It distinguishes from siblings like pcap_analyze which analyzes a specific file.
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 are provided. However, the purpose is straightforward and the tool has zero parameters, so the lack of guidelines is not critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suricata_alert_summaryB
Get a high-level summary of Suricata alerts: top signatures, categories, severity distribution, top source/destination IPs, and alert timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max events to analyze | |
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not mention that the operation is read-only, does not disclose performance implications, pagination, or any restrictions on data access.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that front-loads the main action ('Get a high-level summary of Suricata alerts') and lists output components. 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 3 optional parameters, no output schema, and no annotations, the description provides a reasonable overview of output components but omits context like resource usage, read-only nature, and typical use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 3 parameters with descriptions (limit, timeTo, timeFrom) and has 100% coverage. The tool description adds no extra parameter meaning, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a high-level summary of Suricata alerts and lists specific output components (top signatures, categories, severity distribution, IPs, timeline), making its purpose distinct from siblings like suricata_query_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 (e.g., suricata_query_alerts for detailed queries, suricata_eve_stats for broader stats). The description does not mention use cases or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suricata_correlate_zeekB
Cross-reference a Suricata alert with Zeek logs using community_id or IP/port/time matching. Returns the Suricata alert details alongside instructions to investigate the same flow in Zeek.
| Name | Required | Description | Default |
|---|---|---|---|
| dstIp | No | Destination IP from alert | |
| limit | No | Max alerts to correlate | |
| srcIp | No | Source IP from alert | |
| communityId | No | Community ID for cross-tool correlation | |
| signatureId | No | Suricata SID to look up |
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 mentions return values (alert details and instructions) but omits behavioral traits like whether the tool is read-only, required permissions, rate limits, or any side effects. This is insufficient for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise two sentences with no extraneous information. It front-loads the action ('Cross-reference') and efficiently conveys the tool's core function and output.
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 5 parameters, no output schema, and no annotations. The description does not explain the matching logic, what the 'instructions to investigate the same flow' entail, or how to interpret results. 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 100%, so baseline is 3. The description does not add any parameter-specific insight beyond the schema's own descriptions (e.g., it does not clarify how 'communityId' is used for correlation or the role of 'limit'). No added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: cross-referencing a Suricata alert with Zeek logs. It specifies the matching methods (community_id or IP/port/time) and outputs (alert details plus Zeek investigation instructions). This distinguishes it from sibling tools like suricata_query_alerts or zeek_query_connections.
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 you have a Suricata alert and want Zeek context, but it does not explicitly state when to use this tool versus alternatives (e.g., using zeek tools separately). No when-not-to-use guidance or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suricata_eve_statsA
Get Suricata engine statistics from eve.json stats events: packet counts, decoder stats, flow metrics, and detection engine performance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read-only operation (get statistics) with no mention of side effects or destructive actions. Since no annotations are present, the description carries the full burden, but it does not disclose potential performance impact, authentication requirements, or data volume limits. For a simple stat retrieval, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action and resource, then elaborates with specific statistic categories. No unnecessary 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?
Given no output schema and no parameters, the description provides sufficient context by listing the categories of statistics retrieved. However, it does not describe the return format or structure, which could help an agent process the results. Still, for a simple, parameterless tool, it is mostly 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?
The tool has zero parameters, and the schema coverage is 100% (trivially). Per the scoring rule, '0 params = baseline 4'. The description does not need to add parameter semantics 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 action ('Get'), the resource ('Suricata engine statistics from eve.json stats events'), and specifies the types of statistics included (packet counts, decoder stats, flow metrics, detection engine performance). This distinguishes it from sibling tools like suricata_alert_summary and suricata_query_alerts, which focus on alerts rather than overall stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for retrieving Suricata engine statistics but does not explicitly state when to use this tool versus alternatives (e.g., suricata_alert_summary for alerts, nids_sensor_status for sensor health). No 'when-not' or exclusion guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suricata_query_alertsB
Search Suricata IDS/IPS alerts from eve.json. Filter by signature, severity, source/destination IP, protocol, and time range. Returns the most recent alerts matching the criteria.
| Name | Required | Description | Default |
|---|---|---|---|
| dstIp | No | Destination IP address | |
| limit | No | Max results | |
| proto | No | Protocol (TCP, UDP, ICMP) | |
| srcIp | No | Source IP address | |
| timeTo | No | End time (ISO 8601) | |
| category | No | Alert category (partial match) | |
| timeFrom | No | Start time (ISO 8601) | |
| signature | No | Alert signature text (partial match) | |
| minSeverity | No | Minimum severity (1=highest, 4=lowest) | |
| signatureId | No | Suricata signature ID (SID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. States it's a search/filter but doesn't mention read-only nature, authentication needs, data source specifics (e.g., eve.json file location), or performance implications. Missing safety context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and data source. Every sentence adds value: first defines scope, second lists filters and return characteristic. 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?
Describes basic behavior (search filters, return most recent) but lacks details on default behavior with no filters, output format, or pagination. For a 10-param tool with no output schema, more context on expected results would be helpful.
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 covers all 10 parameters (100% coverage). Description restates filters but adds no new meaning beyond what schema provides (e.g., format, constraints, interaction). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it searches Suricata alerts from eve.json, lists filters (signature, severity, IP, protocol, time), and says returns most recent. Distinguishes from siblings like suricata_alert_summary (aggregated) and suricata_eve_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. Does not mention alternatives or exclusions. Usage context must be inferred from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thehive_create_alertA
Create a TheHive alert from NIDS findings. Includes observables (IPs, domains, hashes), severity, TLP marking, and alert description. Use after investigating suspicious activity in Zeek/Suricata logs.
| Name | Required | Description | Default |
|---|---|---|---|
| pap | No | PAP: 0=Clear, 1=Green, 2=Amber, 3=Red | |
| tlp | No | TLP: 0=Clear, 1=Green, 2=Amber, 3=Amber+Strict, 4=Red | |
| tags | No | Tags for categorization | |
| type | No | Alert type identifier | nids-alert |
| title | Yes | Alert title | |
| source | No | Alert source | zeek-mcp |
| severity | No | Severity: 1=Low, 2=Medium, 3=High, 4=Critical | |
| sourceRef | No | Source reference (e.g. Suricata SID, Zeek UID) | |
| description | Yes | Detailed description of the finding | |
| observables | No | Observables to attach to the alert |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It mentions creation but does not detail side effects, authorization needs, rate limits, or return behavior. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose and context. 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?
Adequate for a creation tool with well-documented schema, but lacks details on prerequisites, response format, or error handling. No output schema, so more context on return values would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value by specifying observable examples ('IPs, domains, hashes') and linking parameters to NIDS context, which goes beyond 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 verb ('create'), resource ('alert'), and source ('NIDS findings'). It distinguishes from sibling thehive_create_case by specifying alert creation from NIDS data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States 'Use after investigating suspicious activity in Zeek/Suricata logs', giving clear context. However, it does not explicitly mention when not to use or alternatives, though the sibling list suggests other tools for different tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thehive_create_caseA
Create a TheHive case for in-depth investigation. Escalate from alerts or create directly from significant NIDS findings. Cases support tasks, observables, and collaborative investigation.
| Name | Required | Description | Default |
|---|---|---|---|
| pap | No | PAP marking | |
| tlp | No | TLP marking | |
| tags | No | Tags | |
| tasks | No | Investigation tasks to create | |
| title | Yes | Case title | |
| severity | No | Severity: 1=Low, 2=Medium, 3=High, 4=Critical | |
| description | Yes | Detailed case description | |
| observables | No | Observables to attach |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It mentions that cases support tasks, observables, and collaborative investigation, which is helpful, but it does not disclose any prerequisites, permissions, or potential side effects (though creation is likely safe). The behavior is adequately described for a creation 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 two sentences: the first clearly states the purpose, and the second provides usage context and features. Every word is necessary, and there is no redundant or vague language.
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 the tool's purpose and usage context well, but it does not mention the return value (likely the created case) or provide guidance on parameter values (e.g., severity scale, PAP/TLP meanings). The schema covers parameter details, so this is a minor 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 coverage is 100%, so the schema already describes all parameters. The description does not add additional meaning beyond mentioning that cases support tasks and observables, which aligns with the schema's parameters. With full schema coverage, a score of 3 is baseline.
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 creates a TheHive case for in-depth investigation, with specific context of escalating from alerts or directly from NIDS findings. It distinguishes from sibling tools like thehive_create_alert and thehive_search_cases by specifying the resource and task.
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 guidance on when to use this tool: for in-depth investigations, either by escalating from alerts or creating directly from significant NIDS findings. It implies alternatives like creating alerts for less severe events, but does not explicitly list when not to use it or compare to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thehive_search_casesA
Search existing TheHive cases and alerts. Find related investigations, check for duplicates, or review open cases.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags | |
| limit | No | Max results | |
| query | No | Search query text | |
| status | No | Filter by status | |
| severity | No | Filter by severity | |
| entityType | No | Search cases or alerts | case |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'search existing', implying read-only behavior, but does not mention authentication, rate limits, pagination, or response format. This is minimally adequate for a search tool but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. The first sentence states the core purpose, and the second provides usage examples. No extraneous information is present, making it efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description could explain the return format (e.g., list of cases/alerts). It mentions searching both cases and alerts but does not specify results. The parameter count is 6 and all optional, which is handled, but overall completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds context by mentioning 'cases and alerts' which maps to the entityType parameter, and examples like 'review open cases' hint at status filtering. However, it does not describe individual parameters beyond the schema, providing only marginal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches 'existing TheHive cases and alerts', which is a specific verb+resource combination. It also provides example use cases like 'find related investigations, check for duplicates, or review open cases', which helps differentiate it from sibling tools like thehive_create_alert and thehive_create_case that are for creation, not searching.
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 when to use the tool by listing scenarios such as finding related investigations or checking duplicates. However, it does not explicitly state when not to use it or compare to alternatives, though no direct sibling search tools exist, making the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_connection_summaryA
Get statistical summary of connections over a time period - top talkers, services, bytes, and connection counts.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | End time (ISO 8601) | |
| groupBy | No | Primary grouping dimension | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully inform behavior. It indicates a read-only 'statistical summary', but lacks disclosure on potential side effects, authentication needs, or behavior with empty time ranges. Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys the tool's purpose. 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?
With 3 parameters (none required), no output schema, and no annotations, the description is fairly complete for a summary tool but omits details like output structure, limits, or error handling. Could be more thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add semantic value beyond the schema; it enumerates summary fields but doesn't explain how parameters like groupBy or time range influence those fields.
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 a 'statistical summary of connections' with specific metrics ('top talkers, services, bytes, and connection counts'), which distinguishes it from sibling tools like zeek_query_connections (raw data) or other specialized zeek 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 provides no explicit guidance on when to use this tool vs. alternatives (e.g., zeek_query_connections for raw data, zeek_detect_anomalies for anomalous patterns). Usage is implied but not contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_detect_anomaliesB
Run statistical anomaly detection across connection logs. Detects port scanning, data exfiltration (statistical outliers in bytes sent), and high-volume connections to unusual ports without identified services.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) | |
| minSeverity | No | Minimum severity to include (default: low) | low |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description conveys the tool is read-only (detects anomalies) but does not disclose other behavioral traits such as permissions, rate limits, or resource consumption. With no annotations, the description carries the full 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?
Single sentence followed by a list of detection types. Extremely concise with no superfluous 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?
Description lacks output format details (e.g., alert structure, severity representation) and does not mention prerequisites like available connection logs. Given no output schema, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. Description adds no extra meaning beyond the context of 'connection logs'. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it runs statistical anomaly detection on connection logs and lists specific anomaly types. However, it does not explicitly differentiate from sibling tools like zeek_detect_beaconing or zeek_detect_outliers.
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?
Implied usage is for detecting anomalies in connection logs, but no explicit guidance on when to use this tool versus alternatives like beaconing detection or outlier detection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_detect_beaconingA
Detect potential C2 beaconing by analyzing connection interval regularity. Finds source-destination pairs with suspiciously consistent callback intervals (low jitter). Higher scores indicate more regular beaconing patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| dstIp | No | Filter by destination IP | |
| srcIp | No | Filter by source IP | |
| timeTo | No | End time (ISO 8601) | |
| minScore | No | Minimum beacon score to include in results (default 50) | |
| timeFrom | No | Start time (ISO 8601) | |
| minConnections | No | Minimum connections to consider a pair (default 10) | |
| maxJitterPercent | No | Maximum jitter percentage to flag as beaconing (default 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It describes analysis of jitter and scoring but does not state whether the operation is read-only, destructive, or requires specific permissions. This omission limits 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 three sentences long, front-loaded with purpose, followed by methodology and scoring meaning. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description should provide more detail about return values. It mentions scoring but not the structure or type of output (e.g., list of pairs). The 7 parameters are well-documented, but output expectations are vague.
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?
All 7 parameters are described in the schema with 100% coverage. The description adds marginal context (e.g., 'higher scores indicate more regular patterns') but does not substantially enhance understanding beyond the schema definitions.
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: 'Detect potential C2 beaconing by analyzing connection interval regularity.' It specifically mentions finding source-destination pairs with consistent callback intervals, distinguishing it from sibling tools like zeek_detect_anomalies or zeek_detect_outliers.
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 detecting beaconing but provides no guidance on when to use this tool versus alternatives. No explicit when-not-to-use or comparison with siblings is given, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_detect_outliersB
Compare current network activity against a baseline and identify statistical outliers. Flags hosts with unusual byte volumes, connection counts, port diversity, or timing patterns that deviate significantly from the norm.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | Current period end (ISO 8601) | |
| timeFrom | No | Current period start (ISO 8601) | |
| stdDevThreshold | No | Standard deviations from mean to flag (default 3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It states the tool compares activity and flags outliers but does not clarify whether it modifies any data, if authorization is needed, or whether a baseline must be precomputed via “zeek_network_baseline”. More details on potential side effects or dependencies are 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 sentences, front-loading the core purpose. No extraneous words, but it could better incorporate parameter guidance or output hints without losing brevity.
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 the tool's purpose and metrics, but since there is no output schema, it does not explain what the tool returns (e.g., host list, alert details, or counts). For a detection tool, omitting output shape reduces completeness. Parameters are well-covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameters ‘timeTo’, ‘timeFrom’, and ‘stdDevThreshold’ are already described in the schema. The description mentions “standard deviations from mean” which aligns with ‘stdDevThreshold’, but adds no new meaning beyond what the schema provides. Hence baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool compares current network activity against a baseline and identifies statistical outliers, specifying metrics like byte volumes, connection counts, port diversity, and timing patterns. This distinguishes it from sibling tools such as “zeek_detect_anomalies” or “zeek_detect_beaconing” by focusing on statistical deviation from a baseline.
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 “zeek_detect_anomalies” or “zeek_detect_beaconing”. It does not specify prerequisites (e.g., whether a baseline must already exist) or when it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_dhcp_asset_mapA
Build an asset map from DHCP logs: MAC address to IP/hostname mappings. Useful for identifying all devices on the network and spotting unknown/rogue devices.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It implies a read-only analysis but does not explicitly state whether it's read-only, required permissions, or any other behavioral traits like data freshness, pagination, 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 efficiently convey the purpose and use case. No extraneous information; the key action and result are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters and no output schema, the description provides a high-level output structure (MAC to IP/hostname) but lacks details on output format, limits, or ordering. It is adequate but leaves questions about the returned data's granularity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both parameters already described as ISO 8601 time strings. The description adds no additional meaning beyond the schema, such as default time range or behavior if omitted. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Build an asset map') and the resource ('from DHCP logs'), and specifies the output ('MAC address to IP/hostname mappings'). The use case for identifying unknown/rogue devices distinguishes it from other Zeek 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 provides a use case ('identifying all devices on the network and spotting unknown/rogue devices') but does not explicitly guide when to use this tool versus alternatives like zeek_query_dhcp or zeek_network_baseline. No exclusionary guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_dns_summaryA
DNS query statistics - top queried domains, NXDOMAIN counts (potential DGA detection), query type distribution, and top DNS clients.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It only lists output categories without mentioning operational details like time range handling, aggregation, limits, or side effects, leaving gaps in 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 a single, front-loaded sentence that efficiently conveys the tool's outputs without unnecessary words, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and presence of numerous DNS-related siblings, the description provides a useful list of statistics but lacks hints on return structure, result limits, or how summary is computed, leaving some completeness 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?
Parameter semantics are fully covered by the schema (100% coverage) with ISO 8601 descriptions. The description adds no further meaning beyond the schema, meeting the baseline for high-coverage schemas.
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 lists specific DNS statistics (top domains, NXDOMAIN counts, query type distribution, top clients), making the tool's purpose distinct from raw DNS queries or anomaly detection tools among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool provides but gives no explicit guidance on when to use it versus alternative DNS tools like zeek_query_dns or zeek_dns_tunneling_check. Usage is implied by the summary nature, but no when-not or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_dns_tunneling_checkB
Detect potential DNS tunneling by analyzing query entropy, subdomain lengths, and TXT/NULL query volumes.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) | |
| entropyThreshold | No | Shannon entropy threshold for flagging suspicious queries (default 3.5) |
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 analysis methods but does not state if it is read-only, permissions needed, or what actions are performed. Missing details on whether it returns alerts or modifies state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, directly conveys core functionality.
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?
No output schema and limited description; the agent cannot infer what the tool returns (e.g., list of suspicious queries or summary). Missing details on result format or how to interpret outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds little beyond parameter names/defaults. The description's mention of 'query entropy' loosely relates to entropyThreshold but provides no additional context for timeTo/timeFrom.
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 detects DNS tunneling using specific analysis methods (query entropy, subdomain lengths, TXT/NULL volumes), which distinguishes it from siblings like zeek_dns_summary and zeek_detect_anomalies.
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 vs alternatives. Usage is implied for investigating suspicious DNS activity, but lacks context for when to prefer this over other DNS-focused tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_executable_downloadsB
Find executable file transfers on the network - PE, ELF, Mach-O binaries and scripts that may indicate malware delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Fails to disclose read-only nature, required permissions, result format, or any filtering beyond time range. 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?
Single sentence, no redundancy, front-loaded with verb and resource. Efficient but could include more information without becoming verbose.
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 no output schema and simple parameters, description is minimal but lacks details on return values, pagination, or aggregation. 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 coverage for both parameters is 100% with clear ISO 8601 descriptions. Description adds no additional meaning beyond schema, meeting baseline for high 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 verb 'Find' and resource 'executable file transfers on the network', listing specific binary types (PE, ELF, Mach-O) and hinting at malware delivery context. This distinguishes it from sibling tools like zeek_query_files or zeek_suspicious_http.
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. Lacks prerequisites, exclusions, or comparison to siblings. Usage is merely implied by the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_expired_certsA
Find connections using expired or self-signed certificates - potential indicators of man-in-the-middle or malicious infrastructure.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It describes a read-only query operation without side effects, but does not explicitly state read-only nature or discuss permissions perational 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?
Single sentence, front-loaded with key action and resource, no unnecessary words. Extremely concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple query tool with two optional parameters and no output schema, the description provides complete context (purpose, security significance) and suffices for 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 coverage is 100% with descriptions for both parameters (timeTo, timeFrom). The description adds no extra meaning beyond the schema, meeting baseline expectation.
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 finds connections using expired or self-signed certificates, specifying verb 'Find' and resource 'connections', and distinguishes from sibling tools like zeek_dns_summary or zeek_query_ssl by targeting a specific security indicator.
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 (potential MITM or malicious infrastructure) but lacks explicit guidance on when to use this tool versus alternatives, requiring the agent to infer usage from the security task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_investigate_hostA
Comprehensive investigation of all activity for a specific host across all Zeek log types - connections, DNS, HTTP, SSL, files, notices, SSH, and software.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | IP address to investigate | |
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose any behavioral traits like resource intensity, authentication needs, or 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?
Single, clear sentence that is front-loaded with the tool's purpose. Could include more behavioral info without becoming verbose.
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?
Complex tool (all log types) with no output schema, and description is minimal. Missing details on what the output contains, limitations, or how to scope the investigation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with standard parameter descriptions. The description adds context that the investigation covers all log types but no extra detail on parameter syntax or constraints.
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 'comprehensive investigation of all activity for a specific host across all Zeek log types', which is a specific verb+resource and distinguishes it from sibling tools like zeek_investigate_uid or zeek_query_*.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for a broad overview across all logs, and sibling context shows there are many specific query tools, but no explicit when-not-to-use or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_investigate_uidA
Follow a specific connection UID across all Zeek log types to reconstruct the complete session lifecycle.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Zeek connection UID to investigate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description indicates a read operation across multiple logs but does not disclose side effects, auth requirements, or return format. For a read-only tool, this is adequate but lacks explicit safety guarantees.
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?
A single sentence that is front-loaded with the action and resource. 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 description lacks output schema and does not specify the format of the reconstructed session lifecycle. For a simple tool it is functional but incomplete without return value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for 'uid'. The tool description rephrases 'Follow a specific connection UID' but adds no new semantic details beyond the schema, such as format or validation.
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 'Follow' and specifies the resource 'specific connection UID across all Zeek log types', with the goal 'reconstruct the complete session lifecycle'. This distinguishes it from siblings like zeek_investigate_host which focuses on hosts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you have a UID and want full session reconstruction. However, it does not explicitly state when not to use or compare to alternatives like zeek_query_connections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_ja3_fingerprintsA
Extract and analyze JA3/JA3S TLS fingerprints from SSL logs. Identifies client TLS implementations and can detect known malicious fingerprints. JA3 fingerprints persist even when domains/IPs change, making them valuable for tracking threat actors.
| Name | Required | Description | Default |
|---|---|---|---|
| dstIp | No | Filter by destination IP | |
| limit | No | Max records to analyze | |
| srcIp | No | Filter by source IP | |
| timeTo | No | End time (ISO 8601) | |
| ja3Hash | No | Search for specific JA3 hash | |
| timeFrom | No | Start time (ISO 8601) | |
| serverName | No | Filter by SNI hostname |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It discloses that the tool extracts fingerprints, identifies implementations, detects malicious ones, and notes that JA3 fingerprints persist despite infrastructure changes. This gives a clear behavioral profile without contradictions.
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 long, with the first sentence immediately stating the action and resource, and the second adding value. No filler or redundant information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a straightforward query/analysis tool with no output schema, the description effectively covers its purpose and significance. The lack of output schema is not a gap here. The description adequately sets context for an AI agent to select and use the 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?
All 7 parameters have descriptions in the schema (100% coverage), so the description adds little beyond stating the tool's purpose. It does not elaborate on parameter usage or relationships, which is acceptable since the schema is comprehensive. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts and analyzes JA3/JA3S TLS fingerprints from SSL logs. It specifies that it identifies client TLS implementations and can detect known malicious fingerprints, distinguishing it from related tools like zeek_ja3_hunt. The verb 'Extract and analyze' combined with the specific resource (JA3 fingerprints) makes the purpose unambiguous.
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 tracking threat actors due to fingerprint persistence, but does not explicitly state when to use this tool over alternatives like zeek_ja3_hunt or other Zeek analysis tools. No direct comparison or exclusion criteria are given, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_ja3_huntA
Hunt for known malicious JA3 fingerprints across SSL logs. Compares all observed JA3 hashes against a built-in database of malware families (CobaltStrike, Emotet, TrickBot, etc.) and returns any matches.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) | |
| customHashes | No | Additional JA3 hashes to hunt for beyond the built-in database |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the tool as a search/matching operation, implying it is read-only, but does not explicitly state behavioral traits like mutability or safety. With no annotations, this is adequate but could be more 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?
The description is two sentences, front-loaded with the key action and resource, and contains no wasted words. It is appropriately sized for the tool's simplicity.
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 tool with 3 optional parameters and no output schema, the description explains the core functionality adequately. It could mention the output format or behavior when no matches are found, but it is still 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 100%, so the schema already documents all parameters. The description adds no further meaning beyond what the schema provides for timeFrom, timeTo, and customHashes, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool hunts for known malicious JA3 fingerprints using a built-in malware database. It is specific about the resource (JA3 hashes) and distinguishes it from sibling tools like zeek_ja3_fingerprints that likely list all fingerprints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool compares against a built-in database and allows custom hashes. It provides context for use but does not explicitly state when to use it versus alternatives like zeek_ja3_fingerprints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_long_connectionsC
Find unusually long-lived connections that may indicate C2 beacons, tunnels, or persistent backdoors.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) | |
| minDuration | Yes | Minimum connection duration in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full burden. It does not disclose how 'unusually long-lived' is determined, whether it's read-only, output format, or time range behavior. For a filtering tool, more behavioral detail 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 a single concise sentence with no wasted words. It focuses on the tool's purpose and threat relevance. Could benefit from slight restructuring to front-load key details, but still 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?
With no output schema, the description should indicate what is returned (e.g., connection records). It does not mention return structure, pagination, or how results are ordered. Incomplete for a query tool with four parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional parameter meaning beyond what the schema already provides (e.g., minDuration, timeFrom, etc.). No extra semantics.
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 'find[s] unusually long-lived connections' and adds threat context (C2 beacons, tunnels, persistent backdoors). It differentiates from siblings like zeek_detect_beaconing by focusing on longevity, but does not explicitly distinguish from all 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?
No explicit guidance on when to use this tool versus alternatives. It implies usage for detecting persistent backdoors, but does not mention when not to use or compare to siblings like zeek_connection_summary or zeek_detect_anomalies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_network_baselineA
Generate a statistical baseline of normal network activity. Calculates averages, standard deviations, and distributions for connections, bytes, services, and protocols. Use as a reference point to identify deviations that may indicate compromise.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | Baseline period end (ISO 8601) | |
| timeFrom | No | Baseline period start (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear all responsibility. It describes the computational output but fails to disclose whether the tool is read-only, requires special permissions, or has side effects. The behavioral profile is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: the first states purpose and calculations, the second provides usage guidance. No redundancy, and key information 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?
The description mentions statistics calculated but does not specify output format, default behavior when parameters are omitted, or any constraints on time ranges. With no output schema, additional detail 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 coverage is 100% with both parameters described as ISO 8601 date strings. The description adds no additional meaning beyond the schema, such as defaults or behavior when omitted. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Generate a statistical baseline of normal network activity' and specifies calculations (averages, standard deviations, distributions) and scope (connections, bytes, services, protocols). The tool name includes 'baseline' and siblings include 'zeek_detect_anomalies', making the distinction evident.
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 suggests using the baseline as a reference for identifying deviations, implying appropriate use. However, it does not explicitly state when not to use this tool or name alternative tools like 'zeek_detect_anomalies' for detection tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_query_connectionsB
Search Zeek connection logs with flexible filters. Supports CIDR notation for IPs, connection state filtering, duration/byte thresholds, and time ranges.
| Name | Required | Description | Default |
|---|---|---|---|
| dstIp | No | Destination IP address (supports CIDR notation) | |
| limit | No | Max results (default 100) | |
| proto | No | Transport protocol | |
| srcIp | No | Source IP address (supports CIDR notation like 10.0.0.0/8) | |
| sortBy | No | Sort field (default: ts descending) | |
| timeTo | No | End time (ISO 8601) | |
| dstPort | No | Destination port number | |
| service | No | Detected service (http, ssl, dns, ssh, smtp, etc.) | |
| srcPort | No | Source port number | |
| minBytes | No | Minimum total bytes transferred | |
| timeFrom | No | Start time (ISO 8601) | |
| connState | No | Connection state (S0, S1, SF, REJ, RSTO, etc.) | |
| maxDuration | No | Maximum connection duration in seconds | |
| minDuration | No | Minimum connection duration in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It does not mention that the tool is read-only (query), any required permissions, rate limits, or pagination behavior. The query nature is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the main purpose ('Search Zeek connection logs') and list key capabilities. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 14 parameters, no annotations, and no output schema, the description is adequate but incomplete. It covers high-level filter capabilities but omits details about default behavior (e.g., default limit, sort order) and response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for 14 parameters. The description adds high-level context (e.g., 'CIDR notation', 'connection state filtering') but does not provide additional meaning or details beyond what the schema already describes. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Search Zeek connection logs', clearly indicating the verb and resource. It mentions flexible filters, but does not differentiate from sibling tools like zeek_query_dns or zeek_query_http, which are for other log 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?
The description lists supported filter types (CIDR, connection state, duration/byte thresholds, time ranges), implying usage for connection log filtering. However, it does not provide explicit when-to-use or when-not-to-use guidance relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_query_dhcpB
Search Zeek DHCP logs for lease assignments, device discovery, and hostname-to-IP mapping. Useful for asset inventory and identifying rogue devices.
| Name | Required | Description | Default |
|---|---|---|---|
| mac | No | Client MAC address (partial match) | |
| limit | No | Max results | |
| timeTo | No | End time (ISO 8601) | |
| msgType | No | DHCP message type (DISCOVER, OFFER, REQUEST, ACK, NAK, RELEASE, INFORM) | |
| hostname | No | Client hostname (partial match) | |
| timeFrom | No | Start time (ISO 8601) | |
| clientAddr | No | Client IP address | |
| assignedAddr | No | Assigned IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not mention read-only nature, destructive potential, authentication requirements, or any side effects. The description only states query intent, which is insufficient for a security-related log search 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 two sentences with no filler. First sentence states purpose and scope; second provides practical use cases. Every sentence adds value, and the structure 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 8 parameters and no output schema, the description is somewhat complete but lacks details on result format, time range importance, or any limitations. It covers key use cases but does not fully compensate for the lack of output schema or detailed behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 8 parameters. The description adds context about lease assignments and hostname-to-IP mapping, connecting to some parameters (mac, hostname, assignedAddr). However, it does not expand on parameter interactions, format expectations, or default behavior beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool searches Zeek DHCP logs for specific items (lease assignments, device discovery, hostname-to-IP mapping) and mentions use cases (asset inventory, rogue devices). It distinguishes from siblings like zeek_query_dns but not explicitly from zeek_dhcp_asset_map, which could overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions useful scenarios (asset inventory, rogue devices) but does not provide when-not-to-use or differentiate from similar tools like zeek_dhcp_asset_map. No explicit alternatives or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_query_dnsA
Search Zeek DNS query logs. Supports wildcard domain matching, query type filtering, and response code filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| qtype | No | Query type (A, AAAA, MX, TXT, CNAME, NS, PTR, SRV, SOA) | |
| query | No | Domain query (supports wildcards: *.evil.com) | |
| rcode | No | Response code (NOERROR, NXDOMAIN, SERVFAIL, REFUSED) | |
| srcIp | No | Querying host IP | |
| timeTo | No | End time (ISO 8601) | |
| answers | No | Search in DNS answers | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only mentions search capabilities but omits whether the tool is read-only, required permissions, rate limits, or the nature of results (raw vs aggregated). Significant behavioral gaps remain.
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?
A single, clear sentence conveying the tool's purpose and key features. No unnecessary words or repetition.
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 8 parameters, no output schema, and minimal description, the tool lacks completeness. It does not explain result ordering, time range behavior, or default query scope. Adequate but with clear gaps for a tool of this 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?
Schema description coverage is 100%, with all 8 parameters described. The description adds a high-level summary of filtering (domain, qtype, rcode) but no additional semantic detail beyond what the schema already provides. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'Zeek DNS query logs'. It further specifies supported features (wildcard matching, query type, response code filtering). This effectively distinguishes it from sibling tools like zeek_query_http or zeek_query_connection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for DNS log searching but does not provide explicit context on when to use versus alternatives like zeek_dns_summary or zeek_dns_tunneling_check. No 'when not to use' guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_query_filesC
Search Zeek file extraction logs. Filter by MIME type, filename, hash values, source IP, and file size.
| Name | Required | Description | Default |
|---|---|---|---|
| md5 | No | MD5 hash | |
| limit | No | Max results | |
| srcIp | No | Source IP (from tx_hosts) | |
| sha256 | No | SHA256 hash | |
| timeTo | No | End time (ISO 8601) | |
| maxSize | No | Maximum file size in bytes | |
| minSize | No | Minimum file size in bytes | |
| filename | No | Filename (supports wildcards) | |
| mimeType | No | MIME type (application/x-dosexec, application/pdf, etc.) | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behaviors. It states it searches logs, but does not indicate if it is read-only, potential performance impact, or any side effects. For a search tool, read-only 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?
The description is a single concise sentence, front-loaded with the main action. It is efficient but very brief, lacking any additional structure or elaboration.
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 10 parameters, no output schema, and no annotations, the description is too brief. It does not explain return format, pagination, or how filters combine. It is incomplete for the tool's 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?
Schema coverage is 100% with each parameter having a description. The tool description provides a high-level summary of filterable fields, which adds marginal value beyond the schema. It does not add detailed semantics or usage context.
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 'Search Zeek file extraction logs' with a specific verb and resource. It lists filterable fields (MIME type, filename, hash, IP, size), distinguishing it from sibling tools that query other log types (e.g., connections, DNS). However, it does not explicitly differentiate from similar zeek query tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided about when to use this tool versus alternatives. There is no mention of prerequisites, limitations, or cases where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_query_httpA
Search Zeek HTTP request logs. Supports wildcard matching on host and URI, user agent filtering, and status code filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | No | URI path (supports wildcards) | |
| host | No | HTTP Host header (supports wildcards) | |
| limit | No | Max results | |
| srcIp | No | Source IP address | |
| method | No | HTTP method (GET, POST, PUT, DELETE, etc.) | |
| timeTo | No | End time (ISO 8601) | |
| mimeType | No | Response MIME type | |
| timeFrom | No | Start time (ISO 8601) | |
| userAgent | No | User-Agent string (partial match) | |
| statusCode | No | HTTP response status code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses supported operations (wildcard, filtering) but does not explicitly state read-only behavior, rate limits, or any side effects. The transparency is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, front-loaded with core purpose. Every word adds value. Highly efficient for an agent to parse quickly.
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 tool with 10 parameters and no output schema, the description is brief. It covers key features but lacks details on response format, pagination, or integration with other Zeek tools. Sufficient for basic understanding but incomplete for complex use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3). The description adds context by explicitly mentioning wildcard matching on host/URI, user agent filtering, and status code filtering, which are not fully detailed in schema descriptions. This enhances parameter understanding 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 'Search Zeek HTTP request logs', which is a specific verb (Search) and resource (HTTP request logs). It distinguishes itself from sibling tools like zeek_query_connections or zeek_suspicious_http by focusing on general HTTP log querying. The additional mention of filtering capabilities reinforces its purpose.
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., zeek_suspicious_http for anomalies). No context about prerequisites or order of operations. The description is functional but lacks explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_query_noticesB
Search Zeek security notices (built-in and custom detections). Notices include port scans, invalid certificates, protocol violations, and custom alerts.
| Name | Required | Description | Default |
|---|---|---|---|
| msg | No | Message content search (partial match) | |
| note | No | Notice type (e.g. Scan::Port_Scan, SSL::Invalid_Server_Cert) | |
| dstIp | No | Destination IP address | |
| limit | No | Max results | |
| srcIp | No | Source IP address | |
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or side effects. It only states the search function.
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?
One sentence of 18 words, front-loaded with purpose and examples. No redundancy or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 7 parameters and no output schema/annotations, the description does not explain output format, query construction tips, or limitations, leaving gaps for effective usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The tool description adds no additional meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and resource 'Zeek security notices', and provides examples like port scans and invalid certificates, distinguishing it from sibling tools like zeek_query_connections.
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, nor any exclusions or explicit context. The description only implies usage for security notices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_query_sshB
Search Zeek SSH connection logs. Filter by source/destination IP, authentication status, and connection direction.
| Name | Required | Description | Default |
|---|---|---|---|
| dstIp | No | Destination IP address | |
| limit | No | Max results | |
| srcIp | No | Source IP address | |
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) | |
| direction | No | Connection direction | |
| authSuccess | No | Filter by authentication success/failure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description fails to disclose behavioral traits such as read-only nature, rate limits, or authentication requirements. It only states search/filter, which is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the tool's purpose and efficiently lists key filters without 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?
The description omits important parameters like timeFrom, timeTo, and limit, and does not mention what the output contains. With no output schema, more detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description summarizes some filters (IPs, auth, direction) but adds no significant meaning beyond the 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 searches Zeek SSH connection logs and lists specific filter criteria, distinguishing it from sibling tools that query other protocols.
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., zeek_ssh_bruteforce) or when not to use it. The description does not provide any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_query_sslA
Search Zeek SSL/TLS connection logs. Filter by SNI hostname, TLS version, certificate validation status, subject, and issuer.
| Name | Required | Description | Default |
|---|---|---|---|
| dstIp | No | Destination IP address | |
| limit | No | Max results | |
| srcIp | No | Source IP address | |
| issuer | No | Certificate issuer (partial match) | |
| timeTo | No | End time (ISO 8601) | |
| subject | No | Certificate subject (partial match) | |
| version | No | TLS version (TLSv10, TLSv11, TLSv12, TLSv13, SSLv3) | |
| timeFrom | No | Start time (ISO 8601) | |
| serverName | No | SNI hostname (supports wildcards) | |
| validationStatus | No | Certificate validation status (ok, self signed certificate, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as pagination, rate limits, or cost. It only describes search functionality. More detail would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the action and key filters. While effective, it could be slightly 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?
With no output schema and 10 optional parameters, the description lacks information on return format, pagination, or default behavior. It covers the basics but is incomplete for a tool of this 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?
Schema description coverage is 100%, and the description adds little beyond reiterating some filter fields. Baseline 3 is appropriate as schema already documents 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 searches Zeek SSL/TLS connection logs and lists specific filterable fields (SNI hostname, TLS version, etc.), effectively distinguishing it from sibling tools like zeek_query_connections and zeek_query_dns.
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 SSL/TLS log analysis but does not explicitly state when to use this over alternatives or provide negative guidance. The naming and context provide sufficient clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_software_inventoryA
List detected software and versions on the network from Zeek's protocol analysis. Useful for asset discovery and vulnerability assessment.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Filter by host IP | |
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) | |
| softwareType | No | Filter by software type (e.g. HTTP::BROWSER, HTTP::SERVER) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only states it lists data but does not disclose behavioral traits such as read-only nature, authentication requirements, or whether it can be destructive. For a listing tool, it likely is safe, but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant information. It efficiently conveys the core purpose and a common use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with 4 optional parameters and no output schema, the description is moderately complete. It explains the source (Zeek protocol analysis) and use cases, but lacks details on return format, pagination, or limitations. Given no annotations, it is 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 coverage is 100% with all 4 parameters described (host, timeTo, timeFrom, softwareType). The tool description does not add extra detail beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists detected software and versions from Zeek's protocol analysis, with specific verb 'list' and resource 'detected software and versions'. It distinguishes itself from sibling tools like zeek_dns_summary or zeek_query_http by focusing on software inventory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the tool is 'useful for asset discovery and vulnerability assessment', providing clear context for when to use it. However, it does not explicitly exclude other use cases or compare with alternatives, though sibling tools are different enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_ssh_bruteforceA
Detect SSH brute force attempts by identifying sources with multiple failed authentication attempts exceeding a threshold.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) | |
| threshold | No | Minimum failed attempts to flag (default 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility. It explains the detection logic (counting failed attempts, applying a threshold) but does not clarify behavioral traits like read-only nature, idempotency, or return format. It is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose. It is front-loaded with the core action and includes the key constraint (threshold). 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 (3 parameters, no output schema) and the lack of annotations, the description is adequate but leaves gaps. It does not specify the output format (e.g., list of IPs, counts) or any side effects. It meets minimum viability but could be more 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 100%; all three parameters (timeTo, timeFrom, threshold) have descriptions. The tool description adds no extra meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: detect SSH brute force attempts by identifying sources with repeated failed authentications exceeding a threshold. It uses a specific verb (detect) and resource (SSH brute force), and distinguishes itself from sibling tools like zeek_query_ssh (generic querying) and suricata_* (different engine).
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 zeek_query_ssh or other detection tools. There is no mention of prerequisites, when not to use it, or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zeek_suspicious_httpB
Find suspicious HTTP activity including POSTs to raw IPs, unusual user agents, large POST bodies, requests to high ports, and base64 in URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| timeTo | No | End time (ISO 8601) | |
| timeFrom | No | Start time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden of behavioral disclosure. It does not mention that the tool is read-only, whether it returns all matching events or aggregated results, or any limitations like performance or scope. The description only lists what patterns are detected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource. Could be more structured (e.g., bullet list of suspicious patterns) but is efficient and 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?
Given no output schema and low tool complexity (2 parameters), the description is adequate for a find tool but does not explain return format (e.g., is it a list of events with key fields?). It covers the purpose but misses some context like expected results 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?
Schema description coverage is 100% (timeFrom and timeTo have clear ISO 8601 descriptions). The tool description adds context that the time range filters the suspicious HTTP activity found, but does not elaborate on parameter semantics beyond what the schema already provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Find' and the resource 'suspicious HTTP activity', then lists specific types (POSTs to raw IPs, unusual user agents, etc.). This distinguishes it from sibling tools like zeek_query_http which likely returns all HTTP events.
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 finding suspicious HTTP activity, but lacks explicit guidance on when to use this tool vs alternatives (e.g., zeek_query_http for detailed queries, suricata_correlate_zeek for cross-correlation). No when-not-to-use or prerequisite conditions.
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.
39 tool updates
v3.0.0- First observed
misp_add_event - First observed
misp_bulk_lookup - First observed
misp_search_iocs - First observed
nids_sensor_status - First observed
pcap_analyze - First observed
pcap_list - First observed
suricata_alert_summary - First observed
suricata_correlate_zeek - First observed
suricata_eve_stats - First observed
suricata_query_alerts - First observed
thehive_create_alert - First observed
thehive_create_case - First observed
thehive_search_cases - First observed
zeek_connection_summary - First observed
zeek_detect_anomalies - First observed
zeek_detect_beaconing - First observed
zeek_detect_outliers - First observed
zeek_dhcp_asset_map - First observed
zeek_dns_summary - First observed
zeek_dns_tunneling_check - First observed
zeek_executable_downloads - First observed
zeek_expired_certs - First observed
zeek_investigate_host - First observed
zeek_investigate_uid - First observed
zeek_ja3_fingerprints - First observed
zeek_ja3_hunt - First observed
zeek_long_connections - First observed
zeek_network_baseline - First observed
zeek_query_connections - First observed
zeek_query_dhcp - First observed
zeek_query_dns - First observed
zeek_query_files - First observed
zeek_query_http - First observed
zeek_query_notices - First observed
zeek_query_ssh - First observed
zeek_query_ssl - First observed
zeek_software_inventory - First observed
zeek_ssh_bruteforce - First observed
zeek_suspicious_http
TDQS
Scored across 39 tools
Tools are clearly organized by source (zeek, suricata, misp, thehive, pcap, nids) and action, with distinct purposes. Even within Zeek, query tools target specific log types and detection tools address different anomalies, minimizing confusion.
All tool names follow a consistent pattern: source_prefix (zeek_, suricata_, misp_, etc.) followed by a verb or descriptor. Underscores and lowercase are used uniformly, making the set predictable and easy to navigate.
With 39 tools, the server is heavily weighted, exceeding the typical well-scoped range. While the tools are justified by the breadth of NIDS functionality, the count is borderline high and may overwhelm agents.
The tool set covers the full lifecycle of network threat detection and response: data acquisition (pcap, logs), querying (all log types), anomaly detection, threat intelligence integration (MISP), case management (TheHive), and cross-referencing (Suricata-Zeek). No obvious gaps.
Maintenance
Related MCP Connectors
Syslog receiver and MCP server for homelab log intelligence.
Syslog receiver and MCP server for homelab log intelligence.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
Cybersecurity MCP server for URL scanning, threat intelligence, and domain reputation.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceSuricataMCP is a Model Context Protocol Server that allows MCP clients to autonomously use suricata for network traffic analysis. It enables programmatic interaction with Suricata through tools like get\_suricata\_version, get\_suricata\_help, and get\_alerts\_from\_pcap\_file.14-
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that integrates Zeek network analysis capabilities with LLM chatbots, allowing them to analyze PCAP files and parse network logs through natural language interactions.7Apache 2.0
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables querying logs and metrics from Graylog, Prometheus, and InfluxDB 2.x. It provides tools for executing Lucene log searches, PromQL queries, and Flux queries directly within MCP-compatible clients.MIT
- FlicenseNot gradedqualityNot gradedmaintenanceA production-oriented, read-only MCP server for secure ELK stack analysis, compatible with OpenClaw.-