linux-mcp
The linux-mcp server provides a comprehensive suite of 62 MCP tools for real-time Linux system monitoring, diagnostics, and management, accessible via STDIO.
Core Capabilities:
System Information & Health: Hostname, OS, kernel, uptime, load averages, environment variables, user info, and comprehensive health checks (memory, disk, load, systemd) with OK/WARNING/CRITICAL status.
CPU & Memory: Usage, temperature, model, core counts, RAM and swap statistics.
Disk & Storage: Partition usage, inodes, mount options, block devices, I/O metrics, RAID status, SMART health, largest files, file locks, and logrotate configuration.
Network: Interface I/O, active connections, listening ports, DNS resolution, ping latency, IP geolocation and ASN lookups.
Processes: List processes sorted by CPU/memory, open file descriptors, top I/O processes, shared memory segments, and file locks.
Docker: Full container lifecycle insight—containers, images, networks, volumes, live stats, logs, process listing, diff, disk usage, and system-wide snapshots.
Services & Automation: Systemd units and service details, journal logs with filtering, user/system cron jobs, user timers, and time synchronization status (NTP/Chrony).
Security: Audit firewall, SSH hardening, SUID binaries, world-writable files, SELinux/AppArmor status, failed logins, logged-in users, kernel audit logs, and a security score.
Packages: Installed packages and available updates.
Hardware: GPU info (usage, memory, temp, power), PCI/USB buses, power/battery analytics.
Desktop Session: Display protocol (Wayland/X11) and desktop environment.
Diagnostics & Utilities: Deep /proc inspection (interrupts, vmstat, slabinfo, etc.), man pages, environment variables, and system snapshots.
Additional Features:
Configurable via JSON config file or environment variable; per-tool timeout and disable options; runtime reload via SIGHUP.
19 MCP Resources for system data access.
Comprehensive system and Docker snapshots in a single call.
Provides tools for monitoring Docker containers, images, networks, volumes, disk usage, system info, and stats, enabling management and inspection of Docker resources on the host.
Provides tools for detecting the Wayland display protocol and desktop environment identifiers, as well as runtime configuration details for the desktop session.
Click on "Install 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., "@linux-mcpcheck system health"
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.
linux-mcp - Linux MCP Server
A Linux system monitoring server built on the Model Context Protocol (MCP). Provides real-time system information - CPU, memory, disk, network, processes, Docker, and more - via MCP tools over STDIO transport.
Features
System - hostname, OS, kernel, architecture, uptime, load averages
CPU - usage, model, frequency, core counts, temperature sensors
Memory - RAM and swap usage with percentages
Disk - per-partition usage, inodes, mount options, largest files, block devices
Network - interface stats, active connections, listening ports, DNS, ping, IP geolocation & ASN lookup
Processes - running processes sorted by CPU or memory, open file descriptors per process
Docker - containers, images, networks, volumes, disk usage, system info, stats for all containers, system snapshot
Services & automation - systemd units, service status, user timers, crontab, system cron jobs
Security - active user sessions, failed login detection, SELinux/AppArmor status, firewall/SSH/SUID/world-writable audit with security score
Packages - installed packages and available updates (pacman, dpkg)
Hardware - GPU info, PCI/USB bus devices, power/battery analytics
Desktop session - Wayland/X11 protocol, DE identifiers, runtime config
Storage health - RAID status, logrotate configuration, time synchronization, SMART disk health, per-device I/O metrics
System health - comprehensive health assessment with memory, disk, load, and systemd checks
/proc diagnostics - deep /proc inspection: interrupts, softirqs, vmstat, diskstats, filesystems, kernel version, slabinfo
Man pages - system manual pages for any installed command
Snapshot - comprehensive system overview in a single call
MCP Resources - system data also accessible as readable resources
Related MCP server: DivLens MCP
Prerequisites
Go 1.27+ (to build from source)
Linux (the server targets Linux; some tools use Linux-specific paths)
Docker (optional - only needed for Docker tools)
Installation
Via MCP Registry
Discover the server on the MCP Registry and install via your MCP client (VS Code one-click install, or manual config).
Download pre-built binary
Download the latest binary from the GitHub Releases page:
curl -LO https://github.com/Mohabdo21/linux-mcp/releases/latest/download/linux-mcp
chmod +x linux-mcpA fully static build (no libc dependency) is also available as linux-mcp_static.
Build from source
git clone https://github.com/Mohabdo21/linux-mcp.git
cd linux-mcp
make buildThe binary is placed at bin/linux-mcp.
For a fully static binary (no libc dependency):
make build-staticUsage
The server communicates over STDIO transport, following the MCP standard. It is designed to be launched by an MCP client (e.g., Claude Desktop, Claude Code, Codex, OpenCode, or any MCP host).
Running directly
./bin/linux-mcpThis starts the server and listens for MCP requests on STDIN/STDOUT.
Integration
Add the following to your OpenCode configuration:
{
"mcp": {
"linux-mcp": {
"type": "local",
"command": ["/path/to/linux-mcp"],
"enabled": true
}
}
}Add the server via the CLI:
claude mcp add linux-mcp -- /path/to/linux-mcpTo scope it to all your projects instead of just the current one:
claude mcp add linux-mcp --scope user -- /path/to/linux-mcpOr create a .mcp.json file in your project root for team-shared configuration:
{
"mcpServers": {
"linux-mcp": {
"type": "stdio",
"command": "/path/to/linux-mcp"
}
}
}Verify the connection inside a Claude Code session with /mcp.
Add the server via the CLI:
codex mcp add linux-mcp -- /path/to/linux-mcpOr add it manually to ~/.codex/config.toml (or .codex/config.toml for project-scoped config):
[mcp_servers.linux-mcp]
command = "/path/to/linux-mcp"Verify the connection with codex mcp list.
Tools and resources
69 tools and 19 resources covering system, CPU, memory, disk, network, processes, Docker, security, packages, hardware, and more.
Full tool and resource reference
Configuration
The server can be configured via a JSON file loaded from ~/.config/linux-mcp/config.json or the LINUX_MCP_CONFIG environment variable.
{
"log_level": "info",
"timeouts": {
"get_system_snapshot": "60s",
"ping_host": "5s"
},
"disabled": []
}Field | Description |
| One of |
| Per-tool timeout overrides as Go duration strings |
| List of tool names to disable at startup |
The server also handles SIGHUP to reload the configuration file at runtime without restarting.
MCP Registry
Published on the MCP Registry as io.github.Mohabdo21/linux-mcp.
License
Dependencies
modelcontextprotocol/go-sdk - MCP SDK for Go
shirou/gopsutil/v4 - System metrics (CPU, memory, disk, network, processes, sensors)
docker/go-sdk - Docker Engine API client
moby/moby/client - Docker client library
ip-api.com - Free IP geolocation API (used by
get_ip_info)
Available Tools
69 toolscheck_updatesA
Counts or lists available package updates without applying them (pacman -Qu or apt list --upgradable). Read-only, no cache refresh. Fatal if the package manager is unsupported; a pacman error with empty output returns an empty list. Use to see pending updates; get_installed_packages for current versions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| errors | No | |
| updates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so well: it states the tool is read-only, does not refresh cache, may be fatal on unsupported package managers, and handles a pacman error with empty output by returning an empty list. This is thorough and builds accurate expectations.
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 the core purpose, and every sentence adds value: operation, behavior, and usage guidance. There is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter tool, the description covers when to use it, what it does, its limitations, and error behavior. Since an output schema exists, return value details are not needed. The description is complete and well-scoped.
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 is empty (100% coverage), so the baseline is 4. The description adds no parameter-specific semantics because there are none, but it does mention the underlying commands, which provides useful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Counts or lists available package updates without applying them' and even gives the underlying commands (pacman -Qu or apt list --upgradable). It also distinguishes itself from the sibling get_installed_packages by noting it handles pending updates rather than current versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use to see pending updates; get_installed_packages for current versions,' providing a clear usage context and naming an alternative tool. It also notes the tool does not apply updates or refresh cache, which helps avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_logsA
Returns kernel audit events from journalctl -k or /var/log/audit/audit.log (AVC denials, system calls). source param: journalctl, audit.log, or auto (default). lines defaults to 50. Read-only; fatal if the chosen source is unavailable. Use for security forensics; get_failed_logins for login attempts.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | number of recent entries (default: 50) | |
| source | No | audit source: 'journalctl', 'audit.log', or 'auto' (default: auto) |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| entries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly states the tool is read-only and that it is fatal if the chosen source is unavailable, which warns about error conditions. It does not mention permissions or output formatting, but the output schema likely covers return values, so the description adds meaningful behavioral context beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, followed by parameter defaults and usage guidance. Every sentence adds distinct value, and the alternative tool is mentioned efficiently. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two simple parameters and an output schema, the description is complete. It covers purpose, sources, parameter defaults, error behavior, and use cases, while also pointing to a sibling tool for related needs. The output schema handles return-value details, so no additional explanation is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both parameters (lines and source) have descriptions specifying defaults and allowed values. The description restates the same information ('source param: journalctl, audit.log, or auto (default). lines defaults to 50') without adding new semantic depth, so it provides no added value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns kernel audit events from specific sources (journalctl -k or /var/log/audit/audit.log) with examples of event types (AVC denials, system calls). It explicitly distinguishes from sibling tool get_failed_logins by directing users to that tool for login attempts.
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 explicit usage context ('Use for security forensics') and an explicit alternative ('get_failed_logins for login attempts'). It also cautions about fatal behavior when the source is unavailable, which helps agents decide when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_devicesA
Returns block devices and partitions: names, sizes, filesystem types, and mount points. Read-only from sysfs and /proc/mounts. Loop, ram, and zram devices are skipped. Errors land in the errors field. Use for storage inventory; get_disk_info for usage percent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| devices | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the operation is read-only ('Read-only from sysfs and /proc/mounts'), excludes certain device types, and that errors are placed in an 'errors' field. This is rich behavioral context beyond what any structured field could provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. The first sentence states the primary purpose, the second covers behavioral constraints, and the third provides usage guidance. Every sentence earns its place with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a tool with no parameters and an output schema. It covers read-only behavior, skipped device types, error handling, and usage compared to a sibling tool. The output schema handles return value details, so the description need not repeat them.
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 trivially 100%. The description adds no parameter-specific details, but none are needed. The baseline score of 4 for 0-parameter tools is appropriate, and the description does not detract from this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Returns block devices and partitions: names, sizes, filesystem types, and mount points.' This is a specific verb+resource definition that distinguishes it from siblings like get_disk_info, which is explicitly noted as handling usage percent.
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?
It provides explicit usage guidance: 'Use for storage inventory; get_disk_info for usage percent.' This names the alternative tool and gives a clear directive on when to use this tool vs. the alternative. It also implies when not to rely on it by noting loop, ram, and zram devices are skipped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_boot_blameA
Returns systemd units ordered by init time from systemd-analyze blame: unit names with their start durations. Read-only; fatal only if systemd-analyze is missing or fails. Use to find slow-starting services; get_boot_critical_chain for the dependency chain.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| entries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses read-only nature and the failure condition ('fatal only if systemd-analyze is missing or fails'), plus output composition. This is strong behavioral transparency for a simple read command.
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-loads the primary function and result, then adds a usage pointer. Every sentence earns its place with no verbosity or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with an output schema, the description covers what is returned, ordering, read-only property, failure behavior, and provides a sibling alternative. This is fully complete for its simplicity.
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, so parameter-level semantics are not applicable. The baseline for 0-parameter tools is 4, and the description appropriately omits parameter details.
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 systemd units ordered by init time from systemd-analyze blame, with unit names and durations. It distinguishes itself from the sibling get_boot_critical_chain by directly acknowledging and pointing to it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use to find slow-starting services' and directs users to get_boot_critical_chain for the dependency chain. This provides clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_boot_critical_chainA
Returns the time-critical boot chain from systemd-analyze critical-chain: a dependency tree of units with their active-time point and start duration. Read-only; fatal only if systemd-analyze is missing or fails. When unit is omitted, returns the full chain to the default target (usually graphical.target). When unit is provided (e.g. 'nginx.service'), returns only the chain from that unit downward. Use to find what delays the boot target; for raw per-unit durations prefer get_boot_blame, for phase-level breakdown prefer get_boot_time.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | optional unit name to start the chain from (e.g. 'graphical.target') |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | |
| errors | No | |
| target | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: it declares read-only behavior, discloses the fatal condition (systemd-analyze missing or fails), and explains the optional parameter's effect on scope. This goes well beyond a basic 'get' description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense, front-loading the core purpose, then covering safety, parameter behavior, and alternatives. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and an output schema, the description covers the return value semantics, failure mode, usage guidance, and sibling differentiation. Nothing needed for correct selection and invocation is missing.
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?
Even though schema coverage is 100%, the description adds significant semantic value: it explains the meaning of omitting unit (full chain to default target) vs. providing it (chain from that unit downward) and gives a concrete example. This is far more useful than the schema's brief parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb (Returns), a specific resource (time-critical boot chain from systemd-analyze critical-chain), and the data shape (dependency tree with active-time point and start duration). It also distinguishes itself from siblings by naming get_boot_blame and get_boot_time, making its unique role clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('Use to find what delays the boot target') and gives alternatives for different use cases ('for raw per-unit durations prefer get_boot_blame, for phase-level breakdown prefer get_boot_time'). Also explains behavior with and without the optional unit parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_boot_timeA
Returns the boot-time breakdown from systemd-analyze time: per-phase durations (firmware, loader, kernel, initrd, userspace), total startup time, and the reached target. Read-only; fatal only if systemd-analyze is missing or fails. Use to quantify where boot time goes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| errors | No | |
| phases | Yes | |
| target | No | |
| total_seconds | No | |
| target_reached_time | No | |
| target_reached_seconds | No |
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 explicitly states the tool is read-only and mentions the only fatal condition (systemd-analyze missing or failing), which is valuable behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence packs the core functionality and output details, while the second covers safety and use case. 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?
The description covers the return content (phases, total time, target), the tool's source (systemd-analyze), the failure mode, and the intended use. Given that an output schema exists, the description is sufficiently complete for this simple, zero-parameter 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 schema coverage is 100% (trivially). The baseline for 0 params is 4, and the description adds useful context about the tool's output rather than needing to explain 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 it returns the boot-time breakdown from systemd-analyze time, listing specific phases (firmware, loader, kernel, initrd, userspace), total time, and target. This concrete verb+resource phrasing distinguishes it from sibling tools like get_boot_blame and get_boot_critical_chain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit use case: 'Use to quantify where boot time goes.' It does not mention when not to use or name alternatives, but the context is clear and non-misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cpu_infoA
Returns CPU model, frequency, core count, and current usage percent. Read-only from /proc/stat and /proc/cpuinfo. Fatal only if either source is unreadable. Use for capacity planning or busy/idle checks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| cores | Yes | |
| errors | No | |
| usage_percent | Yes | |
| physical_core_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly discloses read-only access, the data sources (/proc/stat and /proc/cpuinfo), and the fatal condition (unreadable source). This is meaningful behavioral disclosure beyond just saying 'read-only.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the return values, followed by read-only nature, fatal condition, and use case. Every sentence contributes meaning with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no parameters) and has an output schema, so return format coverage is handled. The description covers purpose, data sources, fatal behavior, and usage context, making it complete for an agent to select and invoke 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?
The tool has zero parameters, and the schema is empty with 100% coverage. The description adds context about the tool's internal behavior (reading from specific proc files) but does not need to document parameters. Baseline 4 for no parameters 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: 'Returns CPU model, frequency, core count, and current usage percent.' The verb 'Returns' plus the resource (CPU) and specific output fields make it distinct from siblings like get_cpu_temperature and get_load_average.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use for capacity planning or busy/idle checks.' While it does not name alternatives or explicitly say when not to use, it provides clear applicable scenarios, earning a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cpu_temperatureA
Returns current CPU temperature from hwmon sensors if available. Read-only. If no sensors are exposed, returns a message in the errors field instead of failing. Use for thermal monitoring; prefer get_system_health_check for an overall verdict.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| message | No | |
| temperatures | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses read-only behavior and the graceful fallback where a message is returned in the errors field instead of failing. It does not cover output details, but an output schema exists and the fallback behavior is a key non-obvious trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose, then read-only status, fallback behavior, and usage guidance. Every sentence adds value with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only sensor tool with an output schema, the description covers purpose, usage scenario, alternative tool, and error handling. No additional context is needed for an agent to select and invoke it 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?
The tool has zero parameters, so schema coverage is trivially 100%. Per the rubric, a baseline of 4 applies because there are no parameter semantics to explain, and the description correctly avoids fabricating param-related detail.
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 current CPU temperature from hwmon sensors, which is a specific verb (returns) plus resource (CPU temperature). It also distinguishes itself from the sibling get_system_health_check by noting it provides raw temperature data rather than an overall verdict.
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?
Explicit guidance is provided: 'Use for thermal monitoring; prefer get_system_health_check for an overall verdict.' This tells the agent when to choose this tool and explicitly names an alternative for a different scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cron_jobsA
Returns system-level cron jobs from /etc/crontab and the periodic cron directories (/etc/cron.daily, .weekly, .hourly). Read-only; no root needed. Missing paths land in the errors field. Use for system automation; get_user_automation for user-level tasks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| daily_jobs | Yes | |
| hourly_jobs | Yes | |
| weekly_jobs | Yes | |
| system_crontab | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses key behaviors: it is read-only, requires no root, and missing paths land in the errors field. This goes beyond the basics and provides actionable safety and error-handling information.
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 concise sentences, front-loaded with the main purpose, followed by safety and usage guidance. Every sentence provides useful information 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?
For a zero-parameter tool with an output schema, the description is complete. It covers what is returned, error behavior, and usage context, making it sufficient for an agent to select and invoke 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?
The tool has zero parameters, so the description does not need to explain any. Baseline for zero parameters is 4, and the description adds value by explaining what the tool returns and how missing paths are handled.
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 system-level cron jobs from specific locations (/etc/crontab and periodic directories), using a specific verb and resource. It also distinguishes itself from get_user_automation, which is its sibling.
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?
It explicitly says to use this for system automation and points to get_user_automation for user-level tasks. It also notes that it is read-only and requires no root, providing clear context for safe usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_desktop_session_infoA
Returns display protocol (Wayland/X11), desktop environment, and related environment config. Read-only from environment variables; never fails. Use to understand the GUI session the server runs under.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| display | Yes | |
| runtime_dir | Yes | |
| session_type | Yes | |
| current_desktop | Yes | |
| wayland_display | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility and does so excellently: it states the tool is read-only from environment variables and never fails. This directly informs the agent about safety and reliability without needing separate 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 two sentences: the first states what it returns, the second covers behavior and usage. Every word earns its place; it is front-loaded with the core purpose and includes no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description is complete: it explains purpose, behavior, and when to use it. Nothing relevant is missing for an agent to invoke it 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?
The tool has zero parameters, so the baseline is 4. The description adds no parameter-specific details because none exist, which is appropriate. The schema coverage is vacuously 100%, and the description focuses on output and behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns display protocol (Wayland/X11), desktop environment, and related environment config. The verb 'returns' and specific resource make the purpose unmistakable, and it is distinct from the many other get_* sibling 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 an explicit use case: 'Use to understand the GUI session the server runs under.' It does not explicitly mention alternatives or when not to use, but the context is clear and sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disk_infoA
Returns disk usage per mounted partition. Params: mount_point (exact match, must start with /) and threshold (only partitions at or above it). Read-only via statfs. Fatal only if partitions cannot be listed; per-partition read errors are skipped. Use for capacity; get_inode_usage when 'disk full' persists with free space.
| Name | Required | Description | Default |
|---|---|---|---|
| threshold | No | optional threshold filter (e.g. 80 means only partitions >=80% used) | |
| mount_point | No | optional mount point filter |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| partitions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosure. It discloses that the tool is 'Read-only via statfs,' which signals safety, and details error handling: 'Fatal only if partitions cannot be listed; per-partition read errors are skipped.' It also adds parameter constraints ('exact match, must start with /'). This is rich behavioral context, though it could mention the output format, but an output schema exists.
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, front-loaded with the main purpose, followed by parameter details, error behavior, and usage guidance. Every sentence adds information, with no filler or redundancy. It is concise yet comprehensive.
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 moderate complexity, the description covers the core function, parameter semantics, error behavior, and even provides an alternative tool. The output schema is present, so return value documentation is not needed. The description is self-sufficient for an agent to select and invoke 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 adds meaning beyond the schema: mount_point requires 'exact match, must start with /' and threshold means 'only partitions at or above it.' These clarifications are valuable and make parameter usage clearer than the schema alone.
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 function: 'Returns disk usage per mounted partition.' It uses a specific verb ('Returns') and resource ('disk usage per mounted partition'), and it distinguishes itself from sibling tools by contrasting with get_inode_usage. This is a clear, specific purpose statement.
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 explicit guidance: 'Use for capacity; get_inode_usage when "disk full" persists with free space.' This names an alternative tool for a specific scenario, making when-to-use and when-not-to-use clear. It also frames the tool as a capacity monitoring tool, which is useful context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disk_io_metricsA
Returns per-device disk I/O: reads, writes, sectors, and timings. Read-only from /proc/diskstats (loop/ram/zram skipped); fatal only if unreadable. Use for storage performance; get_top_io_processes for per-process I/O.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| metrics | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool reads from /proc/diskstats, skips loop/ram/zram devices, and is fatal only if unreadable. This is transparent about data source, filtering, and error behavior—excellent context beyond the basic read-only claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, followed by behavioral details and usage guidance. Every sentence adds value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, an output schema exists, and sibling tools provide contrast, the description is fully complete. It covers what the tool does, how it behaves, when to use it, and alternatives—enough for an agent to select and invoke it 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?
The tool has zero parameters, so the baseline is 4. The empty input schema is fully documented, and no parameter details are needed. The description concentrates on output semantics rather than parameter meaning, 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 states a specific verb ('Returns') and resource ('per-device disk I/O') with fields ('reads, writes, sectors, and timings'). It distinguishes from siblings by explicitly mentioning per-process I/O as a different tool (get_top_io_processes).
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?
Explicit guidance is given: 'Use for storage performance; get_top_io_processes for per-process I/O.' This tells the agent when to invoke this tool and names the alternative for a different use case. The read-only and failure conditions also help clarify appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_container_detailsA
Returns a container's state, config, env, mounts, and network settings. Read-only via the Docker API; fatal if the daemon is unreachable or the container is unknown. Use to inspect one container; get_docker_info to list them.
| Name | Required | Description | Default |
|---|---|---|---|
| container_id | Yes | container name or ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| container | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It discloses the read-only nature ('Read-only via the Docker API') and failure conditions ('fatal if the daemon is unreachable or the container is unknown'), which are important behavioral traits. It doesn't mention permissions or other edge cases, but for a read-only inspection tool, this covers the key risks.
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, each serving a distinct purpose: outlining the return content, disclosing behavior, and providing usage guidance. It is concise, front-loaded with the core function, and contains no irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single parameter and an output schema, so the description does not need to describe return values in detail. It covers purpose, usage, behavior, and failure modes, making it sufficiently complete for an agent to select and invoke the tool correctly. The distinction from get_docker_info adds important context within the sibling toolset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the only parameter, container_id, as 'container name or ID' (100% coverage). The description does not add additional parameter semantics beyond what the schema already provides, so the 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 function: 'Returns a container's state, config, env, mounts, and network settings.' It uses a specific verb and resource, and explicitly differentiates from get_docker_info by noting 'Use to inspect one container; get_docker_info to list them.' This makes the purpose unmistakable and distinguishes it from 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?
Explicit guidance is provided: 'Use to inspect one container; get_docker_info to list them.' This tells the agent when to use this tool (inspecting a single container) and when to use an alternative (listing containers). It effectively communicates both the intended use and the boundary with a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_container_diffA
Returns filesystem changes (added, modified, deleted) in a container since it started. Read-only via the Docker API. Use to see what a container wrote to its writable layer.
| Name | Required | Description | Default |
|---|---|---|---|
| container_id | Yes | container name or ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| changes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly states 'Read-only via the Docker API', which is a key behavioral trait. It also clarifies the temporal scope ('since it started'). However, it does not disclose potential error cases or permission requirements, which keeps it from a 5.
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 no wasted words. It front-loads the core function and immediately follows with usage guidance.
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 a simple one-parameter schema and an output schema, so the description does not need to explain return values. It covers the core behavior and usage. It could mention prerequisites like Docker daemon access, but that is a common assumption. Overall, it is complete enough for this 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?
Schema description coverage is 100% for container_id, so the baseline is 3. The description does not add any extra meaning about the parameter beyond what the schema already provides (e.g., it does not mention that it accepts names or IDs, which the schema already states).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Returns' with a clear resource ('filesystem changes in a container') and scope ('since it started'), listing the types of changes (added, modified, deleted). It clearly distinguishes from sibling tools like get_docker_container_logs or get_docker_container_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use to see what a container wrote to its writable layer' provides clear usage context. It implies when to use this tool, though it does not explicitly mention alternatives or exclusions. The context is sufficient for a single-purpose read-only tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_container_logsA
Returns a container's stdout/stderr log lines. Params: tail (line count) and timestamps. Read-only via the Docker API. Fatal if the daemon is unreachable or the container is unknown. Environment values are redacted.
| Name | Required | Description | Default |
|---|---|---|---|
| tail | No | number of lines to tail (default: 100, max: 10000) | |
| timestamps | No | include timestamps (default: false) | |
| container_id | Yes | container name or ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| logs | Yes | |
| errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the operation is read-only, describes fatal error conditions (daemon unreachable or unknown container), and notes that environment values are redacted. This goes beyond the schema and provides critical 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?
The description is four concise sentences, front-loaded with the purpose. Each sentence adds value: what it returns, key params, read-only/error behavior, and redaction. No waste or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a simple log retrieval tool. It explains the output (log lines), key behaviors (read-only, fatal errors, redaction), and relies on the existing output schema for return structure. Given the low complexity and good annotation coverage, no further 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 description coverage is 100%, so the baseline is 3. The description mentions 'tail (line count) and timestamps' but this simply repeats what the schema already documents. It adds no additional parameter semantics, so a 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 function with a specific verb and resource: 'Returns a container's stdout/stderr log lines.' It distinguishes this from sibling Docker tools (e.g., stats, top, details) by focusing on log retrieval, making 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 context for use is clear: use this to retrieve container logs. It doesn't explicitly name alternatives or when-not scenarios, but the description's focus on log lines and the sibling tool names make the intended usage obvious. A score of 4 is appropriate for clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_container_statsA
Returns live CPU, memory, network I/O, and PID stats for running containers. Params: container_ids comma-separated or 'all' (running only). Read-only, one-shot sample. Stats only exist for running containers; unknown or stopped ids error. For all containers in one call use get_docker_stats_all.
| Name | Required | Description | Default |
|---|---|---|---|
| container_ids | Yes | container name(s) or ID(s), comma-separated, or 'all' for all running containers |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| containers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It states 'Read-only, one-shot sample' and 'Stats only exist for running containers; unknown or stopped ids error', providing key operational expectations without need for digging into schema or output.
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 with no fluff. It front-loads the core purpose, then covers parameters, behavior, and an alternative in a tight, structured manner.
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 is simple with one required parameter, an output schema exists, and the description covers usage, errors, read-only nature, and alternatives. Nothing important is missing for an agent to select and invoke this 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 description coverage is 100% and already explains container_ids as 'container name(s) or ID(s), comma-separated, or 'all' for all running containers'. The description adds only minor clarification ('running only', 'unknown or stopped ids error'), which is more behavioral than parameter-level semantics. Thus baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns live CPU, memory, network I/O, and PID stats for running containers. The verb 'Returns' with a specific resource and scope distinguishes it from sibling tools like get_docker_container_details or get_docker_container_top.
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?
It explicitly directs users to 'use get_docker_stats_all' for all containers in one call, an alternative. It also clarifies when to use this tool (for specific containers or 'all' running) and notes that unknown or stopped ids error, guiding appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_container_topA
Returns the processes running inside a container. Read-only via the Docker API; fatal if the daemon is unreachable or the container is unknown. Use to debug container-level process state.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | optional arguments to ps (e.g. aux) | |
| container_id | Yes | container name or ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| titles | Yes | |
| processes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses 'Read-only via the Docker API' (safe operation) and 'fatal if the daemon is unreachable or the container is unknown' (error behavior). This is valuable beyond the schema, though it doesn't detail output structure or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and every sentence adds useful information (purpose, safety/error characteristics, use case). 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 an output schema exists, return values need not be explained. The description covers purpose, read-only nature, fatal error conditions, and a use case, making it sufficiently complete for 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?
Schema description coverage is 100%, with both container_id and args described in the input schema. The description itself adds no parameter semantics beyond what the schema already provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Returns the processes running inside a container', which is a specific verb+resource combination. It distinguishes from siblings like get_docker_container_details and get_docker_container_stats by focusing on process-level information.
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?
It gives a direct use case: 'Use to debug container-level process state.' However, it does not explicitly mention when not to use it or point to alternative tools, so it provides clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_disk_usageA
Returns Docker disk usage broken down by containers, images, volumes, and build cache. Read-only via the Docker API. Use to find what is consuming disk space.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| images | Yes | |
| volumes | Yes | |
| containers | Yes | |
| build_cache | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description explicitly discloses 'Read-only via the Docker API,' informing the agent that this is a safe read operation. It also discloses the output categories, providing useful behavioral context beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main purpose and breakdown, followed by usage guidance. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters) and the presence of an output schema, the description covers purpose, usage, and read-only nature completely. No 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?
The tool has 0 parameters, so parameter information is not needed. Baseline of 4 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 states a specific action ('Returns') and a specific resource ('Docker disk usage') with a clear breakdown by containers, images, volumes, and build cache. This clearly distinguishes the tool from siblings like get_docker_volumes or get_docker_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use to find what is consuming disk space.' It provides clear context but does not mention exclusions or alternative tools, so it falls short of full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_image_detailsA
Returns an image's config, env, entrypoint, labels, and layers. Read-only via the Docker API; fatal if the daemon is unreachable or the image is unknown. Use to inspect a single image; get_docker_image_history for build steps.
| Name | Required | Description | Default |
|---|---|---|---|
| image_id | Yes | image name or ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| image | Yes | |
| errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the tool is read-only via the Docker API and discloses fatal conditions (daemon unreachable, unknown image), which is valuable operational context beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first states the core function, the second adds behavioral caveats, the third provides usage guidance and sibling reference. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and an output schema, the description covers what the tool returns, error conditions, read-only nature, and when to use it. It is fully complete given the richness of the schema and sibling 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?
The schema covers the single parameter image_id with the description 'image name or ID', so schema coverage is 100%. The tool description adds no additional parameter-specific meaning beyond implying the image to inspect, so the 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 an image's config, env, entrypoint, labels, and layers, using the specific verb 'Returns' with a well-defined resource. It differentiates from the sibling tool get_docker_image_history, which is for build steps.
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?
It explicitly says to use this tool to inspect a single image and directs users to get_docker_image_history for build steps. This provides clear when-to-use guidance and names the alternative, making it easy for an agent to select the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_image_historyA
Returns an image's layer history: commands, sizes, and creation times. Read-only via the Docker API. Use to understand what an image is built from; get_docker_image_details for config and labels.
| Name | Required | Description | Default |
|---|---|---|---|
| image_id | Yes | image name or ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| layers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It explicitly states 'Read-only via the Docker API', a key safety trait, and implies an external Docker dependency. This goes beyond what the tool name alone would convey, though it could mention error behavior or prerequisites.
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 crisp sentences, each serving a purpose: functionality, read-only safety, and usage guidance with a fallback tool. There is no filler or 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 low complexity (one parameter, read-only operation) and the presence of an output schema, the description covers all essential aspects: what it returns, its safety, when to use it, and how it differs from a sibling tool. It is fully adequate for an agent to select and invoke 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?
The only parameter image_id is fully described in the schema as 'image name or ID'. The description adds no further parameter semantics, but since schema coverage is 100%, the 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 'Returns an image's layer history: commands, sizes, and creation times' — a specific verb and resource. It also distinguishes itself from the sibling get_docker_image_details by mentioning it for config and labels.
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 when-to-use guidance: 'Use to understand what an image is built from'. It also directs users to get_docker_image_details for a different need, clearly differentiating the tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_infoA
Returns Docker containers (including stopped) and images. Read-only via the Docker API. Fatal if the daemon is unreachable. Use for a Docker inventory; get_docker_system_snapshot for a fuller view.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| images | Yes | |
| containers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses that the tool is read-only via Docker API and is fatal if the daemon is unreachable, which are important behavioral traits. It does not mention limits or pagination, but for a simple inventory read, this is sufficient.
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 and front-loaded: it immediately states the main output, then adds safety and error behavior, and finishes with usage guidance. Every sentence provides value and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters) and presence of an output schema, the description is complete. It specifies the scope of returned data, read-only guarantee, failure mode, and appropriate usage, making it well-rounded for an agent to select and invoke 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?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter semantics since there are none. The empty schema is fully covered, and the description adds context about what is returned rather than parameter details.
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 Docker containers (including stopped) and images, using specific verbs and resources. It distinguishes itself from siblings by highlighting 'including stopped' and aligning with 'Docker inventory' while pointing to get_docker_system_snapshot for a fuller view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use for a Docker inventory; get_docker_system_snapshot for a fuller view,' providing direct when-to-use guidance and naming an alternative. It also notes the read-only nature and fatal failure condition, which helps selection decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_networksA
Returns Docker networks with driver, scope, and configuration details. Read-only via the Docker API. Use for network topology debugging.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| networks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only via the Docker API', which is a key safety trait. While it does not mention permissions or failure modes, this is adequate for a simple read-only API call.
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 short sentences with no filler. Each sentence adds value: what it returns, its safety model, and its intended use case. It is appropriately sized 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?
With no parameters and an output schema present, the description covers the essential aspects: purpose, read-only behavior, and use context. Nothing else needs to be explained for a simple listing utility.
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%, so no parameter ambiguity exists. The baseline score of 4 for zero-parameter tools applies here, and the description does not need to add parameter details.
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 returns Docker networks with driver, scope, and configuration details. The verb 'Returns' and resource 'Docker networks' are specific, and this tool is clearly distinct from sibling tools targeting containers, images, volumes, or system information.
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 recommends use for network topology debugging, providing a clear usage context. It does not mention alternatives or exclusions, but for a zero-parameter read-only listing tool, this is sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_stats_allA
Returns CPU, memory, network, and block I/O for all running containers in one call. Optional containers param filters by name or ID. Read-only, one-shot. Use instead of repeated get_docker_container_stats calls for a fleet overview.
| Name | Required | Description | Default |
|---|---|---|---|
| containers | No | optional list of container names or IDs to filter |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| containers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the operation is read-only and one-shot, which are important behavioral traits. However, it does not mention potential performance impacts or any error conditions, though the simple nature of the tool mitigates this.
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, each earning its place: what it returns, the optional filter, and when to use it. It is front-loaded and concise with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an output schema, the description covers the purpose, the filter, usage context, and safety profile. No critical information is missing given the presence of the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'containers' is fully described in the schema (100% coverage). The description adds no new meaning beyond restating that it filters by name or ID, so it provides minimal added value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns CPU, memory, network, and block I/O for all running containers. It explicitly distinguishes itself from the sibling get_docker_container_stats by positioning as a fleet overview alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Use instead of repeated get_docker_container_stats calls for a fleet overview.' This tells the agent when this tool is appropriate and names the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_system_infoA
Returns Docker daemon info: version, storage driver, runtimes, and resource counts. Read-only via the Docker API; fatal if the daemon is unreachable. Use to check daemon config and health.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| info | Yes | |
| errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it discloses 'Read-only via the Docker API' and 'fatal if the daemon is unreachable.' This is valuable operational context that goes beyond a generic 'get info' statement.
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 primary function, and includes a use case and operational caveat. Every word adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description covers purpose, specific data returned, read-only nature, and a fatal failure condition. It is fully sufficient for an agent to select and invoke 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?
The tool has zero parameters, so the baseline is 4. The description adds no parameter details, but none are needed; it correctly focuses on the tool's output and behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') and resource ('Docker daemon info'), enumerating concrete fields (version, storage driver, runtimes, resource counts). This distinguishes it from sibling tools like get_docker_info, which may be broader, and clearly states the tool's scope.
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?
It explicitly says 'Use to check daemon config and health,' providing a clear use case. However, it does not mention alternatives or when-not-to-use, so it stops short of full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_system_snapshotA
Returns a combined Docker snapshot: containers, images, running stats, disk usage, and networks. Read-only via the Docker API. Per-part failures land in the errors field; the call still succeeds. Heaviest Docker call - prefer narrower get_docker_* tools for a specific question.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| info | Yes | |
| stats | Yes | |
| errors | No | |
| disk_usage | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description disclosures essential behavioral traits: read-only via Docker API, per-part failures land in the errors field while the call still succeeds, and it is the heaviest Docker call. This goes beyond the bare minimum, though it does not cover potential pagination, rate limits, or authorization details, which would be valuable for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: a clear functional summary, a key behavioral caveat, and a usage recommendation. Each sentence adds distinct value with no redundancy or filler. It is appropriately 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?
Despite having no annotations, the description covers the tool's purpose, safety (read-only), failure semantics, and performance tradeoffs. Since an output schema exists, the description does not need to list return fields. It provides complete context for an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain parameter meanings. Per the baseline for 0 params, a score of 4 is appropriate. The description appropriately mentions the errors field in the output, which indirectly hints at the output shape.
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 opens with a specific verb and resource ('Returns a combined Docker snapshot') and enumerates its contents (containers, images, running stats, disk usage, networks). It clearly distinguishes itself from sibling get_docker_* tools by framing itself as a combined/heavy snapshot, which is a distinct scope.
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 final sentence explicitly states when to prefer this tool: 'Heaviest Docker call - prefer narrower get_docker_* tools for a specific question.' This gives clear alternatives and a performance-based criterion for choosing this tool versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_volumesA
Returns Docker volumes with driver, mountpoint, size, and labels. Read-only via the Docker API. Use to inventory storage; get_docker_disk_usage for space accounting.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| volumes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses 'Read-only via the Docker API', a key behavioral trait. It also specifies returned data fields. For a zero-parameter read operation, this is sufficient, though it doesn't mention potential errors or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states the return type and fields, second notes read-only nature and usage guidance. Efficient, front-loaded, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only inventory tool with an output schema, the description covers purpose, safety profile, and sibling differentiation. No significant 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?
Tool has 0 parameters, so baseline is 4. Description adds no parameter details (none needed).
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 states 'Returns Docker volumes with driver, mountpoint, size, and labels' – a specific verb and resource with listed fields. It also differentiates from sibling get_docker_disk_usage by noting that tool for space accounting.
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?
Explicit guidance: 'Use to inventory storage; get_docker_disk_usage for space accounting' – gives a clear use case and names an alternative for a related but distinct purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_environment_variablesA
Returns the server process's environment as a sorted key-value map. search filters by name prefix or substring, case-insensitive. Read-only (os.Environ). Sensitive names (SECRET, TOKEN, PASSWORD, etc.) are redacted to ***. Use to debug PATH, locale, and server configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | optional search string to filter by name (matches prefix or substring, case-insensitive) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| errors | No | |
| variables | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on full responsibility for behavioral disclosure. It accurately states the operation is read-only (os.Environ), describes redaction of sensitive names (SECRET, TOKEN, PASSWORD) to '***', and notes the sorted output format, providing substantial transparency beyond the bare function. No annotations contradict this information.
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 efficiently organized with multiple short sentences, each conveying a distinct piece of information: return type, filtering behavior, read-only nature, redaction policy, and use case. It is slightly redundant with the schema regarding the search filter, but overall it is compact and well-structured without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, read-only operation) and the presence of an output schema, the description covers all essential context: what is returned, how to filter, safety/redaction, and typical use cases. No critical information is missing 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 schema description for the single 'search' parameter already fully explains that it filters by name prefix or substring, case-insensitively. The tool description repeats this same information, adding no new semantic value beyond the schema. With 100% schema coverage, 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 returns the server process's environment as a sorted key-value map, which is a specific verb and resource. It is distinct from sibling tools that focus on other system aspects like networks or CPU, with no ambiguity about what this tool offers.
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 clear usage context by suggesting 'Use to debug PATH, locale, and server configuration,' which tells the agent when this tool is appropriate. However, it does not explicitly mention when not to use it or name any alternative tools, so it stops short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_failed_loginsA
Returns recent failed login attempts (excluding Boot records) with summary statistics. Read-only: lastb -n N, falling back to journalctl if btmp is not readable. Default 20 entries. Errors are non-fatal. Use for security triage; get_audit_logs for kernel and auditd events.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | number of recent entries (default: 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| entries | Yes | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It reveals key behavioral traits: read-only operation, exclusion of Boot records, use of lastb with fallback to journalctl, default entry count, and non-fatal errors. While it doesn't mention auth requirements or response format details, the disclosure is strong for a simple read-only 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 extremely concise—three sentences total—yet packs in purpose, exclusions, read-only nature, fallback mechanism, default, error handling, and usage guidance. Every sentence earns its place 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?
The description covers the core aspects: what the tool returns, what it excludes, how it acquires data, error behavior, and when to use it vs. an alternative. Given the simple one-parameter schema and presence of an output schema, this is quite complete. Minor omission is lack of detail about 'summary statistics', but that is likely covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'lines', which already describes its purpose and default. The description adds minimal new meaning beyond confirming the default ('Default 20 entries') and hinting at the parameter via 'lastb -n N'. This is sufficient given the schema's clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') and clearly identifies the resource ('recent failed login attempts') with a scope qualifier ('excluding Boot records'). It also explicitly distinguishes itself from a sibling tool ('get_audit_logs for kernel and auditd events'), so purpose clarity is excellent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Use for security triage') and names the alternative for other use cases ('get_audit_logs for kernel and auditd events'). It also provides context about the read-only nature and fallback behavior, giving clear guidance on expected behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_locksA
Returns active file locks from /proc/locks: type, mode, PID, byte range, and path. Read-only; an unreadable file is silently swallowed, parse errors go in the errors field. Use to find who holds a lock.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| locks | Yes | |
| errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly notes that the tool is read-only, that unreadable files are silently swallowed, and that parse errors go into the errors field. This transparency goes beyond a simple return statement.
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 states the core function and output fields, the second adds the use case and behavioral caveat. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description is complete. It covers the data source (/proc/locks), output fields, error handling, and intended use case, leaving no gaps for an agent to select and invoke 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?
The tool has zero parameters, so the schema is trivial. The description adds meaningful context by enumerating the output fields and error behavior, which helps the agent understand what data will be returned. Baseline 4 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 function: it returns active file locks from /proc/locks, enumerating the specific fields (type, mode, PID, byte range, path). It also states the tool's purpose ('Use to find who holds a lock'), distinguishing it from sibling get_* tools by focusing exclusively on file locks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear, direct use case: 'Use to find who holds a lock.' This provides clear context for when to use the tool. It does not explicitly mention when not to use it or alternatives, but the use case is sufficient for a read-only diagnostic tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gpu_infoA
Returns GPU usage, memory, temperature, and power draw. Read-only, via nvidia-smi, rocm-smi, or intel_gpu_top in that order of availability. Fatal only if no GPU tool is installed. The Intel fallback reports presence, not metrics. Use for GPU workload monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| gpus | Yes | |
| errors | No | |
| vendor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels. It discloses the read-only nature, the backend tool fallback order (nvidia-smi, rocm-smi, intel_gpu_top), fatal failure only when no GPU tool exists, and the critical Intel fallback limitation (presence only, not metrics).
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?
Four short sentences, each earning its place: purpose, safety/backend, failure behavior, fallback limitation, and usage guidance. Front-loaded with the main functionality; zero redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema (which handles return-value details), the description covers everything else: what it returns, safety, backend selection, failure mode, fallback caveat, and use case. No meaningful gaps remain.
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, so per rubric baseline is 4. The description correctly omits parameter details since there are none to explain; the empty schema requires no compensation.
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 opens with a specific verb and resource: 'Returns GPU usage, memory, temperature, and power draw.' This precisely states what the tool does and clearly differentiates it from siblings like get_cpu_info and get_memory_info.
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 closing sentence, 'Use for GPU workload monitoring,' provides explicit when-to-use context. However, it does not name alternatives or state when not to use this tool, so it stops short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hardware_bus_infoA
Lists PCI and USB devices detected on the system. Read-only via lspci/lsusb with a sysfs fallback; if both fail the error goes in the errors field. search filters any field (bus, slot, class, vendor, device). Use to identify network cards, audio interfaces, and expansion cards for driver troubleshooting.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | optional search string to filter devices by any field (bus, slot, class, vendor, device) |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| pci_devices | Yes | |
| usb_devices | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the read-only nature, the underlying commands (lspci/lsusb with sysfs fallback), and error behavior ('if both fail the error goes in the errors field'), adding significant transparency beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three succinct sentences, each serving a distinct purpose: function, method/error handling, and usage guidance. No filler or redundant wording, and the most important 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?
For a simple tool with one optional parameter and an output schema (as indicated), the description sufficiently covers purpose, method, error handling, and use case. The presence of an output schema means return values are already documented, so no additional explanation 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 description coverage is 100% for the single 'search' parameter, so the baseline is 3. The description repeats the schema's mention of filtering by fields, adding no new semantic detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Lists' and specific resources 'PCI and USB devices detected on the system.' It is distinct from sibling tools like get_cpu_info or get_disk_info, uniquely covering hardware bus devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit use case: 'Use to identify network cards, audio interfaces, and expansion cards for driver troubleshooting.' While it doesn't name alternatives or exclusions, the context is clear and there are no overlapping siblings that would require differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inode_usageA
Returns inode usage per filesystem via df -i. mount_point is an optional exact filter. Read-only; fatal if df is missing or fails. Use when 'disk full' errors persist despite free space - inode exhaustion.
| Name | Required | Description | Default |
|---|---|---|---|
| mount_point | No | optional mount point filter |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| mounts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses safety ('Read-only') and failure behavior ('fatal if df is missing or fails'). This is valuable behavioral context beyond the schema, though it could also mention if any permissions 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?
Three sentences with no filler. Each sentence earns its place: functionality, parameter semantics, and usage guidance are all 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 tool is simple (one optional parameter, output schema exists). The description covers purpose, usage, parameter behavior, and failure mode, making it complete for an agent to invoke 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 description coverage is 100%, so baseline is 3. The description enhances parameter meaning by calling mount_point an 'optional exact filter', clarifying it matches exactly rather than partially.
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 starts with a specific verb 'Returns' and identifies the resource as 'inode usage per filesystem via df -i'. It clearly distinguishes from siblings like get_disk_info by scoping to inode usage and mentioning 'inode exhaustion'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides a usage scenario: 'Use when disk full errors persist despite free space - inode exhaustion.' This is clear context, though it does not mention when NOT to use or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_installed_packagesA
Queries installed packages: pacman -Q on Arch, dpkg -l on Debian. Optional name filter. Read-only. Fatal if the package manager is unsupported (e.g. rpm/dnf) or the query fails. Use to check what is installed; check_updates for available upgrades.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | optional package name filter |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| errors | No | |
| packages | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full burden of behavioral disclosure. It explicitly declares 'Read-only' and warns that the operation is 'Fatal if the package manager is unsupported or the query fails,' which are important operational caveats. It does not mention any permission requirements, but the read-only nature and failure modes are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is two sentences, front-loading the primary action and supported systems, followed by usage guidance. 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 tool's simplicity (one optional parameter) and the presence of an output schema, the description covers the essential operational context: what the tool does, which system families it supports, its read-only nature, failure behavior, and a pointer to the alternative for upgrades. This is sufficient for an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the single parameter with 100% coverage ('optional package name filter'), and the description echoes 'Optional name filter.' No additional semantic detail such as regex or exact-match behavior is provided, so the description adds only minimal value 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 explicitly states 'Queries installed packages' and names the exact package manager commands for Arch and Debian, making the tool's function unambiguous. It also differentiates from sibling tool check_updates by specifying this is for checking what is installed, not for upgrades.
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?
It provides direct usage guidance: 'Use to check what is installed; check_updates for available upgrades.' It also states both supported package managers (pacman, dpkg) and unsupported ones (rpm/dnf), giving the agent a clear precondition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_io_statsA
Returns per-device extended I/O statistics: throughput, IOPS, latency, queue depth, and utilization. Read-only via iostat -xd 1 1. Requires sysstat/iostat installed. Use for storage performance analysis; get_disk_io_metrics for cumulative counters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| devices | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It clearly states the operation is read-only, identifies the underlying command (iostat -xd 1 1), and warns about the prerequisite installation. It does not mention execution delay or permission needs, but enough behavioral context is given to set safe expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, purposeful sentences. The first states the result, the second covers the behavior and prerequisite, and the third routes to the appropriate sibling. Every sentence earns its place and important details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, an existing output schema, and a clear read-only behavior declaration, the description covers all relevant operational concerns. It also mentions the required external dependency and points to the correct sibling for cumulative counters, making it effectively complete for its stated purpose.
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 input schema is empty, so the baseline is 4. The description adds useful context by enumerating the metrics returned, which helps the agent understand what kind of statistics it will receive even though no parameters need explanation.
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 begins with a specific verb and resource ('Returns per-device extended I/O statistics') and enumerates the exact metrics covered: throughput, IOPS, latency, queue depth, and utilization. It also distinguishes itself from get_disk_io_metrics by clarifying that it provides extended statistics rather than cumulative counters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the intended use case ('Use for storage performance analysis') and names the alternative tool for a different need ('get_disk_io_metrics for cumulative counters'). This is exactly the when-to-use and when-not-to-use guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ip_infoA
Returns geolocation, ASN/organization, and provider tags (e.g. AWS, Cloudflare) for an IP or your public IP. Makes an external call to ip-api.com - network-dependent and can be slow offline. Invalid IPs return an error in the errors field. Use for network egress and remote-peer context.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | optional IP address to lookup (defaults to your public IP) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ip | Yes | |
| asn | No | |
| org | No | |
| city | No | |
| errors | No | |
| region | No | |
| country | No | |
| service_tags | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, description carries full burden. It discloses external call to ip-api.com, network dependence, potential slowness offline, and error behavior for invalid IPs. Good coverage of key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-load the primary function, then add caveats and use case. 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 simple tool with one optional param and existing output schema for return structure, description fully covers purpose, behavior, and context. Complete 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 covers 100% of parameters with description identical to tool description ('defaults to your public IP'). No additional parameter-level insight provided; 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 uses specific verb 'Returns' and resource 'IP', listing exact data types (geolocation, ASN/organization, provider tags). Clearly distinct from sibling tools like ping_host or resolve_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?
States intended use case ('network egress and remote-peer context') and caveat about network dependency. Does not explicitly mention alternatives or when-not-to-use, but context is sufficient given uniqueness among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_journal_logsA
Reads systemd journal entries with optional filtering by unit, priority, and time range (since/until). Set user=true for the user journal. Read-only via journalctl. Fatal only if journalctl fails or an invalid unit is given. Returns structured entries with timestamp, message, priority, unit, and PID. For kernel-only events use get_audit_logs.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | optional systemd unit name (e.g. 'nginx.service') | |
| user | No | query user-level journal (default: false) | |
| lines | No | number of recent lines (default: 50) | |
| since | No | optional start time (e.g. '1 hour ago', '2024-07-03') | |
| until | No | optional end time | |
| priority | No | optional log priority: emerg,alert,crit,err,warning,notice,info,debug |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| entries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that the tool is read-only via journalctl, notes failure conditions (journalctl failure or invalid unit), and describes the return structure. This goes beyond the schema, though it doesn't mention potential permissions or large output constraints.
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 and front-loaded, with each sentence covering a distinct aspect: purpose, filters, user flag, safety/failure, return format, and alternative. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with six optional parameters and an output schema, the description effectively covers all necessary context: what it does, when to use it vs. alternatives, failure behavior, and return content. It is sufficiently complete for an agent to select and invoke it 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?
The input schema already provides full descriptions for all parameters (100% coverage). The description adds a usage note for the 'user' parameter and summarizes filtering options, but this is supplementary rather than essential since the schema covers parameter meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads systemd journal entries, with specific verbs and resource identification. It also distinguishes itself from a sibling tool by noting 'For kernel-only events use get_audit_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?
It explicitly provides usage guidance, including when to use the alternative tool for kernel-only events. The instruction 'Set user=true for the user journal' gives concrete invocation context, clarifying a key parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kernel_modulesA
Returns loaded kernel modules with size, reference count, and dependency info. Read-only from /proc/modules. Use for driver and module troubleshooting.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| errors | No | |
| modules | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It clearly discloses that this is a read-only operation reading from /proc/modules, which is important for an agent to know that no system changes will occur. The description adds useful behavioral context beyond a simple 'returns modules' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The primary action and result are front-loaded first and the troubleshooting use case is stated in a compact second sentence.
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 zero-parameter read-only tool with an output schema, the description covers purpose, source, and when to use it. There is no missing operational detail that would prevent an agent from invoking it 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?
The tool takes zero parameters, so the baseline is 4. The description does not need to explain parameters, and the schema accuracy indicates no missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') with a clear resource ('loaded kernel modules') and details the returned data ('size, reference count, and dependency info'). This distinguishes it from the large catalog of sibling read-only diagnostic tools without requiring schema inspection.
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?
It explicitly states the intended use: 'Use for driver and module troubleshooting.' It does not mention when not to use it or alternatives, but the use case is clear enough for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_largest_filesA
Lists the top N largest entries in a directory by size (default path '.', limit 10-100). Read-only and non-recursive - only one directory level, and directory sizes show their own stat size, not contents. Failures silently return empty results. Use for quick space triage; get_disk_info for partition-level capacity.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | directory to scan (default: current dir) | |
| limit | No | max results (default: 10, max: 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| errors | No | |
| entries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses read-only behavior, non-recursive scanning, how directory sizes are computed (own stat size, not contents), and that failures silently return empty results. These are important behavioral characteristics beyond 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 two sentences with the main action in the first and limitations/alternatives in the second. No redundant fluff; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return format need not be described. The description covers purpose, scope, limitations, failure behavior, and alternatives, making it fully complete for a simple two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, giving baseline 3. The description adds semantic value by clarifying the directory-size interpretation and the limit bounds (10-100), reinforcing schema details. However, the additional parameter insight is modest, so a 4 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 the top N largest entries in a directory by size, with default path and limit details. The verb 'Lists' and resource 'top N largest entries' make the function explicit, and it distinguishes from get_disk_info by stating it is for quick space triage.
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?
It provides explicit usage guidance: 'Use for quick space triage; get_disk_info for partition-level capacity.' It also states limitations (non-recursive, single directory level) to set expectations, making it clear when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listening_portsA
Returns listening TCP/UDP ports and associated processes via ss -tulnp. protocol filters to tcp or udp. Read-only; fatal if ss is missing. Process names may be empty without root. Use for port-conflict and exposure checks; get_network_connections for established connections.
| Name | Required | Description | Default |
|---|---|---|---|
| protocol | No | optional protocol filter: tcp, udp |
Output Schema
| Name | Required | Description |
|---|---|---|
| ports | Yes | |
| errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It states the tool is read-only, fatal if ss is missing, and that process names may be empty without root privileges. These are important operational caveats that go beyond basic purpose.
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, with every sentence providing essential information: what it returns, the command used, filter behavior, safety, error condition, and usage guidance. No superfluous content, and key details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter) and the presence of an output schema, the description sufficiently covers all necessary context: purpose, invocation caveats, and when to use it. It is complete for an agent to select and invoke 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?
The schema already fully documents the protocol parameter with 100% coverage, and the description simply restates the filter behavior ('protocol filters to tcp or udp'). Since the schema does the heavy lifting, the description adds minimal new semantic value, consistent with the 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 the tool returns listening TCP/UDP ports and associated processes via ss -tulnp, with a specific verb and resource. It also distinguishes itself from get_network_connections by noting that the latter is for established connections, making 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?
Explicit usage guidance is provided: 'Use for port-conflict and exposure checks' and explicitly names the alternative for established connections (get_network_connections). This gives clear direction on when to use this tool versus a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_load_averageA
Returns 1-, 5-, and 15-minute load averages. Read-only from /proc/loadavg; fatal only if unreadable. Use as a quick utilization check; get_system_health_check compares load against core count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| load_1 | Yes | |
| load_5 | Yes | |
| load_15 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the operation is read-only, sourced from '/proc/loadavg', and that it is 'fatal only if unreadable' – providing concrete error behavior. However, it doesn't describe the output shape or any potential side effects, though output schema exists to cover returns.
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 core action, and every clause earns its place. It efficiently covers purpose, source, safety, and usage alternative 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?
For a zero-parameter tool with an output schema, the description covers the essential context: what it returns, when to use it, the data source, and failure mode. This is complete for an agent to select and invoke 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?
The input schema is empty with zero parameters, and the baseline for 0 params is 4. The description adds no parameter details because there are none to add; there is no risk of ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Returns 1-, 5-, and 15-minute load averages.' This clearly differentiates it from sibling tools like get_cpu_info and get_system_health_check by focusing on load averages. The mention of '/proc/loadavg' further specifies the source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use as a quick utilization check' and names an alternative: 'get_system_health_check compares load against core count.' This provides both a clear when-to-use and directs the agent to an alternative when core comparisons are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_logged_in_usersA
Returns active user sessions via who -u: username, terminal, origin, and login time. Read-only; fatal only if who is missing. Use for security awareness and multi-user workload checks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| users | Yes | |
| errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the tool's safety profile ('Read-only') and its only failure condition ('fatal only if who is missing'). It also names the underlying command, which aids transparency. This exceeds the minimum burden without 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 two sentences, front-loaded with the core purpose, then provides safety and usage context. Every sentence earns its place, with no waste.
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 (no parameters, output schema exists), the description covers purpose, fields returned, safety, failure condition, and use cases. It is complete for an agent to select and invoke this 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?
The tool has zero parameters, so the baseline score is 4. The description adds no parameter-specific information because none exist.
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 returns active user sessions via `who -u` with specific fields (username, terminal, origin, login time). This is a specific verb+resource that immediately distinguishes it from sibling tools like `get_user_info` or `get_failed_logins`, which target different aspects of user accounts.
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?
It provides clear use cases ('security awareness and multi-user workload checks'), giving context for when to invoke. However, it does not explicitly mention when not to use it or name alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_logrotate_statusA
Returns logrotate configuration files and the state file path. Read-only from /etc/logrotate.conf and /etc/logrotate.d. Errors land in the errors field. Use to verify rotation policies.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| configs | Yes | |
| state_file | No |
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 explicitly states the operation is read-only, specifies the source paths (/etc/logrotate.conf and /etc/logrotate.d), and mentions error handling ('Errors land in the errors field'). This is substantial, though it could add what happens if files are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence states the purpose and sources; the second covers error behavior and usage. Every sentence earns its place, and it 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?
For a read-only, no-parameter tool with an output schema, the description is complete: purpose, sources, read-only nature, error handling, and use case. The output schema likely covers return values, so no need to explain them.
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 schema description coverage is trivially 100%. No parameter information is needed, and the baseline of 4 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 function: returns logrotate configuration files and the state file path. It uses a specific verb ('Returns') and resource, and differentiates itself from sibling system-info tools by focusing on logrotate-specific details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use to verify rotation policies.' It also clarifies the read-only source paths, giving clear context. However, it does not mention alternatives or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_man_pageA
Fetches the authoritative man page for a command as plain text. command is required and validated. Read-only via man -P cat. Options: max_lines (500-10000) with a truncated flag, case-insensitive search with context_lines, and offset. Fatal if man is missing or there is no manual entry. Use when the user asks about flags, syntax, or edge cases.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | line offset to start reading from (0-based) | |
| search | No | search term to grep for in the man page (case-insensitive) | |
| command | Yes | command name to get the man page for | |
| max_lines | No | maximum number of lines to return (default: 500, max: 10000) | |
| context_lines | No | number of context lines before/after each search match (default: 2 when search is used) | |
| clean_special_chars | No | clean backspace formatting characters (default: true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| command | Yes | |
| content | Yes | |
| truncated | No |
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 discloses the read-only mechanism ('Read-only via man -P cat'), validation ('command is required and validated'), error behavior ('Fatal if man is missing or there is no manual entry'), and option effects ('max_lines ... with a truncated flag, case-insensitive search with context_lines, and offset').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences that front-load the core purpose, follow with option summary, and end with usage guidance. No filler; each sentence adds 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?
For a tool with six parameters and no annotations, the description covers purpose, usage, error behavior, and option effects. The output schema exists, so return values are documented there. The description is comprehensive enough for an agent to select and invoke 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% with descriptions for all parameters, so the baseline is 3. The description partially repeats schema details (e.g., max_lines range, case-insensitive search) but does not significantly add new meaning beyond grouping options. It does not explain 'clean_special_chars' beyond the schema, though the schema covers it.
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 'Fetches the authoritative man page for a command as plain text' with a specific verb and resource, and clarifies usage 'when the user asks about flags, syntax, or edge cases.' This clearly distinguishes it from the sibling system-info getters.
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 ends with 'Use when the user asks about flags, syntax, or edge cases,' providing explicit context. It lacks an explicit 'when not to use' or named alternatives, but the sibling tools are all system information retrievers, making the intended domain clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_memory_infoA
Returns RAM and swap usage including total, used, and free. Read-only from /proc/meminfo. Fatal only if /proc/meminfo is unreadable. Use for memory pressure checks; get_system_health_check for thresholds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| free | Yes | |
| used | Yes | |
| total | Yes | |
| errors | No | |
| swap_free | Yes | |
| swap_used | Yes | |
| swap_total | Yes | |
| used_percent | Yes | |
| swap_used_percent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and covers key behavioral aspects: it discloses read-only access from /proc/meminfo and the single fatal error condition. It could also mention potential non-fatal issues or output formatting, but for a simple read-only tool, this is sufficient and transparent.
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 tight sentences: first states the primary purpose, second covers safety/source, third provides usage guidance. No filler or redundant information, and the most important information appears first.
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 (no parameters, output schema present), the description covers all essential context: what it returns, where it reads from, and when to use it. The existence of an output schema means return format doesn't need to be detailed here, so the description is complete for an agent to select and invoke 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?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter syntax, but it adds context by indicating the output fields (total, used, free), which helps the agent understand expected data without reference to the parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns RAM and swap usage with total, used, and free values, specifying a concrete verb and resource. It also differentiates from sibling tools by referencing get_system_health_check for threshold checks, making the tool's specific 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?
Explicit usage guidance is provided: 'Use for memory pressure checks; get_system_health_check for thresholds.' This not only indicates when to use this tool but also names an alternative for a related but distinct need, fulfilling the when/when-not distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mount_optionsA
Returns mount sources, targets, filesystem types, and options via findmnt. mount_point filters to an exact target. Read-only; fatal if findmnt is missing. Use for mount flags (rw/ro, noexec, etc.); get_disk_info for usage.
| Name | Required | Description | Default |
|---|---|---|---|
| mount_point | No | optional mount point filter (e.g. '/') |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| mounts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on full burden of behavioral disclosure. It states the tool is read-only and fatal if findmnt is missing, which are critical safety and error traits. It also clarifies mount_point filters to an exact target, adding useful behavioral nuance. It does not mention permissions or output size, but given the simple read-only nature and output schema, this is sufficient.
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 composed of four short, purposeful sentences: what it returns, how the parameter works, safety/failure, and when to use it vs. the alternative. No unnecessary words, and the primary action is stated first, making it highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, output schema present), the description covers all essential aspects: purpose, usage, safety, error condition, parameter behavior, and alternative tool. It is fully adequate for an agent to select and invoke the tool correctly without needing additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers mount_point with 100% coverage, but the description adds an important semantic: 'filters to an exact target'. This clarifies that matching is exact rather than substring or partial, which goes beyond the schema's basic description and gives the agent a precise understanding of the filter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns mount sources, targets, filesystem types, and options via findmnt, with a specific verb and resource. It distinguishes from siblings by explicitly naming get_disk_info as the alternative for usage queries, making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: 'Use for mount flags (rw/ro, noexec, etc.)' and names get_disk_info as the alternative for usage. This provides clear selection criteria and helps the agent decide between this tool and its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_connectionsA
Returns active TCP/UDP connections with state, addresses, process info, and optional reverse-DNS hostnames. Read-only from /proc/net. Params: status and type filters, grouped by PID, max_connections (0-200). resolve_hostnames does network lookups and is slow - keep it off unless needed. For listening sockets prefer get_listening_ports, which also gives process names.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | optional type filter: tcp, udp | |
| status | No | optional status filter (e.g. ESTABLISHED, LISTEN, TIME_WAIT) | |
| grouped | No | optional: group connections by PID (default: false) | |
| max_connections | No | optional: limit results (max: 200) | |
| resolve_hostnames | No | optional: resolve remote hostnames via reverse DNS (default: false) |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| groups | No | |
| connections | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses the read-only nature via '/proc/net' and the performance cost of reverse DNS lookups, which is valuable behavioral context. However, it does not mention any permission requirements or edge cases, leaving some room for additional detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, tightly packed with essential information: purpose, data source, parameter highlights, performance caveat, and an alternative tool reference. Every sentence earns its place 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 tool's moderate complexity, the description covers the core function, source, performance implications, alternates, and all parameters are documented in the schema. The output schema exists, so return format need not be detailed. This is a complete and well-rounded description.
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%, but the description adds meaningful context beyond the schema by summarizing filters, grouping, and max_connections range (0-200), and by highlighting that resolve_hostnames performs slow network lookups. This enriches parameter understanding beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns active TCP/UDP connections with state, addresses, process info, and optional reverse-DNS hostnames. It explicitly differentiates from the sibling get_listening_ports by advising its use for listening sockets, making the purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'For listening sockets prefer get_listening_ports' and warns that resolve_hostnames is slow and should be kept off unless needed. This gives clear context on when to use this tool versus an alternative and how to use parameters safely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_infoA
Returns per-interface network I/O counters (bytes, packets, errors, drops). Read-only from /proc/net/dev. Fatal only if that file is unreadable. Use for bandwidth and drop analysis; get_network_connections for sockets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| interfaces | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full disclosure burden. It states the tool is read-only, reads from /proc/net/dev, and only fails if that file is unreadable. This is solid behavioral context, though it doesn't describe the return format edge cases like no interfaces present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise, purposeful sentences: first states what it returns, second adds source and failure mode, third gives usage guidance. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, and the description covers the key aspects: return value content, data source, read-only nature, failure condition, and usage context. For a simple no-parameter tool, this is fully 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, so a baseline of 4 is appropriate. The description communicates that no arguments are needed, and the schema confirms no properties, so nothing more is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb 'Returns' and resource 'per-interface network I/O counters' with detailed fields (bytes, packets, errors, drops). Clearly distinguishes from sibling tool get_network_connections which handles sockets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool ('bandwidth and drop analysis') and names the alternative (get_network_connections for sockets). This gives clear guidance on selecting between the two network-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_power_analyticsA
Returns power state (AC vs battery), discharge rate in watts, battery percentage, and capacity degradation. Read-only from /sys/class/power_supply. Missing sysfs data lands in the errors field. Use for laptop power monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| ac_online | Yes | |
| battery_percent | Yes | |
| discharge_rate_watts | Yes | |
| capacity_degradation_percent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly states 'Read-only' which is a key safety trait, and it discloses error behavior: 'Missing sysfs data lands in the errors field.' This adds valuable behavioral context beyond the basic return value 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 three sentences, each providing essential information: what is returned, the data source and safety, error handling, and a usage recommendation. 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 that the tool has no params and an output schema exists (which covers return values), the description is complete. It explains what data is retrieved, where from, error behavior, and typical use case. It is fully self-contained.
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 (empty schema), so the baseline is 4. There is nothing to add beyond the schema; the description appropriately focuses on behavior rather than parameter details.
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 power state (AC vs battery), discharge rate in watts, battery percentage, and capacity degradation. This is a specific verb ('returns') with a clear resource (power analytics), and it distinguishes itself from sibling tools which cover different system resources.
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 clear use case: 'Use for laptop power monitoring.' It also specifies the data source (/sys/class/power_supply), giving context on when this tool is appropriate. It does not explicitly name alternatives or exclusions, but since no sibling tool handles power data, this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proc_diagnosticsA
Returns deep /proc diagnostics: interrupts, softirqs, vmstat, diskstats, filesystems, version, and slabinfo. The sections param selects a comma-separated subset (empty = all). Read-only; per-section failures land in the errors field. Use for kernel-level debugging.
| Name | Required | Description | Default |
|---|---|---|---|
| sections | No | comma-separated sections: interrupts,softirqs,vmstat,diskstats,filesystems,version,slabinfo. Empty=all |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| vmstat | No | |
| version | No | |
| slabinfo | No | |
| softirqs | No | |
| diskstats | No | |
| interrupts | No | |
| filesystems | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It explicitly states 'Read-only' which conveys a key safety trait, and explains per-section failure handling ('per-section failures land in the errors field'). This goes beyond a vague 'gets data' and gives the agent confidence about side-effect-free execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences total, front-loaded with the primary function, and every sentence adds useful information (what, how to filter, safety/error behavior). No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool, the description covers the essential aspects: return content, selection mechanism, safety, and error strategy. The output schema is present, so no need to describe return fields. It adequately prepares the agent to invoke and interpret results.
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 description repeats the schema's parameter guidance about comma-separated sections and empty=all, but adds no new information beyond what the input schema already documents. Since schema coverage is 100%, the baseline of 3 applies; the description does not deepen the parameter 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 opens with a specific verb+resource: 'Returns deep /proc diagnostics' and enumerates exact sections (interrupts, softirqs, etc.). It distinguishes itself from the many sibling get_* tools by explicitly framing this as a bundle of /proc diagnostics for kernel-level debugging.
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 final sentence gives explicit usage context: 'Use for kernel-level debugging.' While no alternatives are named, this clearly positions the tool for broad kernel diagnostics rather than specific resource queries. The comma-separated subset hint also tells when to use it for selected sections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_process_fdsA
Lists open file descriptors (files, sockets, pipes) and the total count for a pid. Read-only via /proc//fd. pid is required; an unknown pid returns an error in the errors field, not a failure. Use for fd-leak and resource-hold debugging.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | process ID to list open file descriptors for |
Output Schema
| Name | Required | Description |
|---|---|---|
| pid | Yes | |
| name | Yes | |
| errors | No | |
| fd_count | Yes | |
| file_descriptors | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the operation is read-only via /proc/<pid>/fd, and it states that an unknown pid returns an error in the errors field rather than a failure. This is meaningful behavioral context beyond the schema, though it does not cover permission-related edge cases.
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 primary function, followed by a specific use case. Every sentence contributes meaningful information, with no redundant or filler wording.
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 one-parameter read-only tool with an output schema, the description covers the what, how, error behavior, and recommended use case. It is complete enough for an agent to select and invoke the tool correctly without needing additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the pid parameter already has a clear description ('process ID to list open file descriptors for'). The tool description reinforces that pid is required but adds no additional parameter-level semantics. 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 states 'Lists open file descriptors (files, sockets, pipes) and the total count for a pid,' which is a specific verb+resource. It clearly distinguishes from sibling tools like get_file_locks or get_network_connections by enumerating the exact resource types covered and including the count.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use for fd-leak and resource-hold debugging,' providing a clear when-to-use context. It does not name alternative tools, but the tool's purpose is sufficiently unique among siblings that explicit exclusions are less necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_process_infoA
Returns running processes sortable by CPU, memory, or both with a configurable limit (default 10, max 100). Read-only but heavy: walks /proc and reads smaps for every process, so keep limit low. Per-process read errors are ignored; fails only if the process list cannot be read. Prefer get_top_io_processes for disk I/O ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max results (default: 10, max: 100) | |
| sort_by | No | sort by 'cpu', 'memory', or 'both' (default: cpu) |
Output Schema
| Name | Required | Description |
|---|---|---|
| by_cpu | No | |
| errors | No | |
| by_memory | No | |
| processes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and succeeds. It discloses read-only but heavy behavior, walks /proc and reads smaps for every process, ignores per-process errors, and fails only when the process list cannot be read. This is rich, honest behavioral information with no 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 four sentences, each earning its place: purpose, cost warning, error behavior, and alternative guidance. It is front-loaded with the core function and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return details need not be in the description. The description covers purpose, sort and limit options, performance impact, failure semantics, and a sibling alternative, making it complete for this tool's 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 documents limit and sort_by defaults and allowed values. The description restates the defaults and adds the rationale to keep the limit low, but it does not add substantial new parameter semantics 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 opens with 'Returns running processes sortable by CPU, memory, or both,' using a specific verb and resource. It clearly differentiates from the sibling get_top_io_processes by directing disk I/O ranking to that tool, so the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states 'Prefer get_top_io_processes for disk I/O ranking,' giving a direct alternative. It also advises 'keep limit low' due to heavy reading, indicating how to use the tool safely and when to consider a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_process_treeA
Returns a flat process list with depth info showing parent-child hierarchy. Read-only from /proc//stat and /proc//comm. When pid is omitted, returns all processes rooted at init (ppid 0). When pid is provided, returns only that subtree. Invalid or missing PIDs return empty nodes with no error. Use to understand process hierarchy and trace spawned children; for per-process resource usage prefer get_process_info.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | optional PID to show subtree from (omit for full tree) |
Output Schema
| Name | Required | Description |
|---|---|---|
| nodes | Yes | |
| total | Yes | |
| errors | No | |
| filtered | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure. It states the tool is read-only, sources data from /proc/*/stat and /proc/*/comm, and explains the exact behavior for invalid or missing PIDs (empty nodes with no error). This is rich behavioral context beyond the bare operation name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the core behavior in the first sentence, followed by parameter semantics, edge-case behavior, and usage guidance. Every sentence earns its place, and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no annotations, the description covers purpose, input semantics, edge cases, safety/read-only status, and routing to an alternative. The presence of an output schema means return-value details need not be spelled out, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the pid parameter at 100% with a description. The tool description adds further meaning by explaining the full-tree vs. subtree behavior, the init (ppid 0) rooting, and the invalid-PID fallback, which is valuable clarification beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Returns a flat process list with depth info showing parent-child hierarchy.' It clearly identifies the tool's purpose and distinguishes it from siblings by naming get_process_info for resource usage, so an agent can tell it apart from related process 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 explicitly states when to use the tool ('Use to understand process hierarchy and trace spawned children') and when to prefer an alternative ('for per-process resource usage prefer get_process_info'). It also clarifies pid omission vs. provision, giving the agent exact selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_raid_statusA
Returns software RAID status from /proc/mdstat: devices, levels, sizes, and active/degraded/inactive health. Read-only; an unreadable file is silently swallowed. Use to check array health.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| devices | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It openly discloses the read-only nature and the silent swallowing of an unreadable file, which is important failure behavior. This goes beyond a generic read tool description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary function. Every clause carries useful information: data source, fields returned, read-only, failure behavior, and use case. No filler 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 an output schema present and no parameters, the description covers the essential context: what data is returned, the read-only nature, the failure mode, and the recommended use case. It is complete for a tool of this simplicity.
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, so the schema provides full coverage. The description adds context by mentioning the source file (/proc/mdstat), which is the only implicit input. Baseline 4 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 returns software RAID status from /proc/mdstat, listing specific data types (devices, levels, sizes, health). This distinguishes it from sibling tools like get_disk_info or get_block_devices, which cover broader or different storage aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use to check array health', which gives a clear context. It does not name alternatives or exclusions, but for a small read-only status tool with zero parameters, this is sufficient to direct appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routing_tableA
Returns the kernel routing table: destination, gateway, interface, proto, scope, metric, and MTU. Read-only via ip route show. Use for network path and gateway troubleshooting.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| errors | No | |
| routes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly says 'Read-only via this behavior, which tells and agent the operation has no side effects and uses a standard kernel command. It does not discuss privilege or failure cases, but for a zero-parameter read-only tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states what is returned and the fields included, and the second adds scope and intended usage. Every sentence carries substantive information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read-only tool with an output schema, the description fully covers the purpose, the data of contents, the underlying command, and the intended use case. Nothing an agent needs to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema is an empty object with zero parameters, and schema description coverage is 100%. There is nothing for the description to document; the description's mention of the underlying command adds relevant context but no per-parameter information is needed. The 0-params baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Returns the kernel routing table') and enumerates the returned fields (destination, gateway, interface, proto, scope, metric, MTU). This clearly distinguishes it from sibling network tool like get_network_info and get_network_connections by scoping to the routing table and explicitly naming that the command.
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?
'Use for network path and gateway troubleshooting' states a clear context for when to call this tool. It does not go far as naming sibling alternatives or exclusions, but the context is specific enough for an agent to select it for routing-table interrogations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_security_auditA
Runs a security audit: firewall rules, SSH hardening, SUID binaries, world-writable files, umask, and password policy, with a 0-100 score. Read-only but heavy - scans the filesystem for SUID and world-writable files. Needs root to see everything. Use for hardening reviews, ideally during low load.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| umask | Yes | |
| errors | No | |
| firewall | Yes | |
| ssh_hardening | Yes | |
| suid_binaries | Yes | |
| security_score | Yes | |
| password_policy | Yes | |
| world_writable_files | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares the operation is read-only, warns it is heavy and scans the filesystem, and notes root is required to see everything. This covers safety, performance, and privilege expectations.
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, front-loaded with the core purpose, and wastes no words. Each sentence adds distinct value: what it does, behavioral caveats, and when to use it.
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 zero-parameter schema and the presence of an output schema, the description is complete: it explains the tool's scope, scoring, operational weight, and privilege requirements. No additional return-format explanation 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?
The tool has zero parameters, so parameter semantics are trivially satisfied. The description still adds useful context about what the audit covers, which enriches the meaning beyond the empty 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 states a specific verb and resource ('Runs a security audit') and enumerates concrete checks (firewall rules, SSH hardening, SUID binaries, etc.), plus a 0-100 score. This clearly distinguishes it from diagnostic siblings like get_audit_logs or get_system_health_check.
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 clear usage context: 'Use for hardening reviews, ideally during low load.' It does not explicitly name excluded alternatives or when-not-to-use, but the context is strong enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selinux_apparmor_statusA
Returns SELinux and AppArmor enforcement status. Read-only via getenforce and sysfs/aa-status; never fatal, missing modules report 'not_enabled'. Use for security posture checks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| selinux | Yes | |
| apparmor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full responsibility of behavioral transparency. It discloses that the tool is read-only, never fatal, and reports 'not_enabled' for missing modules. These are valuable behavioral insights, though it could mention potential return formats or error handling beyond what is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: the first sentence states the purpose, the second provides behavioral guarantees, and the third gives usage context. Each sentence contributes meaningful information 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?
Given the tool's low complexity (no parameters) and the presence of an output schema, the description provides sufficient context: purpose, usage, and behavioral traits. There are no gaps that would hamper an agent's ability to select and invoke this 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?
The tool has zero parameters, and the schema coverage is trivially 100%. The baseline for 0-param tools is 4, and the description adds contextual info about the underlying implementation (getenforce and sysfs/aa-status) that is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Returns SELinux and AppArmor enforcement status.' It uses a specific verb with a well-defined resource, and the focus on security posture distinguishes it from other get_* tools like get_security_audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use for security posture checks.' It provides clear context but does not mention alternatives or exclusions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_statusA
Returns detailed status of a systemd service (or --user service). name is required and validated. Read-only via systemctl status. Errors from systemctl (e.g. unit not found) appear in the errors field with the raw output; only a missing systemctl is fatal. Use to check why a service failed; get_systemd_units to list states.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | service name (e.g. 'nginx.service' or 'sshd') | |
| user | No | query user-level service (default: false) |
Output Schema
| Name | Required | Description |
|---|---|---|
| pid | No | |
| name | Yes | |
| active | No | |
| errors | No | |
| loaded | No | |
| output | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool is read-only via systemctl status, explains how errors are surfaced (errors field with raw output), and clarifies that only a missing systemctl is fatal. This is rich behavioral context beyond what annotations might provide.
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 and front-loaded with the core purpose. Every sentence adds distinct value: purpose, validation, read-only nature, error behavior, and usage guidance. No fluff or 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 tool's moderate complexity, the description is complete. It covers purpose, usage, error handling, and alternatives. Since an output schema exists, return-value details are not needed. The description fully equips an agent to select and invoke 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 description coverage is 100% for both parameters (name and user). The description adds minimal semantic value beyond restating that name is required and mentioning --user, which is already covered by the schema. Baseline 3 is appropriate because the schema does the heavy lifting.
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 'Returns detailed status of a systemd service' with a specific verb and resource. It also distinguishes itself from the sibling tool get_systemd_units by noting that get_systemd_units is for listing states, making 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?
Explicitly provides a use case ('Use to check why a service failed') and names an alternative ('get_systemd_units to list states'). This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_smart_healthA
Returns SMART disk health: status, temperature, power-on hours, and key attributes via smartctl. device is optional; empty probes all block devices, which is slow with many disks. Requires smartctl and typically root to read /dev. Per-device failures set status to unknown in the errors field; only a missing smartctl is fatal.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | optional device name (e.g. sda, nvme0n1). If empty, checks all devices |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| devices | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden: it discloses requirements (smartctl, root), per-device failure behavior (status unknown), and the only fatal condition (missing smartctl). This is excellent behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no redundancy: first states the purpose, second covers parameter behavior, third covers prerequisites and error handling. 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 a simple 1-optional-param tool with an output schema, the description covers prerequisites, error semantics, parameter handling, and performance characteristics, making it fully complete 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?
The schema already fully describes the device parameter, but the description adds the performance implication of scanning all devices ('slow with many disks'), which goes beyond the schema and provides valuable usage nuance.
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 SMART disk health with specific attributes (status, temperature, power-on hours) via smartctl, distinguishing it from sibling tools like get_disk_info or get_block_devices.
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?
Clear context is given: device is optional, empty probes all devices with a performance warning. It does not explicitly name alternatives, so while the usage context is solid, it lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_systemd_unitsA
Lists all systemd units and their states. The state param filters by exact match on the Active column ('failed', 'active', 'inactive'). Read-only via systemctl; fatal if systemctl is missing or fails. Use for a full service inventory; get_service_status for one unit's details.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | optional state filter: 'failed', 'active', 'inactive' |
Output Schema
| Name | Required | Description |
|---|---|---|
| units | Yes | |
| errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even without annotations, the description discloses that the tool is read-only via systemctl, which is a safe operation, and that it is fatal if systemctl is missing or fails. This gives crucial behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main action, then parameter details, then usage guidance. Every sentence earns its place without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and an output schema. The description covers purpose, usage, behavioral traits, and parameter semantics comprehensively, leaving no critical 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?
The schema already documents the state parameter with full coverage, but the description adds meaning by specifying that it filters by exact match on the Active column, clarifying the matching semantics beyond the schema's simple listing of allowed values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all systemd units and their states, with a specific verb and resource. It also distinguishes itself from get_service_status for one unit's details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the tool is for a full service inventory and directs to get_service_status for single-unit details. It also explains the state parameter filters by exact match, providing clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_health_checkA
Returns an overall OK/WARNING/CRITICAL verdict from memory, disk (partitions at 80%+), load vs core count, and failed systemd units. Read-only aggregate; sub-failures land in the errors field, never fatal. Use as the first-line health check; get_system_snapshot for full detail.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| checks | Yes | |
| errors | No | |
| overall | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It discloses read-only nature, aggregate behavior, and that sub-failures land in errors field and are never fatal, giving useful behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verdict and sources, followed by usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only health check with an output schema, the description covers what it does, when to use it, and its non-fatal error behavior. Sufficiently complete for its 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?
Tool has zero parameters and 100% schema coverage, so the baseline is 4. The description adds no parameter details but none are needed.
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?
Specific verb 'Returns' with clear resource: an overall OK/WARNING/CRITICAL verdict derived from memory, disk, load, and systemd units. Distinguishes itself from sibling get_system_snapshot by positioning as first-line health check vs full detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use as the first-line health check' and points to get_system_snapshot for full detail, providing both when-to-use and an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_infoA
Returns host info: hostname, OS, kernel, architecture, uptime, process count, boot time, virtualization, host UUID, and DMI hardware/BIOS/TPM details. Read-only (gopsutil host.Info plus sysfs). Fails only if host info is unavailable. Use for a single-machine identity summary; for a health verdict use get_system_health_check.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| procs | No | |
| errors | No | |
| host_id | No | |
| os_name | Yes | |
| hostname | Yes | |
| platform | No | |
| bios_date | No | |
| boot_time | No | |
| os_version | Yes | |
| tpm_version | No | |
| architecture | Yes | |
| bios_version | No | |
| manufacturer | No | |
| product_name | No | |
| kernel_version | Yes | |
| uptime_seconds | Yes | |
| platform_family | No | |
| product_version | No | |
| virtualization_role | No | |
| virtualization_system | No |
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 discloses the read-only nature ('Read-only (gopsutil host.Info plus sysfs)') and the failure condition ('Fails only if host info is unavailable'). This adds meaningful behavioral context beyond schema and annotations, though it could detail error output or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact (two sentences) and front-loaded with the functional result list, followed by usage guidance. Every sentence adds value with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params, output schema exists), the description covers all necessary aspects: what is returned, the read-only safety profile, the failure condition, and the intended use case. It names the alternative for health verdicts, making the context 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, so the baseline for parameter semantics is 4 per the rubric. The description does not need to explain parameters, and the empty schema confirms no inputs are required.
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 host info with a specific list of fields (hostname, OS, kernel, etc.). It distinguishes itself from siblings by positioning it as a single-machine identity summary, contrasting with get_system_health_check.
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?
Explicit usage guidance is provided: 'Use for a single-machine identity summary; for a health verdict use get_system_health_check.' This names an alternative and specifies the intended context, satisfying the when-to-use vs alternatives criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_snapshotA
Returns a comprehensive snapshot combining system, CPU, temperature, memory, disk, network, load, top processes, and Docker data in one call. Read-only. Individual gather failures fall back to zero values in the errors field - never fatal, but the heaviest call in the server. Use for a broad overview; prefer targeted tools for deep questions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| cpu | Yes | |
| disk | Yes | |
| docker | Yes | |
| errors | No | |
| memory | Yes | |
| system | Yes | |
| network | Yes | |
| processes | Yes | |
| temperature | Yes | |
| load_average | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so admirably. It explicitly states 'Read-only', discloses that individual gather failures fall back to zero values in the errors field and are 'never fatal', and warns about the performance weight. These behavioral traits are not visible elsewhere and are valuable for an agent deciding to invoke this 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 four sentences and every sentence serves a distinct purpose: what it returns, read-only nature, failure fallback behavior, and usage guidance. It is front-loaded with the core purpose and maintains high information density without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a zero-parameter tool with an output schema. It covers the composition of the snapshot, error behavior, and usage context. It also successfully differentiates itself from the highly similar sibling get_docker_system_snapshot by including both system and Docker data. The output schema likely details the return structure, so no further field listing 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?
The tool has zero parameters, so there is no parameter semantics to describe. Per the rubric, 0 params earns a baseline 4. The description correctly implies no input is needed, and the empty schema with 100% coverage confirms this.
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 'comprehensive snapshot' and enumerates the included data categories (system, CPU, temperature, memory, disk, network, load, top processes, Docker). It distinguishes itself from target-specific siblings by emphasizing 'in one call' and positioning it as a 'broad overview' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: 'Use for a broad overview; prefer targeted tools for deep questions.' It also warns that this is 'the heaviest call in the server,' informing the agent about performance trade-offs. This gives clear when-to-use and when-not-to-use direction relative to the many sibling get_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_sync_statusA
Returns NTP/Chrony sync state: service, sync status, system and RTC time, stratum, and last offset. Read-only via timedatectl and chronyc; failures are non-fatal (errors field). Use for clock-drift diagnosis.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| stratum | No | |
| rtc_time | No | |
| ntp_enabled | Yes | |
| ntp_service | Yes | |
| sync_status | Yes | |
| time_server | No | |
| last_sync_ms | No | |
| chrony_present | Yes | |
| ntpdate_present | Yes | |
| system_clock_utc | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so excellently. It discloses that the tool is read-only (via timedatectl and chronyc), and that failures are non-fatal with an 'errors' field, giving the agent important behavioral expectations without needing to invoke the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey the core purpose, return contents, implementation mechanism, error handling, and intended usage. No wasted words, and the main function 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?
For a no-parameter, read-only tool, the description is complete. It lists return fields (including the 'errors' field), explains the tools used, and gives a use case. The presence of an output schema further reduces the need to describe return values in detail.
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 0 parameters, so the schema fully covers the parameter aspect. The description adds no parameter details, but that is not needed; per the rubric, the baseline for 0 params is 4. It correctly focuses on outputs and behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Returns') and resource ('NTP/Chrony sync state'), listing distinct data items (service, sync status, times, stratum, offset). This clearly differentiates it from sibling 'get_*' tools, none of which focus on time synchronization.
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?
It explicitly states the use case ('Use for clock-drift diagnosis'), providing clear context. However, it does not mention alternatives or when not to use, as there are no close sibling tools for time sync, so no exclusion is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_io_processesA
Returns processes with the highest disk I/O activity via pidstat -d 1 1 (samples for 1 second). Read-only. If pidstat is missing, returns an error in the errors field with empty results. Use to find which process is hammering the disk; get_disk_io_metrics for per-device totals.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max results (default: 10, max: 50) |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| processes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses read-only nature, the sampling interval, and the error handling when pidstat is unavailable (error in the 'errors' field with empty results). This is thorough for a simple read-only 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?
Three sentences, each providing distinct value: the primary action, the safety/error behavior, and the usage guidance versus an alternative. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single optional parameter and an output schema, the description covers purpose, usage context, and error behavior. It is complete enough for an agent to select and invoke 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?
The only parameter, 'limit', is fully described in the schema with default and max values. The description does not add additional semantic context for the parameter beyond what the schema already provides, so the baseline 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 returns processes with the highest disk I/O activity, specifying the exact command (pidstat -d 1 1) and sampling duration. It also distinguishes itself from the sibling tool get_disk_io_metrics by noting that the latter provides per-device totals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains when to use this tool ('Use to find which process is hammering the disk') and names the alternative ('get_disk_io_metrics for per-device totals'). Also covers a failure mode (pidstat missing) and resulting behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_automationA
Aggregates the current user's scheduled tasks: crontab -l entries and systemd user timers. Read-only; failures such as a missing crontab land in the errors field. Use for user-level automation; get_cron_jobs for system-wide cron.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| cron_jobs | Yes | |
| systemd_timers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the tool is 'Read-only' and reveals how failures are handled (errors field for missing crontab). This gives reasonable transparency for a simple read-only aggregator, though it doesn't discuss edge cases like partial failures or permissions. Given the lack of annotations, this is strong 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?
The description is two sentences: the first defines the tool's scope and components, the second adds safety and error-handling info plus usage guidance. Every sentence adds value with no redundancy or padding, making it exceptionally concise and well-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?
Given the tool's low complexity (no parameters) and the presence of an output schema, the description covers the essential points: what it aggregates, that it's read-only, error handling, and usage context. It distinguishes from the most relevant sibling. There's no need to describe return values since an output schema exists, so the description is 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 input schema is an empty object with 100% coverage. Per the rubric, an empty-parameter tool gets a baseline of 4. The description appropriately doesn't add parameter details because none exist, so no points deducted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('aggregates') and resource ('current user's scheduled tasks'), enumerating the exact sources (crontab -l and systemd user timers). It also explicitly differentiates itself from the sibling tool get_cron_jobs by specifying scope (user-level vs system-wide).
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 explicit guidance on when to use this tool ('Use for user-level automation') and directly names the alternative for system-wide cron ('get_cron_jobs for system-wide cron'). This is a clear, actionable usage directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_infoA
Lists system users from /etc/passwd and /etc/group: username, UID, GID, home, shell, and supplementary groups. search does a case-insensitive substring match. Read-only; a passwd read failure is non-fatal. Use for account inventory and membership checks.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | optional username filter (case-insensitive substring match) |
Output Schema
| Name | Required | Description |
|---|---|---|
| users | Yes | |
| errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly states 'Read-only' and discloses that a passwd read failure is non-fatal, which is valuable safety-related context. It also mentions the case-insensitive substring behavior for the search parameter. It does not detail every edge case, but for a simple read-only query tool, this is strong 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 composed of four short, purposeful sentences. Each sentence adds distinct value: what it lists, search behavior, read-only/failure mode, and intended use. There is no redundant fluff, and the most critical 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?
For a simple read-only tool with one optional parameter and an output schema present, the description covers all necessary aspects: purpose, behavior, failure handling, and usage intent. It does not need to explain return structure since the output schema exists. The description is complete 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?
The schema already describes the search parameter as 'optional username filter (case-insensitive substring match)', and the description repeats this almost verbatim ('search does a case-insensitive substring match'). Since schema coverage is 100% and the description adds no new meaning beyond the schema, the 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 states a specific action ('Lists system users') and identifies the exact data sources ('/etc/passwd and /etc/group') with the fields returned (username, UID, GID, home, shell, supplementary groups). This clearly distinguishes it from sibling tools like get_logged_in_users or get_user_automation, which target different aspects of user information.
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 explicit usage context: 'Use for account inventory and membership checks.' This tells the agent when to select this tool. However, it does not mention alternatives or cases where it should not be used (e.g., when you only need currently logged-in users), so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ping_hostA
Sends ICMP packets and returns latency, packet loss, and response times. host is required and validated; count defaults to 4, timeout to 10s. Read-only but network-bound, blocking up to timeout seconds. Fatal only for an invalid host; a failed ping returns partial results in the errors field. Use for reachability checks; resolve_dns to separate DNS from connectivity.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | hostname or IP address to ping | |
| count | No | number of packets (default: 4) | |
| timeout | No | timeout in seconds (default: 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| host | Yes | |
| errors | No | |
| avg_latency_ms | Yes | |
| max_latency_ms | Yes | |
| min_latency_ms | Yes | |
| packets_received | Yes | |
| packet_loss_percent | Yes | |
| packets_transmitted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even without annotations, the description discloses key behavioral traits: it is blocking up to timeout seconds, read-only, returns partial results in the errors field on failed pings, and is fatal only for invalid hosts. This is substantial transparency for a network tool, though it does not detail exact return structure beyond the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, stating the core function first, then parameters, then behavioral traits and usage guidance. Every sentence adds value, and there is no冗余 repetition of schema details. Ideal length for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no annotations, the description covers purpose, parameter defaults, blocking behavior, error handling, and recommended use case. An output schema exists, so return values are already structurally defined. This is a complete and self-sufficient description for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all three parameters, so the schema carries the parameter definitions. The description adds meaningful behavioral context: host is required and validated, count defaults to 4, timeout defaults to 10s, and behavior on failure is partial results. This goes beyond the schema baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends ICMP packets and returns latency, packet loss, and response times. It distinguishes itself from sibling tools like resolve_dns by explicitly noting its use for reachability checks, making its purpose specific and 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 provides explicit usage context: 'Use for reachability checks; resolve_dns to separate DNS from connectivity.' This directly tells the agent when to use this tool versus an alternative, fulfilling the highest bar for usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_dnsA
Resolves a hostname to IP addresses via the system resolver. hostname is required; a lookup failure returns an error in the errors field. Network-dependent. Use to distinguish DNS failures from connectivity problems; ping_host to test reachability.
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | Yes | hostname to resolve (e.g. 'example.com') |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| hostname | Yes | |
| addresses | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that lookup failures appear in the errors field and that the tool is network-dependent. This is sufficient for a simple resolver, though it could mention timeout behavior or multiple IP formatting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, and every sentence adds useful information. No redundant phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter network tool, the description covers purpose, usage, failure behavior, and environmental dependency. An output schema exists, so return values are documented elsewhere. No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds that hostname is required (redundant with schema) and relates failure behavior to the parameter, but no new parameter-level semantics beyond that.
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 opens with 'Resolves a hostname to IP addresses via the system resolver,' which clearly states the action and resource. It explicitly contrasts with ping_host, distinguishing its purpose from sibling 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?
It provides explicit guidance: 'Use to distinguish DNS failures from connectivity problems; ping_host to test reachability.' This states when to use this tool and when to use an alternative.
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. Dates show when Glama detected each change.
1 tool update
v0.2.15- Changed
get_shared_memory_segments2 fields changed- removed
Output schema / properties / segments / items / properties / statusRemoved value: -{ - "type": "string" -} - changed
Output schema / properties / segments / items / requiredPrevious value: -[ - "key", - "id", - "owner", - "bytes", - "nattch", - "status", - "cpid", - "lpid", - "attach_at", - "detach_at", - "creat_time" -]New value: +[ + "key", + "id", + "owner", + "bytes", + "nattch", + "cpid", + "lpid", + "attach_at", + "detach_at", + "creat_time" +]
4 tool updates
v0.2.14- Added
get_io_stats - Added
get_kernel_modules - Added
get_process_tree - Added
get_routing_table
3 tool updates
v0.2.13- Added
get_boot_blame - Added
get_boot_critical_chain - Added
get_boot_time
62 tool updates
- First observed
check_updates - First observed
get_audit_logs - First observed
get_block_devices - First observed
get_cpu_info - First observed
get_cpu_temperature - First observed
get_cron_jobs - First observed
get_desktop_session_info - First observed
get_disk_info - First observed
get_disk_io_metrics - First observed
get_docker_container_details - First observed
get_docker_container_diff - First observed
get_docker_container_logs - First observed
get_docker_container_stats - First observed
get_docker_container_top - First observed
get_docker_disk_usage - First observed
get_docker_image_details - First observed
get_docker_image_history - First observed
get_docker_info - First observed
get_docker_networks - First observed
get_docker_stats_all - First observed
get_docker_system_info - First observed
get_docker_system_snapshot - First observed
get_docker_volumes - First observed
get_environment_variables - First observed
get_failed_logins - First observed
get_file_locks - First observed
get_gpu_info - First observed
get_hardware_bus_info - First observed
get_inode_usage - First observed
get_installed_packages - First observed
get_ip_info - First observed
get_journal_logs - First observed
get_largest_files - First observed
get_listening_ports - First observed
get_load_average - First observed
get_logged_in_users - First observed
get_logrotate_status - First observed
get_man_page - First observed
get_memory_info - First observed
get_mount_options - First observed
get_network_connections - First observed
get_network_info - First observed
get_power_analytics - First observed
get_proc_diagnostics - First observed
get_process_fds - First observed
get_process_info - First observed
get_raid_status - First observed
get_security_audit - First observed
get_selinux_apparmor_status - First observed
get_service_status - First observed
get_shared_memory_segments - First observed
get_smart_health - First observed
get_system_health_check - First observed
get_system_info - First observed
get_system_snapshot - First observed
get_systemd_units - First observed
get_time_sync_status - First observed
get_top_io_processes - First observed
get_user_automation - First observed
get_user_info - First observed
ping_host - First observed
resolve_dns
TDQS
Each tool targets a distinct subsystem or metric, with clear descriptions that separate potentially overlapping tools (e.g., get_docker_container_stats vs get_docker_stats_all vs get_docker_system_snapshot). No two tools appear to do the same thing.
Almost all tools follow the consistent get_<noun> pattern, making the tool's purpose predictable from its name. The few exceptions (check_updates, ping_host, resolve_dns) still use a clear verb_noun structure and do not disrupt the overall pattern.
62 tools is far beyond what is typically appropriate, even for a broad system monitoring server. The huge number creates excessive cognitive load for agents, and many tools could be consolidated (e.g., the 12 Docker-specific tools could be grouped into fewer tools). This is an extreme mismatch.
The toolset covers most major system monitoring areas including CPU, memory, disk, processes, Docker, security, logs, and systemd. However, it lacks a tool for listing network interface IP addresses or routing table, which is a common requirement for network troubleshooting.
Maintenance
Related MCP Connectors
An MCP server giving access to Grafana dashboards, data and more.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
21- mttrlyOAuthcom.mttrly
AI-powered incident management and server monitoring via MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for system monitoring, enabling users to ask about CPU, memory, disk, network, and processes on their system.93MIT
- FlicenseNot gradedqualityCmaintenanceA real-time system diagnostics MCP server that gives AI agents live access to CPU, RAM, disk, network, processes, and hardware health metrics, with zero cloud dependency.7-
- AlicenseAqualityDmaintenanceMCP server for remote Linux/Unix server management via SSH, enabling command execution, system monitoring, file operations, and diagnostics through natural language.341MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to perform controlled Linux system administration tasks like reading logs, managing services, cron jobs, WordPress, and executing sandboxed Python code, with strict security constraints.292GPL 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mohabdo21/linux-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server