Skip to main content
Glama
cygnussystems

cygnus-ssh-mcp

Official

cygnus-ssh-mcp

Cross-platform SSH MCP server with 46 purpose-built tools for real server management by AI agents

PyPI version Python License: GPL v3 Tests

Give Claude, OpenCode, or any MCP-compatible AI assistant full control of your Linux, macOS, and Windows servers with 46 specialized tools

Prerequisites · Installation · Quick Start · Features · Documentation


TIP

A note from the author: I've been running this daily since April 2025 — over a year now — to manage a dozen+ machines and devices, plus a Proxmox host running 30+ containers, across a network tied together with Tailscale. It started as a tool to solve my own problem, and it's saved me a huge amount of manual work ever since. After a year of running it against Linux, I've since added support for Windows, macOS, and other devices with reduced shells like BusyBox. I'm open-sourcing it now because I think anyone running real infrastructure will find it just as useful. This is a young public repo, but the tool behind it isn't new or unproven — it's been battle-tested against my own servers for over a year.

If you find it useful, a ⭐ star or a mention to someone who manages their own infrastructure goes a long way for a project this new — thank you!


Why cygnus-ssh-mcp?

cygnus-ssh-mcp is an MCP server - usable from Claude Desktop, Claude Code, OpenCode, or any other MCP-compatible client - that connects your AI assistant directly to your remote servers over SSH, exposing 46 purpose-built tools instead of one generic command-runner. It turns natural-language requests into real systems administration - connecting by alias, editing files, managing background processes, handling sudo - across Linux, macOS, and Windows targets alike.

Doing that properly means solving a pile of genuinely hard, per-platform problems that a naive ssh wrapper never has to face - and that this project hit and fixed the hard way, including:

  • Getting a real PID back from a Windows target, instead of a meaningless local channel number

  • Recovering the actual exit code when Win32-OpenSSH silently flattens it to 1

  • Reading file contents via SFTP instead of Get-Content, because PowerShell's console encodes stdout in its OEM code page and corrupts anything non-ASCII

  • Killing a sudo'd background process without leaving its privileged child orphaned or blindly firing SIGKILL at the wrong PID

None of this shows up until you actually run these tools against real Linux, macOS, and Windows targets under real conditions - which is exactly how every one of these was found and fixed here, not guessed at from documentation.

What you get

Basic SSH MCP

cygnus-ssh-mcp

Run commands

Pre-configured hosts with aliases

Sudo support (Linux/macOS)

Limited

Windows Server support

Background task management

Line-level file editing

Command history with output

Recursive directory operations

Archive create/extract

Full Unicode support

Varies

Beyond Linux, macOS, and Windows, cygnus-ssh-mcp can also reach further - routers, NAS boxes, and other non-standard SSH targets connect too, via a flex platform type and a capability probe that detects what each device's shell can actually do. See Connecting to Alternate Platforms below.

WARNING

Alternate-platform (flex) support is a work in progress. It's been verified against several real devices, but the space of routers/NAS/embedded systems is huge - expect rough edges on hardware that hasn't been tried yet.

Example agent tasks

Ask your MCP-capable agent to:

  • "Check disk space, memory, uptime, and recent logs on my web host."

  • "Patch this remote config file safely and show me the diff."

  • "Upload this build artifact, extract it, and restart the service."

  • "Start this command in the background and fetch the output later."

  • "Inspect running processes on my Windows SSH host."


Related MCP server: SSH MCP Server

Prerequisites: SSH on Your Target Servers

cygnus-ssh-mcp connects over standard SSH - it doesn't provide SSH itself, so each server you want to manage needs an SSH server already installed and running.

Linux - usually pre-installed on server distros; if not:

sudo apt install openssh-server   # Debian/Ubuntu
sudo systemctl enable --now ssh

macOS - enable Remote Login in System Preferences → Sharing, or from the terminal:

sudo systemsetup -setremotelogin on

Windows (Server 2019+, or Windows 10/11) - OpenSSH Server is an optional feature:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

See Windows Support for Windows Server 2016 and other edge cases.


Installation

Pick one of the two options below - they're independent tools that don't share storage, so commands from one won't see or affect what the other did.

Option A: pip (a persistent install)

pip install cygnus-ssh-mcp

Uninstalling or upgrading:

pip uninstall cygnus-ssh-mcp
pip install --upgrade cygnus-ssh-mcp

Option B: uvx (no install at all)

NOTE

What's uvx? It's part of uv (a fast Python package manager) - uvx <package> downloads a package into a disposable, isolated cache and runs it immediately, without installing it into your system Python, a project, or anywhere pip can see. Nothing lingers afterward for you to manage. It's the easiest option if you just want your MCP client to launch this server without thinking about Python environments at all.

uvx cygnus-ssh-mcp

There's nothing to "uninstall" - uvx re-resolves and re-fetches the latest version on every run anyway. To force a fresh fetch or clear its cache instead:

uvx --refresh cygnus-ssh-mcp   # force this run to ignore the cache
uv cache clean                 # clear uv's entire package cache

