Ubuntu SSH MCP Server
Allows connecting to Ubuntu servers over SSH to manage system packages, services, users, firewall, SSH configuration, perform security audits, and execute commands remotely.
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., "@Ubuntu SSH MCP ServerCheck system info on prod"
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.
Ubuntu SSH MCP Server
An MCP server that lets Claude Code connect to Ubuntu servers over SSH to manage, maintain, and secure them — all from a natural language conversation.
Features
Category | Tools |
Connection | Connect/disconnect servers, list active sessions |
Commands | Run shell commands, sudo commands |
System Info | OS/CPU/RAM/disk overview, process list, disk usage |
Packages | apt update, upgrade, install, remove |
Services | Start/stop/restart/enable systemd services |
Logs | journalctl, tail log files |
Files | Read, write, list remote files |
Security Audit | Open ports, SUID files, sudo rights, failed logins |
Firewall (UFW) | Status, add/delete rules, enable/disable |
SSH Hardening | Disable root login, password auth, MaxAuthTries |
Users | List, create, delete users; add SSH public keys |
Fail2ban | Jail status, unban IPs |
Cron | List cron jobs |
Network | Interface info, routing, ping |
Related MCP server: Ubuntu VM Control
Requirements
Node.js 18+
Claude Code (
npm install -g @anthropic-ai/claude-code)
Installation
# 1. Clone / copy this folder somewhere permanent
cd ~/ubuntu-ssh-mcp
npm install
# 2. Register with Claude Code (global scope — available in all projects)
claude mcp add ubuntu-ssh-mcp -- node /ABSOLUTE/PATH/TO/ubuntu-ssh-mcp/index.js
# Verify it's registered
claude mcp listAlternative: Project-level config
Create or edit .mcp.json in your project root:
{
"mcpServers": {
"ubuntu-ssh-mcp": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/ubuntu-ssh-mcp/index.js"]
}
}
}Usage Examples
Once Claude Code is running with the MCP server connected, just talk to it:
> Connect to my server at 192.168.1.10 as ubuntu using my key at ~/.ssh/id_rsa, call it "prod"
> Show me the system info for prod
> Check what security updates are available on prod
> Run a full security audit on prod
> Harden the SSH config on prod — make sure I have key auth working first
> Enable UFW on prod and allow only ports 22, 80, and 443
> Show the last 100 lines of the nginx error log on prod
> List all users on prod and check if any have unexpected sudo access
> Install fail2ban on prod and check the sshd jail statusSecurity Notes
Use SSH key auth — avoid passing passwords where possible.
sudo_passwordis passed as a parameter; Claude Code stores no secrets. UseNOPASSWDsudoers for a CI/automation account if you prefer not to pass passwords.harden_sshwill restart sshd — ensure key-based auth is working before calling it or you may lock yourself out.Connections persist for the life of the Claude Code session and are cleaned up on exit.
The server runs locally via stdio — no network ports are opened by the MCP server itself.
Tool Reference
Connection
Tool | Description |
| Connect to a server |
| Disconnect from a server |
| List active connections |
Execution
Tool | Description |
| Run a shell command |
| Run a command with sudo |
System
Tool | Description |
| OS, CPU, RAM, disk, uptime |
| Top processes by CPU/mem |
| Disk usage breakdown |
| Interfaces, routing, connections |
| Ping a host from the server |
Packages
Tool | Description |
| Update package index |
| Upgrade all packages |
| Install packages |
| Remove packages |
Services
Tool | Description |
| Check service status |
| Start/stop/restart/enable/disable |
| List all/running/failed services |
Logs
Tool | Description |
| journalctl for service or system |
| Last N lines of any log file |
Files
Tool | Description |
| Read a remote file |
| Write a remote file |
| List directory contents |
Security
Tool | Description |
| Full security audit |
| Security-only apt updates |
| Apply SSH hardening |
| UFW firewall status |
| Add/delete UFW rules |
| Enable/disable UFW |
| Fail2ban jail status |
| Unban an IP |
Users
Tool | Description |
| List system users |
| Create a user |
| Delete a user |
| Add SSH public key |
| List cron jobs |
Available Tools
35 toolsadd_authorized_keyC
Add an SSH public key to a user's authorized_keys.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| publicKey | Yes | SSH public key string | |
| targetUser | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral details such as whether the key is appended or overwritten, permission requirements, or potential side effects. The single word 'Add' is insufficient for a write 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 a single sentence, making it concise but at the expense of necessary detail. It is not front-loaded with critical 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 no output schema, no annotations, and 4 parameters with low schema coverage, the description is inadequate. It omits return values, success conditions, and security implications, making it incomplete for a system mutation 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 only 25% (just publicKey). The description adds no parameter explanations (e.g., what alias represents, targetUser format, or sudo_password usage), failing to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Add'), the resource ('SSH public key'), and the target ('a user's authorized_keys'), making the purpose clear and distinct from sibling tools like ssh_connect or harden_ssh.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., harden_ssh, which might also modify authorized_keys). No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apt_installC
Install one or more packages.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| packages | Yes | Package names to install | |
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It only says 'install' but omits potential side effects, required permissions, or that sudo_password parameter hints at authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but lacks necessary detail. It is not overly verbose but could provide more information without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
System-modifying tool with no output schema, no annotations, and little param info. Description is too sparse to guide correct invocation.
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 only 33% (only 'packages' has a description). The description does not add meaning for 'alias' or 'sudo_password', failing to compensate for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Install one or more packages' clearly states the action (install) and resource (packages). It distinguishes from sibling tools like apt_remove and apt_upgrade.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not specify prerequisites like sudo or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apt_removeC
Remove one or more packages.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| purge | No | Also purge config files | |
| packages | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states 'remove packages' and does not disclose behavioral traits such as permission requirements, side effects on dependencies, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the core purpose. It wastes no words, though it could benefit from additional detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and no annotations, the description is severely underdeveloped. It does not cover return values, prerequisites, or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no meaning beyond the input schema. Schema coverage is only 25% (one parameter described), and the description does not compensate by explaining the other parameters or their usage.
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: removing one or more packages. The verb 'remove' and resource 'packages' are specific, and it distinguishes from sibling tools like apt_install, apt_update, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like apt_remove vs. purge, or when not to use it. The description lacks context for proper selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apt_updateC
Run apt update and show available upgrades.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose that the tool may require sudo, modifies system state (updates package cache), or any safety considerations. The phrase 'show available upgrades' suggests read-only, but the underlying apt update is a write 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?
Extremely brief, but under-specified. The single sentence does not provide enough information for a two-parameter tool with zero schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate given 0% schema coverage, no annotations, no output schema, and sibling tools. Missing details on return values, prerequisites, and parameter usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the parameters 'alias' or 'sudo_password', leaving their meaning and usage unclear.
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 'Run', the resource 'apt update', and the outcome 'show available upgrades'. It distinguishes from sibling tools like apt_install, apt_remove, and apt_upgrade, which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as apt_upgrade or check_updates_security. The description lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apt_upgradeB
Upgrade all packages (apt upgrade). Use apt_update first.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| autoRemove | No | Run apt autoremove afterwards | |
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only states 'upgrade all packages' without mentioning required permissions (sudo), potential side effects (service restarts), or that it modifies system state. The destructive nature is implied but not clarified.
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-load the key action and prerequisite. It is concise and clear, but could be slightly more informative without losing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and only partial parameter descriptions, the description does not explain return values or behavior. The agent lacks context on what happens after upgrade (e.g., reboot needed) and how parameters affect execution.
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 33% (only autoRemove has a description). The tool description adds no information about parameters, leaving the agent without guidance on meaning of alias or sudo_password. With low coverage, the description should compensate but does not.
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 'Upgrade all packages (apt upgrade)' with a specific verb and resource, and distinguishes from sibling tools like apt_install and apt_update by implying it is the upgrade step.
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 instructs to 'Use apt_update first', providing a clear prerequisite. However, it does not specify when not to use this tool (e.g., when only security updates are needed, alternatives like check_updates_security exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_disk_usageB
Show disk usage for a specific directory or all mounts.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to check | / |
| alias | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist; the description is minimal and doesn't disclose operational traits like requiring root, output format, or potential performance impact on large directories.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 11 words, no redundancy. Front-loaded with verb and object.
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, the description is adequate but omits return format and behavioral details. Agent would need to infer output from 'show disk usage'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (path has description, alias does not). The description adds context about 'all mounts' vs 'specific directory', which aligns with the path parameter default '/'. However, it doesn't clarify alias usage or add significant meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows disk usage for a directory or all mounts. It distinguishes from siblings like 'system_info' or 'list_directory' by focusing on disk space, but doesn't explicitly contrast with alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs. other tools. Siblings like 'system_info' or 'list_directory' exist but no exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_updates_securityC
List security-only updates available via apt.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| sudo_password | No |
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 mentions listing updates but does not disclose execution requirements (e.g., needing sudo), side effects (none expected), or behavior like requiring network access. The description is too minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, very concise. However, it sacrifices useful information for brevity, which is acceptable but not optimal.
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 2 undocumented parameters and no output schema, the description should explain what 'alias' means and when 'sudo_password' is required. It lacks completeness for reliable agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the purpose or format of the two parameters (alias, sudo_password). It adds no value over 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 action (List), the resource (security-only updates), and the method (via apt). It distinguishes this tool from sibling tools like apt_update and apt_upgrade.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor any prerequisites or context. The description does not indicate that it requires sudo privileges or when a password parameter is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cron_listC
List cron jobs for a user or all users.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | Username. Omit for current user. | |
| alias | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It only states 'list cron jobs' without mentioning permissions, side effects (e.g., mutability), error handling, or output format. Critical gaps for safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundancy. It is appropriately sized, but the conciseness comes at the cost of omitting necessary details for usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no output schema, and no annotations, the description is incomplete. It does not specify the return format, required privileges, or how the 'all users' option works. Essential context 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?
Schema coverage is only 33% (only 'user' has a description). The tool description adds no extra meaning for parameters; 'alias' and 'sudo_password' remain unexplained. With low schema coverage, the description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists cron jobs for a user or all users, using a specific verb and resource. However, it does not differentiate from sibling tools or specify scope (e.g., local system), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, when not to use, or how it differs from other admin tools. The description is purely functional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fail2ban_statusC
Show fail2ban jail status and banned IPs.
| Name | Required | Description | Default |
|---|---|---|---|
| jail | No | Specific jail name, e.g. 'sshd'. Omit for all jails. | |
| alias | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose side effects and authentication needs. It only says it shows status, omitting that it requires sudo (implied by sudo_password), and no mention of read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise, but lacks structure. Could include more details without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters (one required) and no output schema, the description is insufficient. It doesn't explain what jail status entails, output format, or parameter usage 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 33% (only jail parameter described). The tool description adds no parameter details despite missing descriptions for alias and sudo_password. It fails to compensate for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it shows fail2ban jail status and banned IPs, using a specific verb and resource. It distinguishes from sibling fail2ban_unban, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like fail2ban_unban or service_status. The description only states what it does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fail2ban_unbanC
Unban an IP address from a fail2ban jail.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | IP address to unban | |
| jail | Yes | Jail name, e.g. 'sshd' | |
| alias | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must reveal behavioral traits. It states 'Unban' but does not disclose that this modifies system state, requires elevated privileges, or has immediate effect. The need for sudo_password and alias is implied by the schema but not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no superfluous words. It directly states the tool's purpose, exemplifying excellent conciseness and front-loading.
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 low complexity and 4 parameters with moderate schema coverage, the description omits critical context. It fails to explain the remote execution aspect (alias), why sudo_password is needed, or any side effects of unbanning. Without an output schema, the user is left uninformed about success indicators or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 50% of parameters (ip and jail have descriptions). The description adds no further meaning beyond the schema's paraphrasing. The alias and sudo_password parameters lack any contextual explanation, which is insufficient given the incomplete schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Unban') and the resource ('IP address from a fail2ban jail'). It is specific and distinguishes from sibling tool fail2ban_status. However, it could mention the tool's context (e.g., remote execution via alias) for even greater clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not explain prerequisites (e.g., sudo privileges, alias definition) or circumstances for unbanning (e.g., after reviewing fail2ban logs). Competing tools like fail2ban_status are not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
harden_sshA
Apply SSH hardening best practices via a drop-in file: disable root login, disable password auth, set MaxAuthTries. IMPORTANT: ensure you have key-based auth working before running this.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| maxAuthTries | No | ||
| sudo_password | No | ||
| disableRootLogin | No | ||
| disablePasswordAuth | No |
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 it creates a drop-in file and modifies SSH settings (disable root login, disable password auth, set MaxAuthTries). The warning about key-based auth addresses a key risk. However, it omits details about reversibility, whether sshd is restarted, or permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the purpose, and includes an important warning. Every word adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 5 parameters, and no output schema, the description provides essential purpose and a prerequisite but lacks explanation of output, errors, or post-conditions. It could be more complete by hinting at the expected effect on SSH connectivity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must add meaning. It explains three of five parameters (disableRootLogin, disablePasswordAuth, maxAuthTries) and their defaults, but misses 'alias' (required) and 'sudo_password'. The description does not clarify that 'alias' is a host identifier or that sudo_password is needed for privilege escalation.
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 applies SSH hardening best practices, specifying actions like disabling root login and password auth. It distinguishes itself from siblings like ssh_connect or add_authorized_key which serve different purposes.
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 warns users to ensure key-based authentication is working before running, providing a critical prerequisite. It implies when not to use the tool but does not explicitly compare to other tools like fail2ban_status or security_audit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryC
List files in a remote directory.
| Name | Required | Description | Default |
|---|---|---|---|
| long | No | ||
| path | No | / | |
| alias | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states it lists files, but omits critical behaviors: how it handles missing directories, whether it uses SSH, performance implications, or if it traverses recursively. The agent cannot predict side effects or 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 extremely concise (one sentence), but it sacrifices necessary detail. It would be better to expand slightly to cover key parameters and usage context, so the conciseness is not earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, 3 parameters with no descriptions, and no behavioral hints, the description is grossly incomplete. It fails to inform the agent about return values, error handling, or parameter effects, making it insufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage on parameters, and the description adds no explanation for 'alias', 'path', or 'long'. An agent has no understanding of what each parameter does or what values are acceptable beyond basic types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('list files') and the resource ('remote directory'), making the primary purpose understandable. However, it does not differentiate from sibling tools like 'read_file' or 'tail_log_file' that also involve file listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, failure scenarios, or under what conditions it is appropriate to call list_directory instead of other file-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_processesC
List top processes by CPU or memory usage.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| count | No | Number of processes to show | |
| sortBy | No | Sort by CPU or memory | cpu |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It implies a read-only operation but lacks details on permissions, side effects, or limitations. The simplicity of the tool partially mitigates this, but transparency is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, achieving high conciseness. It is front-loaded with the action and resource, but could include more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of output schema, the description omits important context such as output format, default behavior, and error conditions. While adequate for a trivial tool, it leaves gaps for an AI agent.
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 mentions 'by CPU or memory usage', which aligns with the sortBy parameter, but adds no clarifying detail for the alias or count parameters. Schema coverage is 67%, but alias lacks description, and the tool description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'top processes by CPU or memory usage', making the purpose evident. However, it does not explicitly differentiate from sibling tools, though no sibling directly lists processes, so differentiation is implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool or alternatives is provided. The description only states what it does, leaving the agent to infer context from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesC
List all systemd services and their states.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| filter | No | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavior. It does not mention that the operation is read-only, any required permissions, or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and concise, but it lacks critical information. Conciseness should not come at the expense of completeness.
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 2 parameters, no output schema, and no annotations, the description is severely incomplete. It fails to explain the alias filter, the meaning of the returned states, or how to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the 'alias' parameter or the 'filter' enum values. The agent is left without understanding how to use these parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'systemd services and their states'. It effectively distinguishes from sibling tools like service_status which likely targets a single service.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as service_status or service_control. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_infoC
Show network interfaces, routing table, and active connections.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behaviors. It implies a read-only operation but fails to mention whether root privileges are needed, if commands are executed, or any side effects on the system.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded with the verb. However, it sacrifices essential details for brevity, making it less helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and an undocumented parameter, the description is incomplete. It lists three outputs but does not explain the parameter or the return format, insufficient for effective tool 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 sole parameter 'alias' has no description in the schema (0% coverage) and the description does not explain its purpose. It is unclear how 'alias' filters the displayed network information, leaving the agent unable to use the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows network interfaces, routing table, and active connections, specifying the verb 'Show' and the resources. However, it does not differentiate from siblings like 'system_info' that might also display network 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?
No guidance on when to use this tool versus alternatives. No exclusions or context provided, leaving the agent to infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ping_from_serverC
Ping a host from the remote server.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| count | No | ||
| target | Yes | Host or IP to ping |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states the action without disclosing behavioral traits (e.g., permissions required, timeout behavior, non-destructive nature).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but lacks structure; it is front-loaded but could include more value without significant length increase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and no annotations, the description fails to explain return values or tool behavior sufficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has low description coverage (33% for target only). Description adds no additional parameter details; alias and count remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Ping', resource 'host', and context 'from the remote server', distinguishing it from sibling tools like network_info or ssh_connect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like network_info or other connectivity checks, nor any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileC
Read the contents of a remote file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| alias | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for disclosing behavior. It only states 'read the contents' without detailing whether the entire file is read, what happens for large files, binary mode, error handling (e.g., file not found), or required permissions. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence), but it under-specifies essential details. True conciseness would pack more meaning into fewer words without sacrificing clarity; here, brevity comes at the cost of completeness.
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 low complexity (2 required params, no output schema), the description omits output format, error behavior, and parameter meanings. An agent lacks sufficient information to use the tool reliably, making it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 2 parameters (alias, path) with 0% description coverage. The description adds no information about what 'alias' or 'path' represent, which is critical for correct use. The agent cannot infer expected values or formats from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'read' and the object 'contents of a remote file', effectively distinguishing it from sibling tools like 'write_file' and 'tail_log_file'. However, it could be more specific about the type of remote file (e.g., text vs binary) and encoding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'tail_log_file' or 'list_directory'. There are no prerequisites (e.g., file existence) or exclusions mentioned, leaving the agent without context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_auditB
Run a comprehensive security audit: open ports, users, SSH config, sudo rights, SUID files, failed logins.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| sudo_password | No |
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 hints at needing sudo access (via 'sudo_password' parameter) but does not disclose whether the tool is read-only, how long it takes, or what changes it might make. Mid-level transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence listing audit items, which is concise but lacks structural elements like line breaks or bullets that could improve readability for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not mention the output format, error handling, or side effects. For a complex comprehensive audit tool, this leaves significant gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description provides no explanation of the 'alias' or 'sudo_password' parameters beyond their names. This is insufficient for an agent to correctly use the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run' and the resource 'security audit', and lists specific security checks (open ports, users, SSH config, etc.), which effectively distinguishes it from sibling tools like 'system_info' or 'check_updates_security'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as individual security-related tools (e.g., 'fail2ban_status', 'harden_ssh'). Lacks context on prerequisites or situations where a comprehensive audit is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_controlC
Start, stop, restart, reload, enable, or disable a systemd service.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| action | Yes | ||
| service | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose important behavioral traits like required privileges (sudo_password parameter hints but is not explained), potential destructiveness, or what happens if the service does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, using a single sentence to list all actions. However, it could include more useful details without becoming lengthy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters (3 required) and no output schema, the description is incomplete. It does not cover return values, error handling, or parameter descriptions, making it insufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description only elaborates on the 'action' parameter by listing its possible values. It does not explain 'alias', 'service', or 'sudo_password', leaving significant 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 explicitly states the actions (start, stop, restart, reload, enable, disable) and the resource (systemd service), distinguishing it from sibling tools like service_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, such as when to use enable vs start or prerequisites like systemd being installed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_statusC
Check the status of a systemd service.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| service | Yes | Service name, e.g. 'nginx' or 'ssh' |
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. The description indicates a read-only operation ('check'), but does not confirm whether it requires special permissions or whether it has side effects. It lacks details on output format or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence of 6 words. While efficient, it may be too terse, omitting necessary context. It earns its place but does not leverage the space for additional helpful 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?
Given the tool's simple nature with two required parameters and no output schema, the description should specify the return value (e.g., 'active' or 'inactive', or a structured status). It lacks completeness; an agent cannot anticipate the output format or how to 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?
Schema description coverage is 50% (only 'service' has a description). The description adds no additional meaning to the parameters beyond the schema. The 'alias' parameter is left unexplained; its purpose is ambiguous (could be a host alias or user context).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Check the status of a systemd service.' The verb 'check' and resource 'systemd service' are specific. However, it does not explicitly differentiate from sibling tools like 'list_services' (which shows status of all services) or 'service_control' (which manages services), though the distinction is implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings. There is no mention of alternatives, prerequisites, or when not to use it. For example, 'list_services' might be more appropriate to see all services, and 'service_control' is for start/stop/restart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_connectB
Connect to an Ubuntu server via SSH. Stores the connection under an alias for subsequent commands.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Hostname or IP address | |
| port | No | SSH port (default 22) | |
| alias | Yes | Short name for this connection, e.g. 'prod' or 'staging' | |
| password | No | Password (use privateKeyPath instead for production) | |
| username | Yes | SSH username | |
| passphrase | No | Passphrase for the private key, if encrypted | |
| privateKeyPath | No | Absolute path to private key file on the LOCAL machine |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for disclosing behavior. It states the action and alias storage but lacks details on authentication methods, connection error handling, idempotency, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two terse sentences, front-loads the core purpose, and every word is informative. 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?
Despite good schema coverage, the description omits what the tool returns (e.g., connection confirmation) and error handling. Given the complexity of an SSH connection tool and the lack of an output schema, this is insufficient for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema descriptions cover 100% of parameters, the baseline is 3. The description adds no significant new meaning beyond what the schema already provides (e.g., 'alias' is described in schema as 'Short name for this connection').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Connect) and resource (Ubuntu server via SSH), and highlights the key feature of storing the connection under an alias for subsequent commands. This effectively distinguishes it from sibling tools like ssh_exec or ssh_disconnect.
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 implicitly indicates that the tool is a prerequisite for subsequent commands (e.g., ssh_exec), but it does not explicitly state when to use it versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_disconnectC
Disconnect from a server.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description only states the action. Does not disclose side effects, error conditions, or whether it terminates all sessions for the alias.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at three words, but no structure or additional context. While brevity is good, it sacrifices clarity and completeness.
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 no output schema, the description is insufficient. It fails to explain the parameter or the expected state of the system (e.g., must be connected).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain that 'alias' is the server identifier from ssh_connect. Agent cannot infer the parameter's meaning or expected format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'disconnect' and resource 'server', using a specific verb. It distinguishes from sibling tool ssh_connect which does the opposite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. No instructions about prerequisites like an active SSH session or that alias must refer to an existing connection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_execB
Run any shell command on a connected server (as the SSH user).
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| command | Yes | Shell command to run | |
| timeout | No | Timeout in ms |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only mentions running as SSH user, but does not cover timeouts, blocking behavior, error handling, or side effects. The description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. It could include more detail without being verbose, but it is not overly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should provide more context about return values, errors, and behavior. It does not mention what happens on success or failure, leaving gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so baseline is 3. The description adds no extra meaning beyond the schema: 'command' is already described, and 'alias' and 'timeout' are not elaborated in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run any shell command') and the resource ('on a connected server as the SSH user'). It is specific and distinguishes from sibling tools like ssh_sudo, which implies sudo privileges.
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 does not provide explicit guidance on when to use this tool versus alternatives. It says 'any shell command', but with many sibling tools (e.g., ssh_sudo, service_control), it lacks context on when to choose this over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_list_connectionsA
List all active SSH connections.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as read-only nature, permission requirements, or what qualifies as 'active'. The description bears the full burden but adds minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is concise and without waste. It front-loads the action and resource.
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 0-parameter tool, the description is adequate but lacks depth: what does 'active' mean? Is it limited to the current user? No output schema exists to compensate. A bit more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100%. The description correctly omits param detail. With no parameters, baseline is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all active SSH connections' with a specific verb and resource. Among siblings like ssh_connect and ssh_disconnect, it is distinct as a listing tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like ssh_exec or checking connection status via system health tools. The intended context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_sudoC
Run a command with sudo on a connected server. Requires the user to have sudo rights.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| command | Yes | Command to run as root | |
| sudo_password | No | sudo password (omit if NOPASSWD is configured) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It only states the action and a requirement, but omits details like what happens on failure, security implications, whether output is returned, or that a connection must already exist.
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, but it could benefit from a brief sentence on usage context without losing efficiency.
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 absence of an output schema and annotations, the description should provide more context about return values, prerequisites (active connection), and error handling, which it fails to do.
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 67%, but the description does not explain the 'alias' parameter, which is required and lacks a schema description. It adds no additional meaning beyond the existing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run a command with sudo') and the resource ('on a connected server'), effectively distinguishing it from siblings like ssh_exec which would run without sudo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., ssh_exec). The only prerequisite mentioned is sudo rights, but no context on when to choose sudo over non-sudo execution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_infoC
Get a comprehensive system overview: OS, CPU, RAM, disk, uptime, load.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must convey behavior. It does not explicitly state that the operation is read-only, non-destructive, or what permissions are required. The agent cannot fully assess safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence. However, it omits critical information about the parameter, making it incomplete. It could be restructured to include parameter details without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and no output schema, the description should explain the parameter and expected output. It does neither, leaving the agent underinformed for effective 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 input schema has a required 'alias' parameter with no description, and the tool description does not explain what 'alias' means. Since schema coverage is 0%, the description entirely fails to clarify the parameter's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a 'comprehensive system overview' and lists specific categories: OS, CPU, RAM, disk, uptime, load. This distinguishes it from sibling tools like network_info or check_disk_usage by implying a broader 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?
No guidance is provided on when to use this tool versus alternatives such as list_processes, check_disk_usage, or network_info. The description merely states what it does without contextual cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tail_log_fileC
Read the last N lines of any log file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path to the log file | |
| alias | Yes | ||
| lines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only provides basic action. It does not disclose whether it follows the file, performance implications, or any limits. For a read tool, lacking details like 'reads from end' (implied by 'tail') but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence with clear front-loading of verb and object. No wasted words, but could benefit from a brief elaboration on behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should hint at return format (e.g., raw lines). It does not. Also missing behavioral details like how lines are counted (e.g., what happens if file smaller than N). Incomplete 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 33% with only 'path' described. The description does not explain the 'alias' parameter or that 'lines' defaults to 50. It adds no meaning beyond the schema, failing to compensate for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Read' and resource 'log file', specifies 'last N lines', which distinguishes it from siblings like 'view_logs' (likely filtered) and 'read_file' (reads entire file). The scope 'any log file' is appropriately broad.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. It does not mention that it is best for large files or monitoring recent entries, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ufw_enable_disableC
Enable or disable the UFW firewall.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| enable | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the brief description does not disclose whether sudo is required, side effects on existing rules, or the impact of toggling the firewall, leaving significant behavioral gaps.
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?
At only 4 words, the description is under-specified, sacrificing necessary detail for brevity. It lacks structure for a tool with multiple parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and no annotations, the description fails to cover return values, parameter roles, or failure modes, making it wholly incomplete for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description adds no meaning to the 3 parameters (alias, enable, sudo_password). Their purpose and constraints remain undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb ('enable or disable') and the resource ('UFW firewall'), making the tool's purpose unambiguous and distinguishing it from siblings like ufw_rule and ufw_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to enable/disable vs. using siblings like ufw_status or ufw_rule, nor does it mention any prerequisites or best practices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ufw_ruleC
Add or delete a UFW firewall rule.
| Name | Required | Description | Default |
|---|---|---|---|
| rule | Yes | e.g. '22/tcp', 'from 10.0.0.0/8 to any port 80', 'Nginx Full' | |
| alias | Yes | ||
| action | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'add or delete' but does not disclose that rules are modified immediately, potential impact on existing rules, or that sudo_password is required. Missing details on persistence and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single sentence, concise. However, it lacks structure and could provide more information in a few more sentences without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, no output schema, and no annotations, the description is insufficient. Does not explain what happens on success/failure, how to interpret results, or the role of 'alias' and 'sudo_password'.
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 only 25% (only 'rule' has a description). Description does not add meaning to 'alias' or 'sudo_password', which are left undocumented. Examples in 'rule' help but are minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool adds or deletes a UFW firewall rule, with specific verbs and resource. It is distinct from sibling tools like ufw_enable_disable and ufw_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites or context for when to choose add/delete actions. Does not explain relationship to other UFW tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ufw_statusC
Show UFW firewall status and rules.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavioral traits like sudo requirements or output format. It only says 'Show UFW firewall status and rules,' omitting that sudo_password is a parameter, implying elevated privileges may be needed. No details on output structure or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one short sentence), but at the expense of critical information. It is underspecified for the tool's complexity (2 params, no output schema), making it more terse than effectively concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should explain return values, potential errors, or authentication needs. It provides none of these, leaving the context highly incomplete for an AI agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds no information about the two parameters (alias, sudo_password). It fails to explain what alias refers to or that sudo_password might be required for authentication, leaving the agent without guidance on how to use these parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows UFW firewall status and rules, using a specific verb and resource. It distinguishes from sibling tools like ufw_enable_disable and ufw_rule, which involve enabling/disabling or managing rules, not just viewing status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as when to check firewall status via other commands. There is no context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_createC
Create a new system user.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| newUser | Yes | ||
| addToSudo | No | ||
| createHome | No | ||
| sudo_password | No |
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 only says 'create a new system user' but does not disclose behaviors like error conditions, required permissions, side effects, or what happens if the user already 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 extremely short (one sentence). While concise, it lacks important detail that could be added without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, no annotations, and 0% schema description coverage, the description does not adequately prepare the agent to use the tool correctly. It omits return values, error handling, and parameter semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to any of the 5 parameters. Parameters like addToSudo, createHome, and sudo_password remain unexplained, forcing the agent to guess their purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('create') and the resource ('new system user'). It distinguishes itself from sibling tools like user_delete and user_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool or when not to. No mention of prerequisites, alternatives, or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_deleteC
Delete a system user.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| removeHome | No | ||
| targetUser | Yes | ||
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are available, and the description does not disclose critical behavioral details such as irreversibility, impact on home directories (despite the removeHome parameter), requirement for elevated privileges, or error conditions.
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 with one sentence, but it sacrifices necessary details. It is front-loaded with the core action but lacks structure to cover parameter details or usage notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation involving four parameters and no output schema, the description is incomplete. It omits return values, side effects, and error conditions.
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?
With 0% schema description coverage, the description fails to explain the purpose or usage of any of the four parameters. It adds no meaning beyond what the schema structure conveys.
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 'Delete a system user' clearly states the verb and resource. It is specific enough to distinguish from related sibling tools like user_create and user_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There are no exclusions, prerequisites, or context about system administration considerations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_listB
List system users.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| humanOnly | No | Show only human users (UID >= 1000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose behavioral traits like read-only nature, required privileges, or side effects. For a list operation, it should mention safety and scope (e.g., local vs. network users).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with key action. It is efficient but could include more context without significant bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description omits critical details like required alias parameter, default behavior of humanOnly, and return format. For a tool with no output schema, more description is needed to set expectations.
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 50% (humanOnly described); description adds no meaning beyond 'List system users', failing to explain the alias parameter's role or filtering behavior. Agent must infer from 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?
Description clearly states 'List system users' with a specific verb and resource, distinguishing it from sibling tools like user_create or user_delete. It explicitly defines the tool's action and subject.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, such as checking specific user details via other tools. Implied by name and description but lacks context for complex scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_logsA
View systemd journal logs for a service or the whole system.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| lines | No | ||
| since | No | e.g. '1 hour ago' or '2024-01-01' | |
| service | No | Service name, or omit for kernel/system logs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only says 'View' implying a read operation, but it does not disclose whether permissions are required (e.g., sudo), performance impact, or how the output is structured. The description is insufficient for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and no annotations, the description is too brief. It does not explain the meaning of 'alias', the format of output, or any important behaviors like pagination or filtering. The description lacks completeness for a log-viewing 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 50% (two of four parameters have descriptions). The description adds context that 'service' can be omitted for kernel/system logs, which is not in the schema. However, it does not explain the required 'alias' parameter or the 'lines' and 'since' parameters beyond what the schema shows. The description partially compensates for the coverage gap.
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 'View systemd journal logs for a service or the whole system.' It specifies the verb (view), resource (systemd journal logs), and scope (service or whole system), distinguishing it from sibling tools like tail_log_file that target specific files.
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 implicitly indicates when to use this tool (for systemd journal logs) but does not explicitly state when not to use it or mention alternatives. However, the context is clear enough for an agent to differentiate from file-oriented log tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileC
Write content to a remote file (overwrites). Use with caution.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| alias | Yes | ||
| content | Yes | File content to write | |
| sudo_password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it overwrites, but lacks details on permissions, error handling, file size limits, or consequences of using sudo_password. With no annotations, the description carries the full burden and is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence, no wasted words, front-loaded with action and caution.
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 4 parameters, no output schema, and no annotations, the description is far too brief. It does not explain the role of alias, path, or sudo_password, nor what happens after writing (e.g., success/failure signals).
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 25% with only the content parameter described. The description adds nothing about alias, path, or sudo_password, failing to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('write') and resource ('remote file'), and specifies it overwrites, which distinguishes it from sibling tools like read_file and list_directory.
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?
Only includes a caution ('Use with caution'), but no explicit guidance on when to use vs alternatives or when not to use. Sibling tools exist but no comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clear and distinct purpose. For example, apt_install and apt_remove are separate, ssh_exec and ssh_sudo are differentiated by privilege, and tail_log_file vs view_logs target different log sources. No two tools overlap significantly.
All tool names use snake_case and follow a consistent verb_noun or domain_action pattern (e.g., apt_install, list_directory, ufw_status). Even tools like fail2ban_status and harden_ssh fit this pattern. There is no mixing of conventions.
With 35 tools, the server covers a broad range of Ubuntu administration tasks. While slightly on the high side, each tool serves a specific function, and the count is reasonable for the comprehensive scope intended. A few tools like ssh_exec and ssh_sudo could be combined, but they are distinct enough to justify separation.
The tool set provides complete coverage for common server administration tasks: connection management, package management, file operations, user management, service control, firewall configuration, security hardening, and monitoring. There are no obvious gaps that would prevent an agent from performing typical administrative workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Scoped, audited SSH exec, sessions, and SFTP on your saved servers without exposing credentials
Deploy, monitor, and manage your OpenClaw AI assistants via natural language.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables managing Ubuntu/Linux servers through natural language by establishing SSH connections and executing remote commands. Supports real-time command execution and output through Claude Desktop or Cursor IDE.14
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Ubuntu VMs via SSH, including executing commands, simulating keyboard/mouse input, capturing screenshots, and controlling GUI applications remotely.1
- AlicenseAqualityCmaintenanceEnables AI assistants to manage remote servers via SSH with agentless command execution, file operations, and service management.9MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to SSH into Linux servers, run commands, deploy code, and manage servers via natural language, also doubles as a CLI for manual use.3MIT
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/smccauley-dev/ubuntu-ssh-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server