Skip to main content
Glama
smccauley-dev

Ubuntu SSH MCP Server

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 list

Alternative: 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 status

Security Notes

  • Use SSH key auth — avoid passing passwords where possible.

  • sudo_password is passed as a parameter; Claude Code stores no secrets. Use NOPASSWD sudoers for a CI/automation account if you prefer not to pass passwords.

  • harden_ssh will 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

ssh_connect

Connect to a server

ssh_disconnect

Disconnect from a server

ssh_list_connections

List active connections

Execution

Tool

Description

ssh_exec

Run a shell command

ssh_sudo

Run a command with sudo

System

Tool

Description

system_info

OS, CPU, RAM, disk, uptime

list_processes

Top processes by CPU/mem

check_disk_usage

Disk usage breakdown

network_info

Interfaces, routing, connections

ping_from_server

Ping a host from the server

Packages

Tool

Description

apt_update

Update package index

apt_upgrade

Upgrade all packages

apt_install

Install packages

apt_remove

Remove packages

Services

Tool

Description

service_status

Check service status

service_control

Start/stop/restart/enable/disable

list_services

List all/running/failed services

Logs

Tool

Description

view_logs

journalctl for service or system

tail_log_file

Last N lines of any log file

Files

Tool

Description

read_file

Read a remote file

write_file

Write a remote file

list_directory

List directory contents

Security

Tool

Description

security_audit

Full security audit

check_updates_security

Security-only apt updates

harden_ssh

Apply SSH hardening

ufw_status

UFW firewall status

ufw_rule

Add/delete UFW rules

ufw_enable_disable

Enable/disable UFW

fail2ban_status

Fail2ban jail status

fail2ban_unban

Unban an IP

Users

Tool

Description

user_list

List system users

user_create

Create a user

user_delete

Delete a user

add_authorized_key

Add SSH public key

cron_list

List cron jobs

Available Tools

35 tools
add_authorized_keyC

Add an SSH public key to a user's authorized_keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
publicKeyYesSSH public key string
targetUserYes
sudo_passwordNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
packagesYesPackage names to install
sudo_passwordNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
purgeNoAlso purge config files
packagesYes
sudo_passwordNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
sudo_passwordNo

TDQS

C2.5/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
autoRemoveNoRun apt autoremove afterwards
sudo_passwordNo

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to check/
aliasYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
sudo_passwordNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoUsername. Omit for current user.
aliasYes
sudo_passwordNo

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
jailNoSpecific jail name, e.g. 'sshd'. Omit for all jails.
aliasYes
sudo_passwordNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYesIP address to unban
jailYesJail name, e.g. 'sshd'
aliasYes
sudo_passwordNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
maxAuthTriesNo
sudo_passwordNo
disableRootLoginNo
disablePasswordAuthNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
longNo
pathNo/
aliasYes

TDQS

C2.2/5.0
Behavior1/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
countNoNumber of processes to show
sortByNoSort by CPU or memorycpu

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
filterNoall

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
countNo
targetYesHost or IP to ping

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
aliasYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
sudo_passwordNo

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
actionYes
serviceYes
sudo_passwordNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
serviceYesService name, e.g. 'nginx' or 'ssh'

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname or IP address
portNoSSH port (default 22)
aliasYesShort name for this connection, e.g. 'prod' or 'staging'
passwordNoPassword (use privateKeyPath instead for production)
usernameYesSSH username
passphraseNoPassphrase for the private key, if encrypted
privateKeyPathNoAbsolute path to private key file on the LOCAL machine

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
commandYesShell command to run
timeoutNoTimeout in ms

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
commandYesCommand to run as root
sudo_passwordNosudo password (omit if NOPASSWD is configured)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFull path to the log file
aliasYes
linesNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
enableYes
sudo_passwordNo

TDQS

C2.5/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleYese.g. '22/tcp', 'from 10.0.0.0/8 to any port 80', 'Nginx Full'
aliasYes
actionYes
sudo_passwordNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
sudo_passwordNo

TDQS

C2.3/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
newUserYes
addToSudoNo
createHomeNo
sudo_passwordNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
removeHomeNo
targetUserYes
sudo_passwordNo

TDQS

C2.3/5.0
Behavior1/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
humanOnlyNoShow only human users (UID >= 1000)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
linesNo
sinceNoe.g. '1 hour ago' or '2024-01-01'
serviceNoService name, or omit for kernel/system logs

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
aliasYes
contentYesFile content to write
sudo_passwordNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

B3.3/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness5/5

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

ActivityStale
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Ubuntu VMs via SSH, including executing commands, simulating keyboard/mouse input, capturing screenshots, and controlling GUI applications remotely.
    1
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    3
    MIT

Latest Blog Posts

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