If you want a uvx-style setup that does persist (so it doesn't re-fetch every time) and can be upgraded deliberately, use uv tool install cygnus-ssh-mcp instead - manage that with uv tool uninstall cygnus-ssh-mcp / uv tool upgrade cygnus-ssh-mcp. This is still separate from pip (Option A) - don't mix pip commands with anything set up via uv/uvx, they can't see each other.


Quick Start

1. Add your hosts

You don't need to create anything by hand - the first time the server starts, it automatically creates an empty host config file at ~/.mcp_ssh_hosts.toml (secure 0o600 permissions) if nothing is there yet. Just open that file (or use ssh_conn_add_host from within your AI assistant) and add entries like:

# Minimal (password auth) - only required fields
["user@server.example.com"]
password = "your_password"
port = 22

# With alias and sudo (most common setup)
["admin@production.example.com"]
password = "your_password"
port = 22
sudo_password = "sudo_pass"        # optional: for use_sudo operations
alias = "prod"                     # optional: connect by alias
description = "Production server"  # optional: for documentation

# SSH key authentication
["deploy@staging.example.com"]
keyfile = "~/.ssh/id_ed25519"
port = 22
alias = "staging"

# Windows Server (requires OpenSSH)
["administrator@winserver.example.com"]
password = "your_password"
port = 22
alias = "win-prod"

Required fields: port + (password OR keyfile) Optional fields: alias, description, sudo_password, key_passphrase

sudo_password is optional if your account uses password auth - when omitted, the regular password is reused for use_sudo operations too. It's only required if your sudo password differs from your login password, or if you're using SSH key auth (keyfile) with no password field at all - in that case, either set sudo_password explicitly or configure passwordless sudo on the server.

TIP

Host file locations: Default is ~/.mcp_ssh_hosts.toml. Falls back to ./mcp_ssh_hosts.toml if not found. Use --config /path/to/hosts.toml for a custom location. If a file already exists at whichever path is used, it is never overwritten or reset - auto-creation only ever happens when nothing is there yet.

WARNING

Watch for hidden file extensions. If you create this file yourself in Notepad or TextEdit, Windows and macOS both hide known extensions by default - a file you named mcp_ssh_hosts.toml can silently actually be saved as mcp_ssh_hosts.toml.txt, and the server will never find it. Turn on "show file extensions" in Explorer/Finder, or verify from a terminal: ls -la ~/.mcp_ssh_hosts.toml* (macOS/Linux) or dir %USERPROFILE%\.mcp_ssh_hosts.toml* (Windows) - either should show exactly one file, with no extra extension after .toml.

2. Add to your MCP client

Most MCP clients (Claude Desktop, Claude Code, OpenCode, Cursor, Cline, Windsurf, and others) use the same mcpServers JSON shape shown below - only the config file's name and location differ per client. Claude Desktop is used as the concrete example here; see the Claude Code note further down for one client that differs, or check your own client's docs for its config file's path.

WARNING

Python must be on PATH for "command": "cygnus-ssh-mcp" (below) to work at all. This is the most common reason an MCP client fails to start the server (or the tool list never appears) - and with Python often installed in several different places on one machine, it's easy to hit. Check first with:

python --version   # Windows/macOS/Linux
python3 --version  # macOS/Linux, if the above isn't found

If that fails with "not recognized"/"command not found", Python isn't on PATH - fix that first (reinstall Python with "Add to PATH" checked on Windows, or add it to your shell profile), or work around it entirely by finding the full path to the installed executable instead: where cygnus-ssh-mcp (Windows) or which cygnus-ssh-mcp (macOS/Linux), then use that directly as command:

{
  "mcpServers": {
    "ssh": {
      "command": "C:\\Users\\yourname\\AppData\\Local\\Programs\\Python\\Python312\\Scripts\\cygnus-ssh-mcp.exe",
      "args": ["--config", "C:\\Users\\yourname\\.mcp_ssh_hosts.toml"]
    }
  }
}

For Claude Desktop, edit claude_desktop_config.json:

{
  "mcpServers": {
    "ssh": {
      "command": "cygnus-ssh-mcp"
    }
  }
}

Or with a custom hosts file location:

{
  "mcpServers": {
    "ssh": {
      "command": "cygnus-ssh-mcp",
      "args": ["--config", "/path/to/my_hosts.toml"]
    }
  }
}

On Windows, use an absolute path with escaped backslashes (JSON needs \\, not a single \):

{
  "mcpServers": {
    "ssh": {
      "command": "cygnus-ssh-mcp",
      "args": ["--config", "C:\\Users\\yourname\\.mcp_ssh_hosts.toml"]
    }
  }
}

Using Claude Code instead of Claude Desktop? It reads its own project-level .mcp.json file (in your project root) rather than claude_desktop_config.json, and its schema supports a couple of extra fields Desktop doesn't have:

{
  "mcpServers": {
    "cygnus_ssh": {
      "command": "cygnus-ssh-mcp",
      "args": ["--config", "/path/to/.mcp_ssh_hosts.toml"],
      "working_dir": "/path/to/your/project",
      "auto_start": true
    }
  }
}
  • working_dir - the directory the server process runs from. Claude Desktop has no equivalent - it doesn't expose a configurable working directory at all, which is exactly why the Desktop examples above always use absolute paths.

  • auto_start - whether Claude Code starts this server automatically. Claude Desktop always auto-starts every configured server; there's no toggle for it.

Everything else - the --config argument, and the PATH/backslash caveats from the warning above - applies the same way to both clients.

3. Start managing servers

NOTE

PROD in the examples below is just an example alias (alias = "prod" in the hosts file from step 1) - it's not a magic name. If a host doesn't have an alias configured, refer to it by its full user@host key instead, e.g. "Connect to admin@203.0.113.10 and..." or "Connect to deploy@myserver.example.com and...".

Depending on which LLM/client you're using, it may not automatically realize it should reach for this MCP server - if it tries to answer without connecting, or claims it can't access remote servers, explicitly tell it to use the SSH MCP tools (e.g. "use the ssh MCP to connect to PROD and...").

Just say:

"Connect to PROD and tell me about the machine - hardware, status, everything"

"Connect to the GPU box and tell me how many graphics cards it has and how much total VRAM"

"Edit /etc/nginx/nginx.conf and change worker_connections to 2048"

"Find all .log files larger than 100MB in /var/log"

It handles multi-step jobs just as easily - install packages, edit configs, open firewall ports, and restart services, all in one request:

"Install PostgreSQL, set it to listen on all interfaces, add a pg_hba.conf rule for remote connections, open port 5432 in the firewall, and create a database called analytics"

"Set up a full LAMP stack, download the latest WordPress, configure wp-config.php with a new database, and get the site running at /var/www/wordpress"

"Get a Let's Encrypt certificate for example.com, configure nginx to serve it over HTTPS, and redirect all HTTP traffic to it"

"My Node app in /opt/api keeps crashing - check the logs, find out why, and set it up as a systemd service that restarts automatically"

"Audit PROD's security - check what ports are open, what's actually listening on them, whether the firewall rules match, and flag anything that looks like it shouldn't be exposed to the internet"


Platform Support

cygnus-ssh-mcp works from any client (Windows, Linux, macOS) to any target server:

From (Client)

To (Target)

Status

Windows

Linux

✅ Tested

Windows

Windows

✅ Tested

Linux

Linux

✅ Tested

Linux

Windows

✅ Tested

macOS

Any

✅ Supported

Windows targets require OpenSSH Server installed and running.


Connecting to Alternate Platforms

WARNING

This is a work in progress. It's been verified against several real devices below, but routers/NAS/embedded systems vary enormously - expect to hit devices that don't work yet, and please open an issue if you do.

Beyond Linux, macOS, and Windows, cygnus-ssh-mcp connects to any SSH target that responds to a basic shell command - routers, NAS boxes, BSD-kernel appliances, and other embedded Linux devices. These report os_type: "flex".

On connect, a one-time capability probe checks the specific shell/coreutils features this project's tools depend on (GNU find -printf, stat -c, du -sb, tar --strip-components, ps -o pgid=, xargs -0, and more) - many embedded/BusyBox-based devices only support a smaller flag set than full GNU coreutils. The results come back from ssh_conn_connect as capabilities and, for anything missing, capability_warnings. A tool that needs a missing capability fails with a clear error naming exactly what's unavailable and, where one exists, a concrete fallback - nothing silently degrades.

Verified against:

Device

Result

Alpine Linux (BusyBox)

Connects as linux; no bash/GNU find/ps -o pgid= - gated tools fail with clear fallback messages, everything else works

OpenWrt

Connects as linux; root-only, most GNU extensions absent

FreeBSD

Connects as flex; no bash by default, sudo/task tooling adapted to use sh

Synology DSM (NAS)

Connects as linux; full GNU coreutils and working sudo - behaves like a normal Linux server

Known limitation: some devices reject SSH shell access entirely for an account, even one with admin-level permissions - this shows up as every command (even a bare echo) failing immediately after a successful login. No capability probe can fix that; ssh_conn_connect explains the situation in that failure rather than a generic error.

Full details, capability list, and current gaps: docs/26-alternate-platforms.md.


Features

Host Configuration

Stop typing credentials. Connect by alias.

["admin@server.com"]
password = "secret"
port = 22
alias = "web"

Then just: "Connect to WEB"

Supports password, SSH key, and encrypted keys with passphrase.

Update a field on an existing host without losing the rest (ssh_host_update), or switch every host tool to an alternate config file for the session (ssh_host_use_config) - handy for keeping separate host lists per project or environment.


Line-Level File Editing

Edit config files with surgical precision—no download/upload needed.

# Replace a single line
ssh_file_replace_line(
    file_path="/etc/nginx/nginx.conf",
    match_line="worker_connections 1024;",
    new_line="worker_connections 4096;"
)

# Insert lines after a match
ssh_file_insert_lines_after_match(
    file_path="/etc/hosts",
    match_line="# Custom entries",
    lines_to_insert=["192.168.1.10 app.local", "192.168.1.11 db.local"]
)

Safety built-in: Operations fail if the match isn't unique—no accidental mass edits.


Background Task Management

Launch long-running processes and check back later.

# Start a backup (returns immediately)
ssh_task_launch(command="./backup.sh", stdout_log="/var/log/backup.log")

# Check status anytime
ssh_task_status(pid=12345)  # → 'running' or 'exited'

# Kill if needed
ssh_task_kill(pid=12345, force=True)

Comprehensive Sudo Support

Every tool supports use_sudo. Password is handled automatically.

ssh_file_write(file_path="/etc/app/config.yaml", content="...", use_sudo=True)
ssh_dir_mkdir(path="/opt/myapp", use_sudo=True)
ssh_archive_extract(archive_path="/backup.tar.gz", destination_path="/", use_sudo=True)

Three-Way Timeout System

Never get stuck on a hanging command - and never lose track of a long one either.

ssh_cmd_run(
    command="./long_script.sh",
    io_timeout=60.0,        # Check back in if silent for 60s (does NOT kill it)
    wait_timeout=20.0,      # Or check back in every 20s regardless of activity
    runtime_timeout=3600.0  # Hard safety cap - the only one that actually kills it
)

io_timeout and wait_timeout never kill the remote command - they hand off to background monitoring so you can check back later (ssh_cmd_check_status), read output collected so far (ssh_cmd_output), or decide to end it early (ssh_cmd_kill). Only runtime_timeout ever terminates anything.


Full Unicode Support

Write and read files with emojis, international text, and special characters—on all platforms.

✅ ❌ 🎉 • → ≥ ∞ │ ┌ ─ 你好 مرحبا Привет café naïve

How it works: ssh_file_read and ssh_file_write use SFTP for direct binary transfer, completely bypassing shell encoding issues. This means Unicode works perfectly even on Windows targets where PowerShell's console encoding would normally corrupt special characters.


Windows Server Support

Full support for Windows targets with OpenSSH Server:

  • PowerShell & CMD command execution

  • Windows path handling (backslashes, drive letters, UNC paths)

  • Administrator detection — shows if session has elevated privileges

  • SFTP-based file operations — Unicode-safe, no encoding issues

Note: use_sudo is ignored on Windows (no sudo equivalent). For elevated operations, connect with an Administrator account.


And Much More...

  • Command history with output retention and pattern filtering

  • Recursive directory operations: search, copy, delete with dry-run

  • Archive operations: create and extract tar.gz

  • System info: OS version, memory, disk, CPU, uptime

  • Pattern search: regex and plain text in files

  • Alternate host config files: switch host lists per project/environment without restarting


All 46 Tools

Connection & Host Management (12 tools)

Tool

Description

ssh_conn_connect

Connect using pre-configured host (by key or alias)

ssh_conn_is_connected

Check if SSH connection is active

ssh_conn_status

Get connection status (user, host, OS, cwd)

ssh_conn_host_info

Get detailed system information

ssh_conn_verify_sudo

Verify sudo access

ssh_conn_add_host

Add new host to configuration

ssh_host_list

List all configured hosts

ssh_host_update

Update fields on an existing host (rotate password, change port, etc.) in place

ssh_host_remove

Remove host from configuration

ssh_host_use_config

Switch to an alternate host config file for the session

ssh_host_disconnect

Disconnect current session

list_tools

List all available tools

Command Execution (6 tools)

Tool

Description

ssh_cmd_run

Execute command with I/O, wait, and runtime timeouts

ssh_cmd_kill

Terminate running command

ssh_cmd_check_status

Check command status

ssh_cmd_output

Retrieve output from command

ssh_cmd_history

Get command history with filtering

ssh_cmd_clear_history

Clear command history

Background Tasks (3 tools)

Tool

Description

ssh_task_launch

Launch command in background

ssh_task_status

Check if task is running

ssh_task_kill

Send signal to task

File Operations (12 tools)

Tool

Description

ssh_file_stat

Get file metadata

ssh_file_read

Read file contents via SFTP (Unicode-safe)

ssh_file_write

Create/overwrite/append file

ssh_file_copy

Copy file

ssh_file_move

Move or rename file

ssh_file_transfer

Upload or download files

ssh_file_find_lines_with_pattern

Search for pattern in file

ssh_file_get_context_around_line

Get context around match

ssh_file_replace_line

Replace single line

ssh_file_replace_line_multi

Replace with multiple lines

ssh_file_insert_lines_after_match

Insert lines after match

ssh_file_delete_line_by_content

Delete line by content

Directory Operations (11 tools)

Tool

Description

ssh_dir_mkdir

Create directory

ssh_dir_remove

Remove directory

ssh_dir_list_files_basic

Basic directory listing

ssh_dir_list_advanced

Recursive listing with metadata

ssh_dir_search_glob

Search files by pattern

ssh_dir_search_files_content

Search text in files

ssh_dir_calc_size

Calculate directory size

ssh_dir_delete

Delete with dry-run support

ssh_dir_batch_delete_files

Batch delete by pattern

ssh_dir_copy

Copy directory recursively

ssh_dir_transfer

Upload or download whole directories (archive-based)

Archive Operations (2 tools)

Tool

Description

ssh_archive_create

Create tar.gz archive

ssh_archive_extract

Extract archive


Documentation

Full docs site: cygnussystems.github.io/cygnus-ssh-mcp — searchable, with navigation. Or browse the raw files directly in docs/:


Use Cases

  • DevOps Automation — Deploy, configure, and manage servers via AI

  • Log Analysis — Search and analyze logs across multiple servers

  • Configuration Management — Edit configs with precision line operations

  • Backup & Recovery — Create archives, transfer files, restore backups

  • System Monitoring — Check status, verify services, monitor processes

  • Security Auditing — Search for sensitive patterns, verify configurations


License

GPL-3.0 — Free and open source.


Built by Cygnus Systems

Star this repo if you find it useful!

Available Tools

44 tools
list_toolsA

Retrieves a list of all available tools on this MCP server, along with their descriptions.

Returns: A list of dictionaries, where each dictionary contains the 'name' and 'description' of an available tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.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 mentions the return format (list of dictionaries with name and description) but omits details like ordering, filtering, authentication needs, or potential side effects. It is adequate for a simple read operation but not rich.

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: the first explains the purpose, the second the return value. It is concise, front-loaded, and contains no unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and an output schema that is described in the description, the description is fairly complete. It could mention whether the list is user-specific or static, but it is adequate for the tool's simplicity.

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, so the baseline is 4. The description adds no parameter information, but that is acceptable because no parameters exist and the schema coverage is complete.

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 that the tool retrieves a list of all available tools with their descriptions, using a specific verb and resource. It naturally distinguishes from sibling SSH tools.

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 provides clear context for usage (listing all tools), but does not explicitly state when not to use it or mention alternatives. However, given no sibling tools serve this purpose, it is still effective.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_archive_createB

Create a compressed archive from a directory.

Returns: Dictionary with archive information

ParametersJSON Schema
NameRequiredDescriptionDefault
source_pathYesDirectory to archive
archive_pathYesPath for the created archive
formatNoArchive formattar.gz
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It only states basic action; does not explain behavior on existing paths, permissions needed, or effects of flags like 'use_sudo'.

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?

Very short but lacks necessary detail. One sentence plus return note is concise but omits behavioral and usage context.

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 4 parameters and output schema present, description covers basic action but lacks context on error handling, side effects, and usage scenarios. Adequate but not complete.

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 100%, so schema already explains all parameters. Description adds no extra meaning beyond what's in the schema, so baseline 3 is appropriate.

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 'Create a compressed archive from a directory' with specific verb and resource. It distinguishes from sibling 'ssh_archive_extract' 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 prerequisites, no scenarios where it should or should not be used. Minimal context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_archive_extractA

Extract a tar or tar.gz archive to a directory.

Returns: Dictionary with extraction information

ParametersJSON Schema
NameRequiredDescriptionDefault
archive_pathYesPath to the archive file
destination_pathYesDirectory to extract to
overwriteNoOverwrite existing files
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. It fails to disclose behaviors like overwrite handling, sudo implications, or whether parent directories are created. Only mentions return type without detail.

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?

Two concise sentences with no fluff. Front-loaded with the main action.

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 the tool is part of SSH suite, it assumes an existing connection. Missing hints on prerequisites, error handling, or directory creation behavior. Output schema exists but is not shown here.

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?

Schema coverage is 100% with descriptions. The description adds value by specifying archive types (tar/tar.gz), which is not in the 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 'Extract a tar or tar.gz archive to a directory', which is specific and distinguishes it from siblings like ssh_archive_create.

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. Usage is implied by the description, but no when-not or alternative tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_cmd_check_statusA

Wait for the specified duration and then check the status of a command.

This tool helps with monitoring long-running commands started with ssh_cmd_run by implementing a wait operation that LLMs cannot perform on their own.

Returns: Dictionary containing command status information after waiting

ParametersJSON Schema
NameRequiredDescriptionDefault
handle_idYesCommand handle ID to check status for
wait_secondsNoSeconds to wait before checking

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behaviors. It mentions waiting and checking status, but lacks details on possible errors (e.g., invalid handle_id), the content of the returned dictionary, and whether the wait is blocking. The presence of an output schema mitigates some missing info, but the description should offer more behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core action. The second sentence adds valuable context about LLM limitations. The returns line is somewhat redundant if output schema exists, but overall it is efficient.

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 the tool's simplicity and presence of an output schema, the description covers the primary use case. However, it lacks guidance on error scenarios and does not clarify how this tool relates to other status-checking siblings like ssh_cmd_output or polling patterns.

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 100%, so the description adds little beyond schema descriptions. It mentions 'specified duration' which aligns with wait_seconds. No additional semantics provided, so baseline 3 is appropriate.

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 waits and checks the status of a command, explicitly mentioning it is for monitoring long-running commands started with ssh_cmd_run. It distinguishes itself from siblings by focusing on status checking after a wait.

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 indicates use after ssh_cmd_run for monitoring, and notes that the wait operation addresses a limitation of LLMs. However, it does not explicitly mention when not to use or alternative tools for similar purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_cmd_clear_historyA

Clear the command history for the current SSH connection.

Returns: Dictionary with operation status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.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 but only states it clears history and returns a status. Missing details like irreversibility or 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no unnecessary words. Clear and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an existing output schema, the description covers the basic functionality and return type. Could mention prerequisite of an active connection.

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?

No parameters exist, achieving 100% schema coverage. Description adds no parameter info, but baseline for 0 params 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 the verb 'Clear' and the resource 'command history for the current SSH connection', distinguishing it from 'ssh_cmd_history' which retrieves history.

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_cmd_history'. Usage is only implied by the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_cmd_historyA

Retrieve command execution history with optional output snippets.

Returns: List of dictionaries containing command history, ordered from oldest to newest by default. Each entry contains: - id: Command handle ID - command: Executed command - exit_code: Exit status - start_time: Execution start timestamp - end_time: Execution end timestamp - output: Command output snippet (if include_output=True)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of history entries to return
include_outputNoInclude command output snippets
output_linesNoNumber of output lines to include (0 for none)
reverseNoReturn in reverse order (newest first)
patternNoFilter commands containing this pattern

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses return format (list of dicts with fields), ordering (oldest to newest by default), and the effect of include_output/output_lines. However, it omits potential side effects, rate limits, or 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise (2 sentences plus a bullet list) and front-loaded. The bullet list of return fields is clear, though slightly verbose.

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?

With 5 parameters and an output schema present, the description covers return format but does not mention necessary preconditions (e.g., active SSH connection) or limitations. Sibling tools indicate connection requirements are handled elsewhere.

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 100% (all 5 parameters have descriptions). The description adds context for the return format and interaction between include_output and output_lines, but does not add individual parameter meaning beyond the 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 tool retrieves command execution history with optional output snippets, distinguishing it from siblings like ssh_cmd_run or ssh_cmd_output that execute or show output for specific commands.

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 vs alternatives such as ssh_cmd_check_status or ssh_cmd_output. Usage is implied by the name and description, but no when-not or prerequisite (e.g., connection required) is mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_cmd_killA

Terminate a currently running command by its handle ID.

This tool is specifically for killing commands started with ssh_cmd_run, not background tasks launched with ssh_task_launch.

If force=True and the process doesn't exit after wait_seconds, it will be forcibly killed with SIGKILL (signal 9).

Returns: Dictionary containing kill operation result

ParametersJSON Schema
NameRequiredDescriptionDefault
handle_idYesCommand handle ID to kill
signalNoSignal to send (15=TERM, 9=KILL)
forceNoForce kill with SIGKILL if process doesn't exit
wait_secondsNoSeconds to wait before force kill

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 fully explains the kill process: default signal 15, force behavior with wait_seconds and SIGKILL, and return type. It lacks details on error handling for invalid handles but is otherwise transparent.

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 (4 sentences), front-loads the purpose, and is well-structured. No redundant text; each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the return description is adequate. It covers purpose, differentiation, and behavioral details. Minor gaps in error scenarios but sufficient for a kill 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 coverage is 100%, so baseline is 3. The description adds context on force/wait interaction but largely repeats schema information. It doesn't significantly augment parameter meaning beyond the 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 it terminates a running command by handle ID, explicitly distinguishing from background tasks (ssh_task_launch). This precise verb-resource pairing differentiates it from sibling tools like ssh_task_kill.

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?

It specifies when to use (for commands from ssh_cmd_run, not tasks) and explains force/wait behavior. While it doesn't explicitly state 'use this instead of ssh_task_kill', the differentiation is clear from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_cmd_outputC

Retrieve output from a specific command execution.

Returns: List of output lines from the command

ParametersJSON Schema
NameRequiredDescriptionDefault
handle_idYesCommand handle ID to retrieve output for
linesNoNumber of lines to retrieve (None for all)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 for behavioral disclosure. It only states that it returns a list of output lines, but does not cover what happens with invalid handle IDs, whether it blocks, or if output may be truncated. This is insufficient for a tool that depends on a prior command execution.

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 with two sentences and a returns line. It is front-loaded with the main action. However, it could be structured to include usage hints or prerequisites, so it is efficient but not perfectly structured for an AI agent.

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 the complexity is low (2 parameters, simple) and there is an output schema (though not shown), the description is adequate but minimal. It does not mention the lifecycle of command handles or how output retrieval relates to command execution state. A score of 3 reflects that it meets minimum viability but has 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 coverage is 100% with descriptions for both parameters. The description adds no extra meaning beyond what the schema already provides. Per guidelines, baseline is 3 when schema coverage is high, and the description does not improve upon it.

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 'Retrieve output from a specific command execution', which is a specific verb and resource. It implicitly distinguishes from sibling tools like ssh_cmd_run (which runs a command) by focusing on output retrieval. However, it does not explicitly differentiate from other similar retrieval tools like ssh_cmd_check_status or ssh_cmd_history, so a 4 is appropriate.

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 alternatives. It does not specify prerequisites (e.g., command must have been run), nor does it mention constraints like handle expiration or limits. This leaves the agent without context for appropriate invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_cmd_runA

Execute a command on the remote host and return the results. Handles both immediate and long-running operations. Manages timeouts (I/O timeout and runtime timeout). Work with runtime_timeout primarily which should be set to something reasonable. If timeout occurs, you can use 'ssh_cmd_check' tool to check on the running command. Note that 'ssh_cmd_check' can be called immediately with a 'wait_seconds' argument where it waits for a given number of seconds and then returns with the command status. This way you can poll the command status until it completes. The command can also be killed using 'ssh_cmd_kill' tool. You can access the command history using the 'ssh_cmd_history' tool to see what were previous commands and what output they produced.

Returns: Dictionary containing command output, status, and metadata. Status field indicates success or the type of failure (timeout, runtime_timeout, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesCommand to execute on remote host
io_timeoutNoI/O timeout in seconds
runtime_timeoutNoTotal runtime timeout in seconds
use_sudoNoRun command with sudo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses timeout handling (I/O and runtime) and that status indicates success or failure type. Lacks details on execution environment, security, or implications of sudo usage. Adequate but not comprehensive for a command execution tool.

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?

Well-structured with main purpose first, then timeout details, then pointers to sibling tools. While a bit verbose, every sentence adds value. Could be slightly more concise, but effectively communicates key information.

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 complexity (4 params, output schema, sibling tools), description covers command execution and timeout handling. Does not mention prerequisite of being connected to a host (sibling ssh_conn_connect exists). Output schema is available, so return description is sufficient. Missing connection context is a gap.

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 100%, baseline 3. Description adds minimal extra meaning: 'work with runtime_timeout primarily' is a usage hint. Otherwise, parameters are fully described in the schema, so description does not significantly enhance understanding beyond defaults and types.

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?

Clearly states 'Execute a command on the remote host and return the results.' Identifies the verb (execute) and resource (command on remote host). Differentiates from siblings by mentioning handling of immediate and long-running operations, and references related tools for checking, killing, and history.

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 advises to prioritize runtime_timeout and describes the workflow after timeout (use ssh_cmd_check). Mentions polling with wait_seconds and alternatives like ssh_cmd_kill and ssh_cmd_history. Could be more explicit about when not to use this tool (e.g., for status checks only), but provides clear context for typical usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_conn_add_hostA

Add or update a host configuration in the host configuration TOML file. This tool will fail if the host already exists in the host config file.

You can call the 'ssh_conn_connect' tool without having to add a new host! The host may already be listed in the host config TOML file!

Authentication requires either a password OR a keyfile (or both):

  • Password authentication: Provide password

  • Key-based authentication: Provide keyfile (and optionally key_passphrase if the key is encrypted)

If using key-only authentication and sudo operations are needed, you must explicitly provide sudo_password unless the server has passwordless sudo configured.

Warn the user that credentials will be visible to the LLM and that it would be better for the user to add the host directly in the host configuration file.

The host config file is a TOML file likely in the user's home directory. The configuration will be stored under a ["user@host"] key.

Optional fields:

  • alias: A short name for connecting (e.g., 'prod' instead of 'deploy@production.example.com')

  • description: A text description of what the host is for

Returns: Dictionary with operation status

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUsername for authentication
hostYesHostname or IP address
passwordNoPassword for authentication
portNoSSH port
sudo_passwordNoPassword for sudo operations (defaults to regular password if not provided)
aliasNoShort name for easy connection (e.g., 'prod', 'staging')
descriptionNoDescription of what this host is for
keyfileNoPath to SSH private key file (e.g., ~/.ssh/id_rsa)
key_passphraseNoPassphrase for encrypted SSH key

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses failure on duplicate host, authentication requirements, and credential warnings. However, it does not mention rate limits, side effects on existing configs, or details about the return dictionary beyond 'operation status'.

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 well-structured with clear sections and logical flow. It is slightly verbose but each sentence provides useful information. The contradiction between 'Add or update' and 'fail if exists' could be clarified, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 parameters, 2 required, and an output schema, the description covers authentication, failure condition, optional fields, and security warnings. It mentions the config file location and key structure. It could be improved by clarifying whether the tool truly supports update (contradiction) and providing more details about the return value.

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?

Schema coverage is 100%, baseline 3. The description adds value by explaining authentication options (password, keyfile, key_passphrase) and giving examples for alias and description. It clarifies the use of sudo_password and port defaults, which goes beyond the 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 'Add or update a host configuration' and specifies the resource (host configuration TOML file). It distinguishes from siblings by noting that 'ssh_conn_connect' can be used without adding a host, and explicitly mentions the tool will fail if the host exists, clarifying its scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use alternatives (ssh_conn_connect), details authentication methods (password vs keyfile), advises on sudo password, and warns about credential visibility. It also explains the optional fields and the underlying storage mechanism.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_conn_connectA

Establish an SSH connection using a pre-configured host. The host can be specified by its 'user@hostname' key or by its alias.

Returns: Dictionary with connection status and detailed system information

ParametersJSON Schema
NameRequiredDescriptionDefault
host_nameYesThe 'user@hostname' identifier or alias of a pre-configured host

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.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 convey behavior. It only states it establishes a connection and returns a dictionary, but does not disclose side effects, error handling, or behavior if already connected.

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: two sentences and a return statement. No wasted words, front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool with output schema present, the description covers purpose and return type adequately. However, missing behavioral details and prerequisite info reduce completeness slightly.

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 description clarifies the host_name parameter can be specified as 'user@hostname' or alias, adding value beyond the schema's generic 'identifier or alias'. This is helpful for an agent.

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 'Establish an SSH connection using a pre-configured host.' It specifies the action and resource, and distinguishes from siblings like ssh_conn_is_connected and ssh_conn_host_info.

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 implies the host must be pre-configured, but does not explicitly state when to use this tool vs alternatives (e.g., ssh_conn_is_connected for checking status) or provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_conn_host_infoA

Get detailed SSH connection status and system information.

Returns: Dictionary containing full connection status and detailed system info including hardware, memory, disk usage, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/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 provides minimal behavioral insight beyond stating it 'gets' info. It does not disclose whether a connection is required, potential side effects, or performance characteristics.

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: a concise purpose statement and a clear list of return contents. No extraneous information.

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?

The description explains the return value adequately but omits necessary context such as dependency on an active SSH connection or the scope of 'system information'. Given the presence of an output schema, the description is somewhat incomplete.

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?

There are zero parameters, and schema coverage is 100%. The description adds no parameter semantics but also requires none. The baseline for 0-parameter tools 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 the tool retrieves 'detailed SSH connection status and system information' and specifies the return includes hardware, memory, disk usage, etc., distinguishing it from sibling tools like ssh_conn_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 (e.g., ssh_conn_status, ssh_host_info). The description lacks any context about prerequisites or conditions for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_conn_is_connectedA

Check if there is an active SSH connection.

Returns: bool: True if an active connection exists, False otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the return type (bool) and the simple nature of the check. No annotations exist, but the tool is clearly read-only and has no side effects. It could define 'active connection' more precisely.

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 with two sentences that cover purpose and return value. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (zero parameters, output schema exists), the description is fully adequate. It tells the agent exactly what to expect.

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?

No parameters exist, so the baseline is 4. The description correctly adds no parameter information since none are needed.

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 tool name and description clearly state it checks for an active SSH connection, using a specific verb and resource. It distinguishes from siblings like ssh_conn_status, which likely provides more detailed status.

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. The implication is for a quick boolean check, but no when-not or alternative tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_conn_statusA

Get essential SSH connection status information.

Returns: Dictionary containing basic connection status (user, working directory, OS type)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states it returns a dictionary with specific fields, but does not disclose if any side effects or authentication requirements exist. Since it's a getter, likely read-only, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose and return structure. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and an output schema, the description is complete. It clearly states what the tool returns and does not omit necessary context.

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?

No parameters exist, so description need not add meaning. Baseline score of 4 is appropriate.

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 'Get' and the resource 'essential SSH connection status information'. It specifies the return fields (user, working directory, OS type), differentiating it from siblings like ssh_conn_is_connected or ssh_conn_host_info.

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 vs alternatives. It implies use for basic status after connection, but does not mention exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_conn_verify_sudoA

Verify if sudo access is available on the remote system.

On Linux/macOS: Checks if sudo is available and whether it requires a password. The use_sudo parameter will run commands with sudo, prompting for password if needed.

On Windows: Checks if the session is running as Administrator. Windows cannot elevate privileges on-demand like sudo. If you need elevated access on Windows, you must connect with an Administrator account from the start.

Returns: Dictionary with sudo access information: - available: True if any sudo access is available - passwordless: True if passwordless sudo is available (or elevated on Windows) - requires_password: True if sudo requires a password

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Describes behavior on both platforms, mentions password requirement, and explains return value dictionary comprehensively.

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?

Concise overall, but includes detailed return value description which adds length. Well-structured with platform-specific sections. Could be slightly tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no input schema and presence of output schema, description covers key aspects. Does not mention need for prior connection, but tool name implies it. Reasonably complete.

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?

No input parameters (schema has no properties, coverage 100%). Description adds no parameter info needed. Baseline 4 for zero-parameter tools.

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?

Clearly states the function: verifying sudo access on remote systems. Distinguishes between Linux/macOS and Windows. Specific verb and resource, distinct from sibling tools like ssh_cmd_run or ssh_conn_connect.

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?

Provides context on when to use (to check sudo access) and notes Windows limitation (cannot elevate on-demand). However, does not explicitly contrast with sibling tools or state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_dir_batch_delete_filesB

Delete all files matching a pattern under a directory.

Returns: Dictionary with deletion status and details

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesBase directory to search in
patternYesFile pattern to match for deletion (e.g. *.tmp)
dry_runNoPreview deletion without actually deleting
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It only states the action and return type, but omits crucial behaviors: whether deletion is recursive, permission requirements (sudo usage), and implications of the destructive operation. The use_sudo parameter is present 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise at two sentences, front-loaded with the action. However, it could include more contextual details without becoming verbose. Still well-structured and to the point.

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 having an output schema (mentioned in context signals), the description lacks essential context: whether deletion is recursive, error handling, and the importance of dry_run for safety. For a destructive batch operation, this is incomplete.

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 all 4 parameters with descriptions (100% coverage). The description adds no extra meaning beyond the schema's parameter descriptions. Baseline 3 is appropriate as no additional value is provided.

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: delete all files matching a pattern under a directory. It distinguishes from siblings like ssh_dir_delete (directory deletion) and ssh_file_* (single file operations), as this is the only batch pattern-deletion 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 explicit guidance on when to use this tool vs alternatives like ssh_dir_list_files_basic for preview or ssh_file_delete for single files. The dry_run parameter exists but is not mentioned as a preview step. Lacks when-not-to-use or alternative references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_dir_calc_sizeB

Calculate the total size of a directory recursively.

Returns: Dictionary with size information

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path to calculate size for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/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 full burden. It does not disclose behavioral traits like whether it requires sudo, or the exact format of the returned dictionary. The return type is vague.

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 short but lacks detail on return values or usage. It is front-loaded with purpose but could be more informative without being verbose.

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?

The tool is simple with one parameter, but the description doesn't fully cover what the output dictionary contains. Given the presence of an output schema (not shown), the description could be more complete.

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?

The only parameter 'path' is described in the schema. The description adds no additional meaning beyond the schema's description. Since schema coverage is 100%, baseline 3 is appropriate.

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 calculates the total size of a directory recursively, which is a specific verb-resource pair. This distinguishes it from sibling tools like ssh_dir_list_advanced or ssh_file_stat.

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 alternatives, such as when to use ssh_dir_list_advanced for size details per file. No mention of prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_dir_copyC

Copy a directory recursively.

Returns: Dictionary with copy operation details

ParametersJSON Schema
NameRequiredDescriptionDefault
source_pathYesSource directory path
destination_pathYesDestination directory path
overwriteNoOverwrite existing files
preserve_symlinksNoPreserve symbolic links
preserve_permissionsNoPreserve file permissions
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only notes the action and return type (dictionary). With no annotations, it fails to disclose potential side effects (e.g., overwriting, permission requirements, or consequences of using sudo).

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 short (2 lines) and front-loaded with the core action. It is concise without being too brief, though some additional context would improve usability.

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?

The tool has 6 parameters (2 required) and a simple purpose. The description is minimal but covers the basic action and return type. For a tool with many siblings, more detail on when to use it would enhance completeness.

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?

All parameters are fully described in the input schema (100% coverage), so the description adds no additional context. A baseline score of 3 is appropriate given high 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 'Copy a directory recursively,' which is a specific verb and resource. It distinguishes from sibling tools like ssh_file_copy (file copy) and ssh_dir_transfer (possibly similar) by specifying recursion, but could be more explicit about what makes it unique.

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 (e.g., ssh_dir_transfer or ssh_file_copy). There are no conditions, prerequisites, or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_dir_deleteB

Delete a directory and all its contents recursively.

Returns: Dictionary with deletion status and details

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path to delete
dry_runNoPreview deletion without actually deleting
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates the operation is recursive and returns a status dictionary, but lacks details on side effects, reversibility, or permission requirements. With no annotations, the description bears full responsibility and only partially fulfills it.

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 short and front-loaded with the main purpose. It is efficient, though slightly more structure (e.g., bullet points) could improve readability.

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 the existence of many sibling tools and the destructive nature of the operation, the description lacks completeness. It does not discuss error conditions, output schema details, or safety considerations, leaving gaps for an AI agent.

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?

The input schema covers all three parameters with descriptions (100% coverage), so the description adds no additional meaning. It does not mention path, dry_run, or use_sudo beyond what schema provides.

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 deletes a directory and its contents recursively. The verb 'delete' and resource 'directory' are explicit, and it distinguishes from sibling tools like ssh_dir_remove (likely for empty directories) and ssh_dir_batch_delete_files (for files).

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 is provided. There is no mention of prerequisites, warnings, or cases where it should not be used, which is a significant omission given the destructive nature of the operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_dir_list_advancedB

List contents of a directory recursively with detailed information.

Returns: List of dictionaries with file/directory information

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path to list
max_depthNoMaximum recursion depth (None for unlimited)
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/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 for behavioral disclosure. It mentions the return type (list of dictionaries with file/directory information) but lacks details on permissions required, error handling, performance implications of recursion, or effects of the `use_sudo` parameter. This is minimal transparency for a tool with potentially expensive operations.

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, consisting of two sentences: one for purpose and one for return type. It is front-loaded with the most important information. However, the return type description could be more structured (e.g., bullet points) for improved clarity.

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 that an output schema is indicated as present, the description does not need to detail return values. However, it still lacks information about error handling, potential performance issues with recursive listing, and behavior of the `use_sudo` parameter. With three parameters and no annotations, the description is adequate but has notable 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?

The input schema covers all three parameters (path, max_depth, use_sudo) with descriptions, achieving 100% schema description coverage. The description does not add additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List contents of a directory recursively with detailed information,' specifying the verb (list) and resource (directory contents recursively). It effectively distinguishes from the sibling tool `ssh_dir_list_files_basic`, which likely provides a non-recursive or basic listing.

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 implies usage for recursive listing, but does not explicitly state when to use this tool over alternatives like `ssh_dir_list_files_basic` or provide conditions for use. There are no when-not or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_dir_list_files_basicC

List contents of a directory on the remote system.

Returns: List of filenames in the directory

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path to list

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 mentions the return type (list of filenames) but omits critical details like whether it follows symlinks, handles errors, or requires permissions.

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, with two clear sentences. However, the second sentence is somewhat redundant given the first, indicating minor room for improvement.

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 an output schema, the description lacks prerequisites (e.g., active SSH connection) and does not clarify filename format (relative/absolute, with/without path). Insufficient for complete guidance.

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 100% for the single parameter 'path'. The description adds no extra meaning beyond the schema, which already states 'Directory path to list'. Baseline 3 is appropriate.

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 contents') and the resource ('directory on remote system'), but does not differentiate from its sibling 'ssh_dir_list_advanced', which may offer additional features.

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 basic tool versus the advanced sibling or other directory-related tools. No context or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_dir_mkdirB

Create a directory on the remote system.

Returns: Dictionary with operation status

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path to create
use_sudoNoUse sudo for the operation
modeNoDirectory permissions (octal)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/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. It states the action (create directory) and return type but does not disclose behavior if directory exists, effects of use_sudo or mode, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two efficient sentences. No unnecessary words.

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?

Output schema exists, so return values are covered. However, the description lacks context on important aspects like creating parent directories, error conditions, and the need for a prior connection. For a tool with 3 parameters, it is minimally sufficient but not complete.

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 100%, so the parameters are already documented. The description adds no extra meaning beyond 'Create a directory', which implicitly uses path but does not elaborate on mode or use_sudo.

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 'directory', and the context 'remote system' is specific. It distinguishes this tool from sibling tools like ssh_dir_delete or ssh_dir_remove.

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 alternative directory tools (e.g., ssh_dir_copy, ssh_dir_remove), nor does it mention prerequisites like establishing a connection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_dir_removeB

Remove a directory on the remote system.

Returns: Dictionary with operation status

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path to remove
use_sudoNoUse sudo for the operation
recursiveNoRemove directory and contents recursively

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Fails to disclose behavior on non-existent directories, permission requirements, or side effects beyond operation status.

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 short sentences, no wasted words. Could be slightly more structured (e.g., bulleted parameter notes) but acceptable.

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 annotations; output schema exists but description doesn't explain return dictionary keys. Does not mention that recursive is required for non-empty directories.

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 100%, so baseline is 3. Description adds no extra parameter meaning beyond what's in 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?

Description clearly states verb 'remove' and resource 'directory on the remote system'. Distinguishes from siblings like ssh_dir_delete and ssh_dir_batch_delete_files.

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 (e.g., ssh_dir_delete, ssh_dir_batch_delete_files). No context on prerequisites 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.

ssh_dir_search_files_contentB

Search for text patterns in files of given directory.

Returns: List of dictionaries with search matches

ParametersJSON Schema
NameRequiredDescriptionDefault
dir_pathYesDirectory to search in
patternYesText or pattern to search for
regexNoTreat pattern as regular expression
case_sensitiveNoPerform case-sensitive search
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Only states 'Search for text patterns' and 'Returns list of dictionaries', lacking details on recursion, binary file handling, sudo behavior, or performance implications. Insufficient 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?

Two sentences, no fluff. Could be more structured but remains efficient and front-loaded with 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?

With 5 parameters, 2 required, and an output schema, the description still lacks behavioral context such as recursion depth, file size limits, or permission requirements. Incomplete for a search tool with no annotations.

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 all 5 parameters with descriptions (100% coverage). Tool description adds no extra parameter meaning beyond what schema provides, meeting baseline expectations.

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?

Clearly states it searches for text patterns in files of a given directory. Distinguishes from sibling ssh_dir_search_glob which searches files by name pattern.

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?

Implies usage for searching text content, but provides no explicit guidance on when to use vs alternatives like ssh_dir_search_glob or other tools. No when-not or alternative suggestions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_dir_search_globB

Recursively search for files matching a pattern.

Returns: List of dictionaries with file information

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesBase directory to search from
patternYesFilename glob pattern (e.g. *.log)
max_depthNoMaximum recursion depth (None for unlimited)
include_dirsNoInclude matching directories in results
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description is the sole source for behavioral traits. It mentions recursion but omits details like permissions, error handling, or performance implications. The return type is mentioned but not enriched.

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 with no wasted words, front-loading the core purpose. It is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, return details are covered. However, the description lacks context for parameters like path, include_dirs, and use_sudo. It is adequate but could better integrate parameter usage guidance.

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 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it merely restates 'pattern' and 'recursively' which are already in 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 'Recursively search for files matching a pattern', which is a specific verb+resource combination. It distinguishes from sibling tools like ssh_dir_search_files_content and ssh_file_find_lines_with_pattern which search by content.

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 alternatives like ssh_dir_list_files_basic or ssh_dir_search_files_content. No exclusions or context for choice are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_dir_transferA

Transfer directories between local and remote systems.

Uses archive-based transfer for efficiency:

  • Upload: Archives locally, transfers, extracts on remote

  • Download: Archives on remote, transfers, extracts locally

Archive format is automatically selected based on remote OS:

  • Linux/macOS: tar.gz

  • Windows: zip

ParametersJSON Schema
NameRequiredDescriptionDefault
directionYesTransfer direction
local_pathYesLocal directory path
remote_pathYesRemote directory path
use_sudoNoUse sudo for remote operations

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. It reveals archive method and format selection, but omits critical behaviors like whether it overwrites existing directories, preserves permissions, or requires specific authentication. Partial disclosure.

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 compact with 5 lines, front-loading the main action. Every sentence adds value: purpose, upload/download flow, and archive format selection. 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 the tool's complexity (4 params, no annotations, presence of output schema), the description covers the process but lacks details on error handling, overwrite behavior, and permissions. Additional behavioral context would improve completeness.

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 100% with descriptions. The tool description adds minimal extra meaning beyond schema, e.g., it doesn't specify that local_path must exist or that remote_path will be overwritten. Baseline 3 is appropriate.

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 it transfers directories between local and remote systems using archive-based transfer. It distinguishes from sibling tools like ssh_file_transfer (for files) and ssh_archive_create/extract (low-level archive ops) by focusing on directory transfer and providing process details.

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 implies usage for directory transfers, but lacks explicit guidance on when not to use it (e.g., for single files) or alternatives. It does explain the archive method and OS-dependent format selection, aiding in understanding context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_copyC

Copy a file with optional timestamp appended to the destination.

Returns: Dictionary with operation status

ParametersJSON Schema
NameRequiredDescriptionDefault
source_pathYesSource file path
destination_pathYesDestination file path
append_timestampNoWhether to append a timestamp to the destination
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 disclose behavioral traits. It mentions timestamp option but does not explain overwrite behavior, permissions needed, or side effects of use_sudo. This is insufficient for a file copy operation.

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, first states purpose, second mentions return. Concise but could be more structured with bullet points or separate sections.

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?

Output schema exists but not shown; description mentions 'Dictionary with operation status'. Lacks error conditions, prerequisites, and differentiation from siblings. Moderate completeness.

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 100%. The description adds 'with optional timestamp' which is already covered by the append_timestamp parameter. No additional 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?

Description clearly states 'Copy a file with optional timestamp appended to the destination.' This specifies the action (copy) and resource (file), but does not explicitly differentiate from siblings like ssh_file_move or ssh_file_transfer.

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. With many file operation siblings (move, transfer, etc.), the agent needs context on when to choose this copy tool over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_delete_line_by_contentB

Delete a line matching a unique content string.

Returns: Dictionary with operation status

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the file to modify
match_lineYesExact line content to match and delete
use_sudoNoUse sudo for the operation
forceNoForce operation even if file can't be read (sudo only)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/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 burden of behavioral disclosure, but it only mentions a return value without detailing error handling, line uniqueness expectations, or the destructive nature of the 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 short (two sentences) but lacks structure: it states purpose and return type but could be more informative without increasing length significantly. The return statement is trivial.

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 annotations and an output schema presumed to exist but not shown, the description omits critical context: SSH connection prerequisite, file ownership, error behaviors, and confirmation of deletion. A remote file operation of this nature requires more detail.

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 100%, so the baseline is 3. The description does not add any parameter information beyond what the schema already provides; it only reiterates the concept of a 'unique content string'.

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 ('delete a line') and the condition ('matching a unique content string'), effectively distinguishing it from sibling tools like ssh_file_replace_line.

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 mentioned (e.g., SSH connection required), and no exclusions or best practices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_find_lines_with_patternA

Search for a pattern in a remote file and return matching lines.

Returns: Dictionary with total matches and list of matches (line number and content)

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the file to search
patternYesText or regex pattern to search for
regexNoWhether to treat pattern as a regular expression
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It describes the return structure (dictionary with total matches and list) but does not disclose if the file is modified (assumed read-only), authentication requirements, or performance implications. Minimal but adequate for a search operation.

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?

Two sentences, front-loaded with purpose, followed by return description. No extraneous information. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, output schema exists), the description is mostly complete: it states the action, the resource, and the return value. The output schema likely provides further structural details, so description handles the rest. However, it omits prerequisite conditions (e.g., file existence, 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 description coverage is 100%, so baseline is 3. The description does not add additional meaning beyond the schema's parameter descriptions (path, pattern, regex flag, sudo). No elaboration on how pattern matching works or how output is structured beyond what is stated.

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 ('Search for a pattern'), the resource ('remote file'), and the specific outcome ('return matching lines'). This distinguishes it from siblings like ssh_file_read (reads entire file) and ssh_dir_search_files_content (searches across 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?

No explicit guidance on when to use this tool versus alternatives (e.g., ssh_dir_search_files_content for directory-wide search, ssh_file_read for full file content). The description implies single-file pattern matching but does not provide usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_get_context_around_lineB

Get lines before and after a line that matches exactly.

Returns: Dictionary with match line number and context block

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the file
match_lineYesExact line content to match
contextNoNumber of lines before and after to include
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description should carry the burden of disclosing side effects. It only states the return type but omits that the tool reads a remote file without modification, or any permission or error details.

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: two sentences capture the action and return type with no waste. Structure is clear and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With complete schema descriptions and an output schema, the description is adequate. It adds return value specifics, though it lacks error conditions and permission details.

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 descriptions cover all 4 parameters (100% coverage). The tool description does not add extra meaning beyond the schema, so baseline score is appropriate.

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 gets lines before and after an exact line match. It distinguishes from pattern-matching tools like ssh_file_find_lines_with_pattern by specifying 'exactly', but does not explicitly name the sibling.

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 mention when not to use it or provide context about prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_insert_lines_after_matchA

Insert lines after a unique line match (ignoring leading/trailing whitespace).

PARAMETERS:

  • file_path: Path to the file to modify

  • match_line: Exact line content to match (whitespace-trimmed)

  • lines_to_insert: List of lines to insert after the match

    • To insert multiple lines: use ["first line", "second line", ...]

    • To insert a single line: use ["line to insert"]

    • To insert an empty line: use [""]

  • use_sudo: Use sudo for the operation (default: false)

  • force: Force operation even if file can't be read (sudo only) (default: false)

RETURNS: A dictionary with operation status including:

  • success: Boolean indicating if operation succeeded

  • file_path: Path to the modified file

EXAMPLES: Example 1: Insert configuration lines after a marker

{
  "file_path": "/etc/nginx/nginx.conf",
  "match_line": "http {",
  "lines_to_insert": ["    server_tokens off;", "    client_max_body_size 20M;"]
}

Example 2: Add a new host entry after localhost

{
  "file_path": "/etc/hosts",
  "match_line": "127.0.0.1 localhost",
  "lines_to_insert": ["192.168.1.10 myserver.local"]
}
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the file to modify
match_lineYesExact line content to match
lines_to_insertYesLine(s) to insert after the match
use_sudoNoUse sudo for the operation
forceNoForce operation even if file can't be read (sudo only)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description must stand alone. It discloses whitespace trimming and mentions use_sudo and force behavior, but does not clarify what happens if the match line is not found or if multiple matches exist. The return dictionary is described, but error conditions are omitted.

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 well-structured with a purpose summary, parameter list, returns section, and examples. It is concise yet informative, though the repeating of parameter descriptions from the schema in the description body could be slightly trimmed. Overall, it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and high schema coverage, the description is largely complete. It covers parameters, return values, and provides practical examples. However, missing edge-case handling (e.g., match not found, file permissions) leaves a small gap.

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?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the lines_to_insert parameter's array usage (multiple lines, single line, empty line) and provides concrete examples that illustrate parameter meaning beyond the schema's brief 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 tool's action ('Insert lines after a unique line match') and identifies the resource ('a file'). It specifies the key constraint of ignoring leading/trailing whitespace and distinguishes from sibling tools like ssh_file_delete_line_by_content or ssh_file_replace_line by the unique insert-after-match behavior.

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 (e.g., ssh_file_replace_line, ssh_file_delete_line_by_content). The description implies usage through its parameter details and examples but does not state conditions like 'use this when you need to add lines after a specific line match, not replace or delete'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_moveB

Move or rename a file or directory.

Returns: Dictionary with operation status

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesSource file or directory path
destinationYesDestination path
overwriteNoOverwrite destination if it exists
use_sudoNoUse sudo for the operation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only states the operation and return type, omitting details like error handling, behavior when source is missing, or implications of overwrite and sudo flags. This is insufficient for a mutation tool.

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 extremely concise with two sentences. The first sentence front-loads the core action. Every word earns its place; no 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 having 4 parameters and an output schema, the description fails to explain crucial context like return structure, behavior of overwrite, or when to use sudo. It is too minimal for the tool's complexity.

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 100%, so the baseline is 3. The description adds no new semantics beyond what the schema already provides (e.g., 'source path', 'destination path'). It does not clarify edge cases or format expectations.

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 'Move or rename a file or directory,' which is a specific verb and resource. This distinguishes it from sibling tools like ssh_file_copy or ssh_dir_copy, as move/rename is a distinct operation.

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 (e.g., copy vs. move). There is no mention of when not to use it or prerequisites, leaving the agent without decision context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_readA

Read file contents directly via SFTP.

This tool reads raw bytes from the remote file using SFTP and decodes them on the client side. Unlike command-based file reading (cat, Get-Content), SFTP completely bypasses shell and console encoding issues.

Why use this instead of ssh_cmd_run with cat/Get-Content?

  • Works correctly with Unicode on ALL platforms including Windows

  • Bypasses Windows PowerShell's OEM code page encoding problem

  • More efficient for binary-safe file transfer

  • No shell escaping issues with special characters in content

Returns: Dictionary with: - success: True if file was read successfully - content: The file contents as a string - size: Number of bytes read - encoding: The encoding used to decode the content

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the file to read
encodingNoCharacter encoding (default: utf-8)utf-8
max_sizeNoMaximum file size in bytes (default: 10MB, 0 for no limit)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that the tool reads raw bytes via SFTP and decodes them on the client side, returns a dictionary with success, content, size, and encoding, and imposes a default max_size limit. It could further warn about potential decoding failures for binary files, but overall it is sufficiently transparent.

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 efficiently structured: a concise one-line summary, followed by detailed explanation, a clear comparison section, and a list of return fields. Every sentence serves a purpose, and the information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/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 and an output schema, the description is highly complete. It explains the underlying mechanism (SFTP vs command), covers parameter defaults, and lists the return value structure. The output schema exists, but the description adds clarity on the meaning of each field. No critical gaps.

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?

Schema description coverage is 100%, so baseline is 3. The description adds value by explaining the role of encoding (decoding bytes on client side) and noting that max_size=0 means no limit. It also contextualizes why encoding matters in the usage guidelines section, providing semantics beyond the 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 'Read file contents directly via SFTP', specifying both the action (read) and the resource (file via SFTP). It explicitly distinguishes itself from ssh_cmd_run with cat/Get-Content, making sibling differentiation clear.

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 includes a dedicated 'Why use this instead of ssh_cmd_run...' section that lists specific benefits (Unicode support, bypasses encoding issues, binary-safe, no shell escaping). This provides clear guidance on when to prefer this tool over a sibling. It does not explicitly state when not to use it, but the positive use cases are well-articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_replace_lineA

Replace a unique line in a file with a new line.

PARAMETERS:

  • file_path: Path to the file to modify

  • match_line: Exact line content to match and replace (whitespace-trimmed)

  • new_line: New line to insert in place of the match

  • use_sudo: Use sudo for the operation (default: false)

  • force: Force operation even if file can't be read (sudo only) (default: false)

RETURNS: A dictionary with operation status including:

  • success: Boolean indicating if operation succeeded

  • file_path: Path to the modified file

EXAMPLES: Example 1: Replace a commented line with an active configuration

{
  "file_path": "/etc/ssh/sshd_config",
  "match_line": "#ClientAliveInterval 0",
  "new_line": "ClientAliveInterval 300"
}

Note: To delete a line entirely, use the dedicated ssh_file_delete_line_by_content tool instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the file to modify
match_lineYesExact line content to match and replace
new_lineYesNew line to insert in place of the match
use_sudoNoUse sudo for the operation
forceNoForce operation even if file can't be read (sudo only)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description carries full burden. Covers use_sudo and force behaviors, and returns dictionary. Missing details on what happens if line not found or multiple matches, and whether operation is destructive without backup.

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?

Well-structured with sections, clear and mostly concise. Some redundancy in parameter descriptions repeating schema, but overall efficient and front-loaded.

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?

Covers main functionality, parameters, returns, and an example. Output schema reduces burden, but missing error cases and edge behaviors like file not found or non-unique lines.

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?

Input schema has 100% coverage, but description adds value by clarifying 'whitespace-trimmed' for match_line, providing defaults, and including an example. Adds meaning beyond 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 it replaces a unique line in a file, specifying the verb and resource. It differentiates from siblings like ssh_file_delete_line_by_content and implicitly from ssh_file_replace_line_multi by emphasizing 'unique line'.

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?

Provides explicit guidance to use a sibling tool for deletion. Mentions whitespace trimming for match_line. However, lacks explicit context on when to use this tool vs multi-line replacement or prerequisites like file existence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_replace_line_multiA

Replace a unique line in a file with multiple new lines.

PARAMETERS:

  • file_path: Path to the file to modify

  • match_line: Exact line content to match and replace (whitespace-trimmed)

  • new_lines: List of new lines to insert in place of the match

    • To replace with multiple lines: use ["first line", "second line", ...]

    • To delete the line entirely: use [] (empty list)

    • To replace with an empty line: use [""]

  • use_sudo: Use sudo for the operation (default: false)

  • force: Force operation even if file can't be read (sudo only) (default: false)

RETURNS: A dictionary with operation status including:

  • success: Boolean indicating if operation succeeded

  • file_path: Path to the modified file

EXAMPLES: Example 1: Replace a line with multiple lines

{
  "file_path": "/etc/hosts",
  "match_line": "127.0.0.1 localhost",
  "new_lines": ["127.0.0.1 localhost", "127.0.0.1 myhost.local"]
}

Example 2: Delete a line entirely

{
  "file_path": "/etc/nginx/nginx.conf",
  "match_line": "# server_tokens off;",
  "new_lines": []
}

Example 3: Replace with an empty line

{
  "file_path": "/etc/ssh/sshd_config",
  "match_line": "PermitRootLogin yes",
  "new_lines": [""]
}
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the file to modify
match_lineYesExact line content to match and replace
new_linesYesList of new lines to insert in place of the match
use_sudoNoUse sudo for the operation
forceNoForce operation even if file can't be read (sudo only)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden. It discloses the operation's effect (modifying file by matching exact line, replacing with list), explains sudo/force options, and returns success status. No contradictions noted.

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 well-organized with sections for purpose, parameters, returns, and examples. It is slightly lengthy but every part is informative and relevant. No unnecessary content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple output schema (success, file_path), the description covers essential behavior including parameter variants and return format. It does not mention error handling, but for this tool's complexity it is adequate.

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?

Schema coverage is 100%, but the description adds value beyond schema by explaining special cases: deleting with empty list, inserting blank line, and providing detailed examples. This enriches parameter understanding.

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 uses a specific verb 'replace' and clearly states the resource 'a unique line in a file' with the outcome 'multiple new lines'. It distinguishes itself from siblings like ssh_file_replace_line (for single line) and ssh_file_delete_line_by_content.

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 explicitly state when to use this tool versus alternatives. While examples imply usage for multi-line replacement, no direct comparison or exclusion criteria are provided. Siblings like ssh_file_replace_line serve a similar but different purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_statA

Get status information about a file or directory.

Returns: Dictionary with file/directory metadata. Includes 'exists': True/False. If exists, includes 'type': ('file', 'directory', 'symlink', 'unknown'), 'mode' (octal string), 'uid', 'gid', 'size', 'atime', 'mtime'.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile or directory path to get information about

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/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 transparently discloses the return dictionary structure, including fields like 'exists', 'type', 'mode', etc. It does not mention side effects or permissions, but the behavior (read-only stat) is implied and consistent.

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: one for purpose and one listing return fields. It is concise, front-loaded, and contains no extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, no enums) and presence of an output schema, the description adequately covers what the tool does and what it returns. It lacks error or permission context, but that is minor for a stat 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?

The schema already provides a description for the single parameter 'path' ('File or directory path to get information about'). The description adds no new semantic information beyond what the schema offers, so baseline score of 3 applies.

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: 'Get status information about a file or directory.' It specifies the verb 'Get' and the resource 'status information', differentiating it from siblings that read content (e.g., ssh_file_read) or list directories (e.g., ssh_dir_list_advanced).

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 explicitly state when to use this tool versus alternatives like ssh_file_read or ssh_dir_list_advanced. It implies usage for file metadata, but lacks guidance on exclusions or comparative context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_file_transferC

Transfer files between local and remote systems.

Returns: Dictionary containing transfer status and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
directionYesTransfer direction
local_pathYesLocal file path
remote_pathYesRemote file path
use_sudoNoUse sudo for transfer

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description bears the full burden. It only mentions a return dictionary with 'transfer status and metadata', but omits critical behaviors like overwrite policy, error handling, or permission requirements. This is insufficient for a potentially destructive operation.

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 extremely concise with two sentences, effectively stating purpose and return type. However, it could be slightly improved by front-loading the bidirectional nature (upload/download) for quicker comprehension.

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?

Despite having an output schema (not shown), the description is minimal. For a tool with many siblings, more context about its specific role (single file, bidirectional) and constraints (e.g., requires active connection) would benefit the agent. Current completeness is adequate but leaves 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?

The input schema has 100% description coverage, so the schema already documents all parameters. The description adds no additional insight beyond 'Transfer files', which does not enhance parameter understanding. Baseline score of 3 is appropriate.

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's action ('Transfer files') and resources ('local and remote systems'). It distinguishes from directory-level transfers implicitly, but does not explicitly differentiate from similar siblings like ssh_dir_transfer or ssh_file_copy.

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 (e.g., ssh_dir_transfer for directories, ssh_file_copy for remote-to-remote). The agent is left 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.

ssh_file_writeA

Create a new file or overwrite/append to an existing file with specified content. Handles special characters and multi-line content properly.

Returns: Dictionary with operation status and details

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the file to write to
contentYesContent to write to the file
appendNoWhether to append to the file instead of overwriting
use_sudoNoUse sudo for the operation
modeNoFile permissions to set after writing (octal, e.g. 0o644)
create_dirsNoCreate parent directories if they don't exist

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions it handles special characters and multi-line content, and returns a dictionary. However, it does not explicitly highlight the destructive nature of overwriting by default, nor does it describe error conditions, permission requirements, or side effects like changing file mode or creating directories. With no annotations, the description carries the full burden and is only partially transparent.

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 very concise: two sentences for the main function and one for the return value. No unnecessary words or repetition; it is efficiently front-loaded.

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 the tool's complexity (6 parameters, output schema, no annotations), the description is minimally adequate. It covers the primary function but lacks details on return value structure, error handling, and contextual notes about directory creation or sudo behavior. The output schema is not visible, so some completeness is lost.

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 100%, so parameters are already well-documented in the schema. The tool description adds no additional meaning beyond summarizing the operation. Baseline 3 is appropriate.

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 creates or modifies files with specified content, specifying overwrite and append modes. It distinguishes itself from sibling tools like ssh_file_read, ssh_file_copy, etc., which deal with reading or copying rather than writing.

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 (e.g., connection must be established) or conditions like when to use append instead of overwrite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_host_disconnectA

Disconnect the current SSH connection if one exists.

Use this when you want to explicitly close the current SSH connection before connecting to a different host or when you're done with SSH operations.

Returns: Dictionary with disconnection status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description discloses the conditional behavior ('if one exists') and return type. For a simple disconnect, this is sufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two sentences plus a return type line. Every word adds value, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, simple action, and existing output schema, the description provides all necessary context. Usage and behavior are fully covered.

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?

No parameters exist, so baseline 4 applies. Description doesn't need to add parameter information beyond the empty 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 ('Disconnect') and resource ('current SSH connection'). It differentiates from sibling tools like ssh_conn_connect and ssh_conn_is_connected by focusing on termination.

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?

Explicit guidance on when to use: before connecting to a different host or when done with SSH operations. No explicit alternatives but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_host_listB

List all configured SSH hosts with their aliases and descriptions.

Returns: Dictionary with: - hosts: List of host information dictionaries, each containing: - key: The 'user@host' key - alias: Optional short name for the host - description: Optional description of the host

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided and the description only states 'list', implying a read operation but does not disclose safety, side effects, or requirements. With zero annotations, the description should explicitly note read-only behavior.

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?

Description is concise, front-loading the purpose in one sentence followed by a clear list of return fields. Efficient but could be slightly more compact.

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?

Covers return structure but lacks usage context and behavioral details. For a simple list tool with output schema, it is minimally adequate but leaves gaps in guidance and transparency.

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?

Schema has 0 parameters, so baseline is 4. The description adds value by detailing the return structure (hosts with key, alias, description) beyond the 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 explicitly states 'List all configured SSH hosts' using a specific verb and resource, distinguishing it from sibling tools like ssh_conn_host_info which presumably provides detailed host information.

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_conn_host_info or ssh_host_remove; 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.

ssh_host_removeB

Remove a host configuration from the host configuration TOML file.

Returns: Dictionary with operation status

ParametersJSON Schema
NameRequiredDescriptionDefault
host_nameYesThe 'user@hostname' identifier of the host to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. Only states removal and return type (dict with status), but lacks details on side effects, error handling, or whether removal requires host to exist or be disconnected.

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?

Two sentences, front-loaded with action, concise with no superfluous information.

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?

Adequate for a simple removal tool but lacks details on failure cases (e.g., host not found) and preconditions. Output schema is mentioned but not detailed; given existence of output schema, description could be considered complete enough for basic 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 already provides description for host_name ('user@hostname' identifier). Description adds no extra meaning; baseline 3 for 100% 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?

Description clearly states action: removing a host configuration from the TOML file. It distinguishes from siblings like ssh_conn_add_host and ssh_host_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 vs alternatives (e.g., ssh_host_disconnect for disconnecting, ssh_host_list for viewing). No prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_task_killB

Terminate a background task by sending a signal to its PID.

If force=True and the process doesn't exit after wait_seconds, it will be forcibly killed with SIGKILL (signal 9).

Returns: Dictionary containing kill operation result

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYesProcess ID to terminate
signalNoSignal to send (15=TERM, 9=KILL)
use_sudoNoUse sudo for the kill operation
forceNoForce kill with SIGKILL if process doesn't exit
wait_secondsNoSeconds to wait before force kill

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the force kill mechanism and the role of wait_seconds, and notes that the return is a dictionary. However, it does not disclose error handling for nonexistent PIDs or permission issues, which would be valuable for safe execution.

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 relatively concise at 5 sentences and front-loads the main purpose. It could be slightly more structured, but it efficiently conveys the core behavior and return type without unnecessary details.

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 the tool's complexity (5 parameters), high schema coverage, and presence of an output schema, the description provides adequate coverage of the force kill behavior. However, it omits important contextual prerequisites, such as the need for an active SSH session, and does not explain error handling or edge cases, leaving gaps in completeness.

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?

The input schema has 100% description coverage, so the baseline is 3. The description adds minimal parameter-specific information beyond what is in the schema; it mentions force and wait_seconds in context but does not elaborate on how to choose signal values or the effect of use_sudo. Thus, no significant extra value is provided.

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 ('Terminate a background task by sending a signal to its PID'), identifying both the verb and the resource. However, it does not explicitly differentiate this tool from similar siblings like ssh_cmd_kill, which may also terminate processes, 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 (e.g., ssh_cmd_kill) or when not to use it. The description lacks context about prerequisites (e.g., an active SSH connection) and fails to set boundaries, making it difficult for the agent to decide between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_task_launchA

Launch a command in the background and return its PID.

Unlike ssh_run, this does not wait for the command to complete. Output is redirected to files or /dev/null, not captured in memory.

Returns: Dictionary containing task information including PID

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesCommand to execute in the background
use_sudoNoRun command with sudo
stdout_logNoPath to redirect stdout (default: /tmp/task-<pid>.log)
stderr_logNoPath to redirect stderr (default: same as stdout)
log_outputNoWhether to log output to files

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses background execution, non-waiting behavior, output redirection to files (not memory), and return of PID/task info. Does not discuss side effects (e.g., sudo password prompts) but core behavioral traits are transparent.

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: two sentences plus return note. Key purpose is front-loaded. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters all well-described in schema, and an output schema exists (context confirms true), the description need not detail return structure. Sibling tools are many but this description clearly differentiates the tool. No apparent gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds value: explains output is redirected to files (default paths given), log_output defaults to true, stderr_log defaults to stdout_log. Adds context beyond schema 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?

Description clearly states it launches a command in the background and returns PID. It distinguishes from ssh_run by noting it does not wait for completion. Verb+resource+key differentiator present.

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 contrasts with ssh_run ('Unlike ssh_run, this does not wait...'), guiding when to use this tool. Mentions output redirection to files, implying use cases where in-memory capture is not needed. No explicit when-not-to-use, but comparison with sibling is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssh_task_statusB

Check the status of a background task by PID.

Returns: Dictionary containing task status information

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYesProcess ID to check status for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must disclose behavioral traits. It states it returns a dictionary but does not mention safety (e.g., read-only nature), error handling for invalid PIDs, or any side effects. The return type is vaguely described as 'task status information' without details.

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 concise with three short sentences: one for purpose and two for return value. It is front-loaded with the key action and avoids extraneous detail, making it easy to parse quickly.

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 presence of an output schema (context indicates it exists) and no annotation richness, the description is insufficient. It does not explain possible status values, error scenarios, or differentiate from ssh_cmd_check_status. The return value description is too vague for an agent to interpret reliably.

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?

The input schema already describes the pid parameter as 'Process ID to check status for' (100% coverage). The description adds no additional semantic value beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks status of a background task by PID. It uses a specific verb ('Check') and resource ('background task by PID'), making the purpose unambiguous. Siblings like ssh_task_launch and ssh_task_kill confirm the distinct functionality.

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 siblings like ssh_cmd_check_status or ssh_task_kill. The description provides no usage context, conditions, or exclusions, leaving the agent to infer based on the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 44 tool updatesv1.3.0
    • First observedlist_tools
    • First observedssh_archive_create
    • First observedssh_archive_extract
    • First observedssh_cmd_check_status
    • First observedssh_cmd_clear_history
    • First observedssh_cmd_history
    • First observedssh_cmd_kill
    • First observedssh_cmd_output
    • First observedssh_cmd_run
    • First observedssh_conn_add_host
    • First observedssh_conn_connect
    • First observedssh_conn_host_info
    • First observedssh_conn_is_connected
    • First observedssh_conn_status
    • First observedssh_conn_verify_sudo
    • First observedssh_dir_batch_delete_files
    • First observedssh_dir_calc_size
    • First observedssh_dir_copy
    • First observedssh_dir_delete
    • First observedssh_dir_list_advanced
    • First observedssh_dir_list_files_basic
    • First observedssh_dir_mkdir
    • First observedssh_dir_remove
    • First observedssh_dir_search_files_content
    • First observedssh_dir_search_glob
    • First observedssh_dir_transfer
    • First observedssh_file_copy
    • First observedssh_file_delete_line_by_content
    • First observedssh_file_find_lines_with_pattern
    • First observedssh_file_get_context_around_line
    • First observedssh_file_insert_lines_after_match
    • First observedssh_file_move
    • First observedssh_file_read
    • First observedssh_file_replace_line
    • First observedssh_file_replace_line_multi
    • First observedssh_file_stat
    • First observedssh_file_transfer
    • First observedssh_file_write
    • First observedssh_host_disconnect
    • First observedssh_host_list
    • First observedssh_host_remove
    • First observedssh_task_kill
    • First observedssh_task_launch
    • First observedssh_task_status

TDQS

A3.7/5.0
Disambiguation5/5

Tools are well-organized by category prefixes (ssh_conn_, ssh_cmd_, ssh_file_, etc.) with clear, distinct purposes within each group. Even potentially overlapping operations like command execution versus background tasks are clearly differentiated by foreground vs background semantics.

Naming Consistency5/5

All tool names follow a consistent pattern: ssh_{category}_{action}[_{object}] using snake_case. Naming is uniform across all categories, with no mixing of conventions or ambiguous verbs.

Tool Count4/5

44 tools is on the higher side, but the domain of SSH remote management is broad, covering connections, commands, files, directories, archives, tasks, and host configuration. Each tool serves a specific need, so the count is justified and not bloated.

Completeness4/5

The tool set covers most core SSH operations: connection management, command execution (including history and kill), file CRUD and search, directory operations, archives, and background tasks. Minor gaps exist, such as file permission changes or symlink management, but overall coverage is very strong.

Maintenance

ActivitySlowing
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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to securely execute commands, transfer files, and manage port forwarding on remote servers via SSH.
    168
    36
    Apache 2.0

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/cygnussystems/cygnus-ssh-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server